We hebben al lang geleden besloten dat we eindeloze aanpassingsmogelijkheden voor personages in pixelart wilden

Veel pixelart-games die ons voorgingen, boden al mogelijkheden voor personageaanpassing, maar wij vonden dat geen enkele game de grenzen van animatie en personageaanpassing op dezelfde manier had verlegd als 3D-games dat de afgelopen tien jaar hebben gedaan. De mogelijkheden voor personageaanpassing in andere games zijn enorm, vooral dankzij de steeds krachtigere game-engines en tools voor ontwerpers.
Het probleem is dat je bij 2D-pixelart niet zomaar meshes kunt verwisselen zoals je dat in 3D zou doen, en ze vervolgens op hetzelfde rigged object kunt toepassen. Elk frame wordt met de hand getekend. Dus moesten we uitzoeken hoe we:
- Maak onze eigen animaties voor rennen, stil staan en aanvallen van het skelet.
- Bedenk hoe we voor elk tandwiel elk frame met de hand kunnen tekenen zodat het aansluit op het skelet, zodat we honderden tandwielstellen kunnen tekenen en ze toch uniform houden.
- Zorg ervoor dat alle cosmetische elementen van de uitrusting, ongeacht de combinatie, correct over elkaar heen liggen.
- Zorg ervoor dat alle cosmeticaproducten in een palet passen.
- Zorg ervoor dat alle versnellingssets hetzelfde aantal versnellingen hebben voor elke vrijloopstand, of voor lopen/aanvallen.
Dat is nogal een klus.
We wilden dat spelers echte cosmetische aanpassingsmogelijkheden zouden hebben, zodat je kunt dragen wat je wilt zonder je zorgen te maken over statistieken. In een 2D-spel met pixelart is dat een hoop werk. Maar we hebben vier en een half jaar geleden besloten dat dit een absolute must was. Als je een MMO bouwt, moeten spelers er anders uitzien dan elkaar. Ze willen zichzelf uitdrukken via wat ze dragen. Dus moeten we slim zijn en uitzoeken hoe we uitrustingssets kunnen maken die de kwaliteit van de cosmetica evenaren die we zien in onze favoriete games.
Hoe we besloten hebben dit op te lossen
Laagjes
Allereerst hadden we een gelaagd systeem nodig. We zijn begonnen met het volgende
- Hoofd
- Borst
- Benen
- Rugpanelen
- Wapens, en uiteindelijk verschillende soorten wapens.
Elk onderdeel wordt weergegeven als een afzonderlijke laag die samen het personage vormt.
We zijn begonnen met de basisanimatie: de loopcyclus. We hebben er weken aan gewerkt, want zodra we die eenmaal hadden vastgelegd, konden we die nooit meer aanpassen. Elk onderdeel dat we daarna zouden maken, moest aansluiten bij dat skelet, dat aantal frames en die verhoudingen. Als de basis niet klopt, moet je alles daarna opnieuw opbouwen.

Toen de basis eenmaal vaststond, hebben we een basissysteem gebouwd waarop nieuwe uitrustingssets konden worden toegevoegd. Vervolgens hebben we een laag-engine geschreven om dit alles te beheren. De volgorde van de lagen verandert afhankelijk van de richting waarin je personage kijkt en welk wapen hij of zij bij zich heeft. Een zwaard vereist bijvoorbeeld een ander borststuk dan een zwaar zwaard.

Toen besloten we dat we meer soorten wapens wilden…


We besloten dat we meerdere wapens wilden: zwaarden, zware zwaarden, zware wapens en zelfs staven. Elk wapen heeft een eigen animatiestijl voor het borststuk. Voor de staf werkten de rust- en renanimaties van de zware wapens perfect, terwijl de snelle, zwaaiende beweging van een licht wapen geschikt was voor de aanvallen. Dankzij ons systeem konden we geschikte bestaande animaties selecteren om deze in combinatie met nieuwe animaties te gebruiken.
De combinatorische complexiteit was de grootste uitdaging. Elk wapentype vereist een bijbehorende animatie voor het borststuk. Elke kijkrichting kan de weergavevolgorde van de lagen beïnvloeden. Vermenigvuldig dat met alle uitrustingsslots, alle wapentypes en alle richtingen, en je krijgt een systeem dat duizenden combinaties moet verwerken zonder dat er iets er vreemd uitziet.
Landbouw? Nu moeten we even gaan zitten
Toen we verder gingen dan alleen rennen, begonnen we te werken aan animaties voor drinken, landbouw en verzamelen. We ontdekten dat we bestaande frames uit de bestaande basisanimaties konden herschikken om deze nieuwe acties te creëren. Dat was niet gepland. Het kwam gewoon uit het systeem voort terwijl we aan het experimenteren waren. Hoe meer acties we toevoegden, hoe nuttiger dit bleek te zijn.
Hoe we het zitten in het spel hebben geïntegreerd door slechts een paar extra frames te gebruiken

Toen we verder gingen dan alleen rennen, begonnen we te werken aan animaties voor drinken, landbouw en verzamelen. We ontdekten dat we bestaande frames uit de bestaande basisanimaties konden herschikken om deze nieuwe acties te creëren. Dat was niet gepland. Het kwam gewoon uit het systeem voort terwijl we aan het experimenteren waren. Hoe meer acties we toevoegden, hoe nuttiger dit bleek te zijn. Het systeem dat we hadden gebouwd, kon zichzelf voortaan verder uitbouwen.

Toen we de zittende houding toevoegden, gingen we ervan uit dat er een compleet nieuwe reeks animaties voor nodig zou zijn. Het bleek dat we alleen de beenelementen hoefden aan te passen met een paar extra frames. Het kostte wat tijd, maar het was heel goed te doen. Dat is inmiddels het patroon geworden. Wat eruitziet als een enorme klus, blijkt uiteindelijk meestal een beperkte aanpassing aan één of twee laag-slots te zijn. Het systeem is flexibeler gebleken dan we hadden verwacht, en we blijven nieuwe manieren ontdekken om het te gebruiken.
Waar dat ons vandaag brengt

Spelers kunnen uitrusting uitrusten in de slots voor hoofd, borst, benen, rug en wapens. Elk uitrustingsstuk wordt weergegeven als een eigen animatielaag. Als je van wapentype wisselt, past het borststuk zich automatisch aan. Transmog scheidt statistieken van het uiterlijk, zodat je eruit kunt zien zoals jij dat wilt. Het systeem houdt rekening met alle kijkrichtingen, waarbij de volgorde van de lagen in realtime wordt aangepast. Het werkt bij animaties voor rennen, zitten, drinken, grinden en verzamelen, die allemaal zijn gebaseerd op diezelfde basisloop die we jaren geleden hebben vastgelegd.
Wat nu?

We zijn nog steeds bezig met het uitbreiden van het animatiesysteem. Elke nieuwe actie die we toevoegen, laat ons zien hoe ver het skelet kan gaan. We willen nog meer doen, maar de basis heeft zich bewezen en is opgewassen tegen wat we van plan zijn.