Contentcreatie kan een van de meest tijdrovende onderdelen van game-ontwikkeling zijn. Daarom kan het bouwen van een leveleditor zo handig zijn. In dit artikel deel ik mijn tips voor het maken van een efficiënte niveau-editor en leg ik uit hoe het gebruik van dit soort hulpprogramma mijn werkstroom heeft versneld.
Dit is het scenario: je hebt maanden aan je spel gewerkt en het begint eindelijk bij elkaar te komen. De codebase is sterk en je bent op het punt gekomen dat je levels voor je spel kunt maken.
Er is maar één probleem: je niveaubestand ziet er zo uit:
Object Structuur rotsen4 Positie 78 540 Rotatie 0 Schaal 1 1 Kleur 255 255 255 255 ScrollSpeed 1 1 CustomProperties End-end Object Textuur grass1 Positie 60 450 Rotatie 0 Schaal 1 1 Kleur 255 255 255 255 ScrollSpeed 1 1 CustomProperties End-End Object Textuur grass2 Positie 61 459 Rotatie 0 Schaal 1 1 Kleur 255 255 255 255 ScrollSpeed 1 1 CustomProperties End End
Yuck. Stel je voor dat je probeert hele levels als deze te maken. Het proces zou ongelooflijk traag en tijdrovend zijn - om nog te zwijgen van frustrerend. Het probleem is dat het heel moeilijk is om iets te bewerken dat bedoeld is gezien. Wat kan hier dan aan gedaan worden? Het antwoord ligt verrassend genoeg in de context van het probleem zelf.
Niveaus zijn een vorm van zichtbaar communicatie. Spelers kijken niet naar tekstbestanden, ze kijken naar afbeeldingen, sprites, animaties, enzovoort. Denk aan een schilder: Picasso maakte zijn schilderijen niet door RGB-waarden per pixel in een computer in te voegen. Hij maakte zijn schilderijen door ze te verven. Om dezelfde logica toe te passen op niveauontwerp, moeten we een tool maken waarmee we dergelijke niveaus visueel kunnen bewerken: een niveau-editor.
Een van de belangrijkste voordelen van het hebben van een niveau-editor is het gemak van WYSIWYG ("Wat je ziet is wat je krijgt" - wat je in de editor ziet, is wat je in het spel krijgt). Zoals hierboven beschreven, is het veel eenvoudiger om te ontwerpen wanneer je kunt zien wat je aan het bewerken bent.
Een ander voordeel is dat het een snellere en efficiëntere ontwerp-iteratie mogelijk maakt. Het proces van niveau-ontwerp kan worden opgesplitst in een eenvoudige stroomschema zoals dit:
Het is cruciaal dat u naadloos kunt overschakelen tussen de ontwerp- en testfasen, omdat dit snellere iteraties en kortere totale uitgaven mogelijk maakt..
De laatste reden voor het hebben van een level-editor is dat het de functie van level-ontwerp veel minder technisch maakt. Dit is met name van belang bij het werken in een team: stel je voor dat je het bovenstaande tekstbestand naar de artiesten stuurt en hen vertelt naar ontwerpniveaus in dat formaat!
Goede communicatie - zowel verbaal als visueel - is essentieel binnen een team en een niveau-editor kan het leven van niet-technische ontwerpers een stuk eenvoudiger maken, evenals een mogelijke communicatiebarrière tussen hen en de ontwikkelaars verwijderen.
Kort samengevat zijn de drie belangrijkste redenen voor het hebben van een niveau-editor dat ze u toestaan om:
Je vraagt je misschien waarom je je eigen editor zou willen maken als er al zoveel gratis beschikbaar zijn om te gebruiken - en ik ga niet liegen, er zijn een paar geweldige editors.
Hier zijn een paar die ik ken voor 2D-spellen:
Er zijn voordelen en nadelen aan het gebruik van een generieke, bestaande editor. Het is waarschijnlijk robuust en goed onderhouden, maar het weet niets van je spel, dus je moet misschien slimme trucs doen om ervoor te zorgen dat het correct met je spel omgaat. Dit graaft in iteratietijd en kan resulteren in veel meer onnodige tijd besteed aan het maken van content.
Je moet ook leren hoe je het moet gebruiken, terwijl als je je eigen editor gebruikt, je er natuurlijk alles al van weet.
Hier is mijn persoonlijke lijst met voor- en nadelen voor elk type editor:
Pre-built:
Zelf gemaakt:
Het is aan jou, maar omwille van dit artikel ga ik me concentreren op het ontwerpen van je eigen ontwerp.
Vervolgens deel ik mijn beste tips voor het maken van een krachtige en effectieve niveau-editor.
Je zou in de waan kunnen brengen dat je meer code moet schrijven voor een level-editor. Maar waarom zou u dit proces niet zo pijnloos mogelijk maken??
Als je op het punt bent dat je een level-editor nodig hebt, heb je waarschijnlijk al een beetje structuur aan je game-architectuur (klassen, interfaces, overerving, etc.). Gebruik deze code opnieuw! Als je al een hoop lessen hebt voor het tekenen en bijwerken van dingen voor de game, hoef je deze niet te herschrijven voor de editor. Met andere woorden, schrijf GEEN aparte engine voor de editor. Naast dat je game code kunt hergebruiken, zal dit je helpen om de kloof te verkleinen tussen hoe het level eruit ziet in je editor en hoe het eruit ziet in het spel..
Er zijn twee manieren om een leveleditor te implementeren: je kunt deze in de game hebben of bouwen als een externe app. Nogmaals, beide benaderingen hebben hun ups en downs.
De in-game editor zou in feite de kloof tussen ontwerpen en testen elimineren, maar het zou bijvoorbeeld veel meer GUI-werk vereisen. De externe editor zou GUI-bibliotheken kunnen gebruiken en robuuste functies hebben, maar de iteratie van de ontwerptest zou iets langer zijn, gezien het feit dat je constant zou moeten wisselen tussen twee verschillende apps.
Ik geef persoonlijk de voorkeur aan de eerste benadering, omdat ik denk dat deze het meest natuurlijk aanvoelt, en ik hou echt van het gemak van schakelen tussen ontwerpen en testen onmiddellijk.
Onthoud, deze editor is voor jou (of je level designer, als je in een team werkt). Het is niet nodig om het er mooi uit te laten zien. In feite is dat waarschijnlijk een verspilling van tijd, tenzij je van plan bent om de editor te verspreiden. Richt u in plaats daarvan liever zo snel mogelijk op een editor voor het functionele niveau, zodat u inhoud kunt maken. (Later, wanneer je game bijna voltooid is, kun je dingen zoals "verfraaien" van de editor overwegen.)
Dit lijkt misschien voor de hand liggend, maar snelkoppelingen zijn je vrienden. Zorg dat je een sleutel hebt voor elke actie die je denkt te doen. Ik meen het; dit zal je zoveel tijd besparen bij het ontwerpen. Als u bijvoorbeeld op 'C' drukt in de leveleditor van mijn spel, wordt een duplicaat van het momenteel geselecteerde object gemaakt. Het is eenvoudig, maar enorm nuttig en bespaart veel tijd.
Laat me je als voorbeeld de editor van mijn huidige in-ontwikkeling game Mori tonen. Dit is een tegel die ik heb geroteerd en geschaald:
Ik hoef alleen maar op 'C' en ... voila te drukken!
Dit is het mooie van het ontwerpen van je eigen editor: het kan alles doen wat je wilt.
Elke game is anders; voor sommige games is een uitgebreide scripts vereist, terwijl bij andere spellen sprake is van ingewikkelde AI-gedragingen. Al deze kunnen worden geïntegreerd in de editor. Stel je voor dat je een vijand met een bepaald gedrag kunt toevoegen door een paar toetsen in de editor in te drukken. Stel je nu voor dat je hetzelfde probeert te doen door code aan een scriptbestand toe te voegen. Dat lijkt efficiënter?
Er zijn bepaalde conventies waaraan we gewend zijn geraakt bij het gebruik van applicaties. Deze omvatten voorzieningen zoals ongedaan maken / opnieuw uitvoeren, kopiëren en plakken, waarschuwingsberichten, enzovoort. Als je goed plant, kun je al deze dingen zonder veel extra werk in je editor implementeren. Vertrouw me, je zult jezelf in de toekomst danken als je deze hebt.
Een andere functie die uw leven gemakkelijker kan maken, is het testen van niveaus zonder het bestand op schijf op te slaan. Dit maakt het ontwerptestproces zoveel eenvoudiger. Mijn spel maakt gebruik van een game state managementsysteem, dus ik heb twee afzonderlijke "schermen" voor het spelen en bewerken van spellen.
Vanuit het spel raakte ik een toets om de editor in te voeren. De editor krijgt het niveauobject doorgegeven, dat vervolgens vanuit de editor kan worden bewerkt. Vanaf daar heb ik twee opties: ik kan het niveau opslaan op schijf, of ik kan een bepaalde sleutel raken en het object op het niveau passeren terug naar het gameplay-scherm. Hierdoor kan ik het niveau meteen testen zonder de angst mijn oude wijzigingen te overschrijven.
Kortom, een level-editor is een waardevolle investering in het spelontwikkelingsproces. Het zorgt voor het visuele ontwerp van niveaus, snellere iteratietijden en een lagere technische vaardigheidseis voor ontwerpers.
Ik hoop dat je dit artikel interessant en nuttig hebt gevonden. Bedankt dat je langs kwam!