Of het nu gaat om een eenvoudige game-invoer of een langlopend passieproject, je game moet levend in de handen van spelers voelen. In deze tutorial deel ik ideeën om je spel tot leven te brengen en laat ik zien wat er gebeurt als je al die ideeën toepast op een eenvoudige gamedemo.
Klik op de demo om hem focus te geven en gebruik vervolgens de pijltoetsen om te verplaatsen, X schieten, C springen en N en P om te schakelen tussen verschillende iteraties van het spel.
Dit is in wezen een videosamenvatting van de demo en de tutorial. Hieronder zijn meer details!
Deze tutorial begeleidt je bij het maken van een heel eenvoudig spel, waarin het denkproces achter de toevoegingen en wijzigingen in 10 iteraties wordt weergegeven om de ervaring tot leven te brengen.
Wat bedoel ik precies als ik het heb over het tot leven brengen van je spel? Dit is een van die game-ontwerpfilosofieën die sterk varieert in de industrie, maar ik definieer persoonlijk het spelleven als de combinatie van controle, feedback, variatie en duurzaamheid. Het spelleven gaat niet alleen over complexe AI en diepe, personage-gedreven verhalen. Het gaat erom hoe het spel reageert op jouw input en hoe het specifieke feedback levert om je zintuigen en reflexen te stimuleren.
Voor dit voorbeeld heb ik besloten om te gaan met een standaard 2D sidescrolling platformer-shooter. Als u een turn-based RPG ontwikkelt, zijn de specifieke details niet van toepassing op uw project. Maar dat is niet waar het om gaat. Het belang van dit artikel ligt in waarom bepaalde beslissingen worden genomen, niet de technische implementaties van elke iteratie.
Elke variant van het spel komt overeen met een specifieke sectie hieronder. Je kunt meegaan in de meegeleverde game-demo door tussen de verschillende iteraties te schakelen. Dit zal illustreren hoe een spel in de loop van de tijd tot leven komt door eenvoudige, incrementele veranderingen.
Dames en heren, ik presenteer u onze held: Skull Baby. Onze held is opgesloten in een eeuwige ruzie tegen de kwaadaardige Slug Boogers, een intergalactische dreiging die vastbesloten is het gekende universum over te nemen. Met de vertrouwde Booger Buster 5000 van Skull Baby en een relatief gemiddeld springvermogen, is het aan jou om het heelal te redden!
Daarmee hebben we ons ongelooflijk eenvoudige en cliché-game-idee. Onze kernmechanismen omvatten linker- en rechterspeelsterbeweging, linker en rechter vijandbeweging, een eenvoudige sprong en een halfautomatisch geweer dat een kogel schiet die horizontaal beweegt. Als de kogel botst met de vijand, wordt de vijand vernietigd. Omwille van deze demo, en voor testdoeleinden, respawelt de vijand nadat hij is vernietigd. We gebruiken een botsysteem om de speler en de vijand in het speelveld opgesloten te houden, en de vijand begint in tegenovergestelde richting te bewegen na een botsing met een muur.
Voor dit voorbeeld zal ik geen win / verlies-conditie, speler-gezondheid of zelfs een botsing tussen speler en vijand toevoegen. Om dit soort spel op dat punt af te wegen, zou een volledig apart artikel nodig zijn. Spelbalans is een cruciaal element van design, maar het varieert zo enorm van genres dat het een afleiding van het hoofdidee zou zijn. En vergeet niet, je speelt geen voltooid spel in de demo, je kijkt naar het besluitvormingsproces van een paar geselecteerde details.
Dus onze game werkt, maar het is een afschuwelijk saaie ervaring. Laten we beginnen om dit spel tot leven te brengen!
Het is zo'n voor de hand liggende toevoeging, maar kijk eens hoeveel leven er aan het spel is toegevoegd met een paar eenvoudige animaties.
Voor de speler heb ik animaties toegevoegd voor inactief, hardlopen en springen. Voor de vijand heb ik een loopcyclus toegevoegd. Met namen als Skull Baby en Slug Booger is het logisch om een luchtige benadering van animatie aan te nemen. Skull Baby stuitert en zwaait rond met een squishy middensectie, terwijl de Slug Booger samen kruipt met wiggly antennes en googly eyes. Het is belangrijk om consistentie te behouden met de toon van uw illustraties, zodat entiteiten in uw gamewereld zich bij elkaar horen.
Hier zijn mijn game-ontwerp filosofieën iets anders dan andere. Ik geef er de voorkeur aan om mijn kunstwerk te maken en te polijsten terwijl ik het basisprototype ontwikkel. Sommige ontwerpers gebruiken "programmeur-kunst" het liefst zo lang mogelijk terwijl ze de basis van een spel bouwen. Hoewel deze animaties niet helemaal definitief zijn, zijn ze dat wel heel dichtbij naar wat ik zou gebruiken in het eindproduct. Ik doe dit om twee belangrijke redenen:
Ik gebruik deze iteratie om een punt te bewijzen, en niet noodzakelijkerwijs als een voorbeeld van wat ik zou doen tijdens het maken van een spel. Door het implementeren van ongelooflijk eenvoudige (en aantoonbaar slechte) geluidseffecten in deze vroege ontwikkeling, zal de waarde van goede geluidseffecten nog duidelijker worden in een latere iteratie.
Ik heb drie geluiden toegevoegd: schieten, springen en kogelbotsing / vijandelijke dood. Door deze geluiden tijdens de volgende herhalingen te herhalen, zult u een van de belangrijkste nog vaak over het hoofd geziene aspecten van gameontwerp beter begrijpen: variatie door randomisatie.
Net als bij het toevoegen van animaties, voegt het toevoegen van geluidseffecten toe, dit vroege ontwikkelingsproces geeft je voldoende tijd om te bepalen of je je bezittingen leuk vindt of niet. Veel ontwikkelaars voegen geluidseffecten toe in de laatste stappen van game-ontwikkeling. Dit kan gevaarlijk zijn, omdat het opnemen van geluid na uren en uren stille gametests uw tevredenheid over de kwaliteit van de items kunstmatig kan verhogen. Vroege geluiden toevoegen zorgt er ook voor dat je audio-triggers op hun plaats zijn voordat je te veel lagen ingewikkelde code toevoegt die mogelijk moeten worden herschreven om de audio goed te laten werken.
Nogmaals, dit is geen erg belangrijke iteratie in dit ontwikkelingsstadium, maar ik was het beu om naar de saaie zwarte blokken te kijken die werden gebruikt om de vloer en muren te representeren.
Dit is puur een cosmetische wijziging van het spel, omdat we nog steeds de reeds bestaande functionaliteit van de zwarte blokken gebruiken. Deze tegels toevoegen niets naar de gameplay-ervaring, maar toch voelt het spel op de een of andere manier anders aan. In plaats van rechtstreeks op een 2D-blok te staan, is het perspectief enigszins verschoven zodat u zowel het boven- als zijvlak van het blok kunt zien.
De collisiecode is hetzelfde, maar nu is de basis aanwezig om in de toekomst lagen met diepte te creëren. Ik gebruik dit als een manier om een concept te bewijzen dat ik in meer detail in een toekomstige iteratie zal uitdiepen: schijnbaar kleine cosmetische veranderingen kunnen het gevoel van een game sterk beïnvloeden.
Dit is waar dingen interessant worden. In deze iteratie heb ik een van de meest gebruikte platformmechanieken aller tijden toegevoegd: de dubbele sprong.
Of het nu beschikbaar is vanaf het begin of als een upgrade die je verdient in de loop van de tijd, de dubbele sprong is het perfecte voorbeeld van hoe een eenvoudige verandering een spel tot leven kan brengen. Maar hoe? Het is gewoon een manier om de speler hoger en verder te laten springen, toch? Hoe is dat anders dan een eenvoudige monteur? Staat u mij toe het uit te leggen.
Onze basissprong heeft een vaste hoogte en een vaste snelheid. Sommige platformgames laten je de springknop ingedrukt houden om de spronghoogte te vergroten. Met onze originele sprong werd de speler opgesloten in een beslissing. Nadat de knop was ingedrukt, had de speler geen keuze meer. Er was geen variatie. Door een dubbele sprong toe te voegen, hebben we de speler een keuze gegeven en variatie geïntroduceerd in de springervaring van de speler. Ik weet zeker dat je hebt gehoord dat "verscheidenheid het kruid van het leven is"; dit geldt ook voor gameontwerp.
Maar je kunt niet zomaar een hoop keuzes inlassen en het een dag noemen. We zouden onze speler een jetpack, springschoenen, een portaalgeweer en de vaardigheid om te vliegen kunnen geven. Dat zou zeker het aantal beschikbare keuzes openen, maar de meeste zouden overbodig of zinloos worden. De keuzes moeten nuttig zijn in meerdere situaties en onze dubbele sprong slaagt voor die test. Door deze standaard dubbele sprong toe te voegen, kunnen we verticaliteit aan onze podia en vijandelijke ontmoetingen toevoegen zonder de kern van de gameplay te veranderen zoals een jetpack dat zou doen. Het ontwerp van een podium zou bijvoorbeeld een tijdje grotendeels horizontaal kunnen blijven, en dan zou de dubbele sprong in een sectie nodig kunnen zijn om de verticaliteit uit te breiden en variëteit en leven te introduceren in de ervaring.
En het gaat niet alleen om basisplatforms. In feite is het aantal gameplay-keuzes immens met een simpele dubbele sprong. De reguliere vijand kan worden vermeden met een regelmatige sprong. Een grotere vijand kan een dubbele sprong vereisen. Misschien zou een boss-ontmoeting een combinatie van normale en dubbele sprongen vereisen om aanvallen te ontwijken en een hoger vijandelijk zwak punt te bereiken. Een kamer met spijkers aan het plafond kan het gebruik van de dubbele sprong beperken, terwijl een reeks van aanzienlijke sprongen het gebruik van de gewone sprong kan beperken. Gooi het strategische vermogen in om exacte dubbele springtiming te gebruiken om meerdere vijandelijke projectielen te ontwijken, en je hebt uren gameplay-mogelijkheden gecreëerd met één kleine en schijnbaar onbelangrijke monteur.
Dit laat zien hoe het brengen van leven naar een game-ervaring niet gaat om het toevoegen van een waanzinnig niveau aan Pools of detail, maar het kan gaan om het gebruiken van een kleine verandering om gigantische, ingrijpende veranderingen in de kernspelerversie te creëren door variatie.
En nu u aan variatie denkt, wil ik een van de beste tools ter beschikking stellen: randomisatie. Deze iteratie beschikt over een gerandomiseerd springgeluid, dat ervoor zorgt dat de speler niet hetzelfde geluid hoort telkens wanneer op de springknop wordt gedrukt. Het lijkt een kleine verandering, maar de volgende iteratie zal dit idee uitbreiden om te laten zien hoe belangrijk randomisatie is wanneer je probeert een spelervaring tot leven te brengen.
Deze iteratie bevat nogal wat veranderingen, allemaal ontworpen om het schietspel te verbeteren, wat de belangrijkste focus van het spel is. Ongeacht het soort spel dat je maakt, je zou zoveel mogelijk tijd moeten spenderen aan het verfijnen van de manier waarop je spelers ermee omgaan. Deze iteratie voegt leven aan het spel door een verbetering van visuele feedback, audiofeedback, risico versus beloning en randomisatie.
Onze eerdere iteraties waren zeer onbevredigend en underwhelming vuurgevechten vanwege de vrijwel onbestaande bullet feedback. Het indrukken van de vuurknop resulteerde in het creëren van een kogel, maar dat was het dan. Door een eenvoudige muilkorf te maken en de grootte van de kogel te vergroten, hebben we een veel leukere ervaring voor de speler gecreëerd. Een subtiele schermschok is toegevoegd om de kracht van ons geweer te benadrukken, dat nu meer aanvoelt als een jachtgeweer dan als een schietschiet. Onze kogels worden een hoofdpersoon, wat ongelooflijk belangrijk is in een spel dat wordt aangedreven door vuurgevechten.
Het saaie, nietige geweerschot geluid van vroeger is vervangen door een dikke en vlezige explosie die goed past bij onze nieuwe visuele feedback. Het is belangrijk om ervoor te zorgen dat uw beeldmateriaal en geluid goed samenwerken om uw spel nieuw leven in te blazen. Op dezelfde manier dat geweldige audio je spel kan verbeteren, kan slechte audio de algehele ervaring afleiden.
In een spel dat draait om schieten, geven veel spelers de voorkeur aan een optie voor automatisch vuur. Waarom is dit? Misschien komt het doordat hun vingers moe worden, maar ik zou zeggen dat dit komt omdat de meeste schietspellen geen risico vormen om een wapen af te vuren.
Hoor me. Als de speler niet wordt gestraft voor het afvuren van een wapen in het spel, waarom moet de speler dan überhaupt op de knop drukken? Er moet reden zijn om op een knop te drukken, en daar moet een reden voor zijn niet Druk op die knop. Bij variatie draait alles om keuzes, toch? Dus geef de speler een reden om te kiezen om op een knop te drukken of niet, en geef een risico en een beloning voor beide keuzes.
In deze iteratie heb ik een terugslag van het pistool geïntroduceerd die de speler achterwaarts zal voortstuwen terwijl elke slag wordt afgevuurd. Vuur te snel en je vliegt over het scherm. In een fase met valkuilen, pieken of andere gevaren, creëert deze terugslagmechaniek interessante scenario's waarbij spelers gedwongen worden te kiezen wanneer, waar en hoe ze moeten schieten. Ja, je kunt de vruchten plukken van honderden kogels schieten naar je vijand, maar je loopt het risico om te worden gedood door iets waar je niet eens naar schiet.
Probeer manieren te vinden om dit concept in je game te introduceren, en je zult zien dat het aantal mogelijke gameplay-scenario's wordt vermenigvuldigd. Deze terugslagmechaniek zorgt er bijvoorbeeld voor dat de speler verder kan springen, zolang ze er maar comfortabel mee bezig zijn terwijl ze achteruit reizen. Het is een interessante laag van diepte die in de loop van de tijd kan opduiken, en nog meer variatie aan de gameplay-ervaring toevoegt.
Dit is gemakkelijk de snelste en eenvoudigste manier om uw spel nieuw leven in te blazen. Net als bij de springgeluiden uit een eerdere iteratie, is het schotschot ook willekeurig. De speler zal honderden kogels per keer afvuren, dus het is ongelooflijk belangrijk om dit zo gevarieerd mogelijk te maken. Het traject van elke kogel is ook enigszins gerandomiseerd. We kunnen upgrades introduceren in de loop van de tijd om onze kogels nauwkeuriger te maken, maar voor dit soort games is geen nauwkeurige kogelnauwkeurigheid vereist, dus dit soort randomisatie werkt perfect.
De vijanden tot op dit punt bestrijden was een saaie ervaring. Deze iteratie introduceert een vorm van visuele feedback door vijanden actuele hitpoints te geven en een beetje terugslag te introduceren.
Wanneer een kogel botst met een vijand, knippert de vijand tijdelijk rood en wordt de vijand bewogen in de richting waarin de kogel reed. Er zijn nu vijf hits nodig om een vijand te doden, waardoor een echte uitdaging ontstaat.
Het startende animatieframe en de maximale bewegingssnelheid van een vijand worden willekeurig verdeeld om variatie te creëren tussen de vijandelijke kracht die nu is toegenomen van één Slug Booger tot vier Slug Boogers. Als u dezelfde sprite op het scherm hebt en de sprites allemaal tegelijk worden geïnstantieerd, is het belangrijk om dit te doen om ervoor te zorgen dat er een onderscheid wordt gemaakt tussen de entiteiten.
Hoewel deze veranderingen vijandige ontmoetingen een beetje interessanter maken, hebben we nog steeds een manier om de algehele ervaring bevredigend te maken.
Weet je nog toen we podiumtegels introduceerden, een strikt cosmetische verandering die niets toevoegden aan de gameplay en toch het gevoel van het spel veranderde? Nou, het toevoegen van deeltjes is een goede manier om dat idee om te zetten naar 11.
Stofdeeltjes worden uitgestraald wanneer de speler springt en wanneer de speler landt, wat een beetje leven toevoegt aan de beweging van de hoofdpersoon. Vuur en een beetje rook komen uit de kanonsloop telkens wanneer een schot wordt afgevuurd, en de kogels barsten uit in een reeks witte deeltjes wanneer ze botsen met een muur, vloer of vijandelijk object.
Terwijl ik aan deze demo werkte, liet ik een paar teaser GIF's zien aan enkele van mijn vrienden, en de eerste reactie was meestal hetzelfde. Iedereen gaf commentaar op de deeltjeseffecten en bewees hoe waardevol dit soort visuele feedback kan zijn. Maar het gaat er niet alleen om "mooi" te zijn; deeltjes kunnen een game levendiger maken door de verbeelding van een speler verder in de gamewereld te duwen.
We weten allemaal dat er geen stof op de grond is in dit spel, maar de deeltjes kunnen ervoor zorgen dat je je ongeloof opschort. Hetzelfde geldt voor het geschut. Wat voorheen slechts een witte sprite was, voelt nu meer als een projectiel dat uit een vat wordt gegooid door de verbranding van buskruit. En nu kunnen onze kogels, in plaats van alleen maar te verdwijnen, logisch uit de spelwereld verdwijnen door in kleine stukjes uiteen te vallen. De start- en eindposities van onze sprongen worden nu gemarkeerd door stof. Alles begint een begin en een einde te hebben. Alles begint een doel te hebben. Wanneer deze individuele objecten beginnen te leven en zelfstandig ademen, kan het spel als geheel zich levendiger gaan voelen.
Aangezien de dingen zich levend beginnen te voelen, moeten we ze zeker meer dood laten voelen.
Het verslaan van een vijand zou een bevredigend moment moeten zijn, omdat dit het belangrijkste punt van onze kleine game is. In deze iteratie ontploffen vijanden in een uitbarsting van buitenaardse bloeddeeltjes en lichaamsdelen. Een witte flits en een zware schermschudding vergezelt een squishy explosiegeluid, en de lichaamsbrokken maken een squishgeluid wanneer ze tegen de vloer botsen.
Deze body chunks brengen ook een ander belangrijk game-ontwerpelement naar voren: permanence. De speler kan een definitief stempel drukken op de spelwereld. Het is net alsof je een plakboek met foto's bijhoudt om de gebeurtenissen in je leven te markeren, behalve dan veel sinister. Het is in zekere zin het bewijs dat je ooit leefde. Dit eenvoudige idee kan gebieden markeren waar je al bent geweest, en het kan een herinnering zijn aan de gevechten die je hebt gewonnen.
Permanentie is ongelooflijk belangrijk, en het is een idee dat al bestaat sinds het begin van de game-ontwikkeling. Denk terug aan de originele Super Mario Bros., waar je kunt zien welke blokken je al hebt gebroken. Het is zo'n eenvoudig concept, maar het brengt je spel tot leven door de slepende effecten van je geïnvesteerde tijd te laten zien.
De laatste iteratie introduceert een paar optionele visuele aanrakingen en een eenvoudige soundtrack. Hoewel ik de tijd niet heb genomen om een nummer te componeren dat past bij de visuele stijl van het spel, wil ik het grote belang van de rol van audio bij het tot leven brengen van een game niet negeren. Of het nu om een echt nummer gaat of om een soort omgevingsgeluid, de kracht van audio om het spel leven in te blazen is immens.
Wat de visuele toevoegingen aan deze laatste iteratie betreft, voegde ik een scrollende parallaxachtergrond en meer permanentie toe via shell-omhulsels die uit het pistool werden verdreven. De parallax-achtergrond is in dit voorbeeld niet logisch, omdat alle actie op één scherm plaatsvindt, maar je kunt zien dat de toegevoegde dieptes helpen om de wereld van het spel verder terug te brengen naar een gebied dat de speler nooit zal kunnen bereiken traverse.
De industrie kan geobsedeerd lijken door het idee van open wereldgames en alle zichtbare delen van de kaart van een game kunnen bereiken, maar ik vind het eigenlijk belangrijk om ontoegankelijke gebieden in een game te vermelden. Wil je ooit in het echte leven voet zetten op elke korrel zand in het bekende universum? Natuurlijk niet, en dat is geen slechte zaak. De uitgestrektheid van het universum is een interessant concept, dus denken over de onbereikbare gebieden van het spel kan net zo intrigerend zijn.
Het leven van een spel kan uitgebreid worden tot ver buiten elke speelbare, zichtbare of hoorbare grens als je dat wilt. De wereld is binnen handbereik, dus profiteer ervan!
Vergelijk het spel in Iteration 10 met het spel in Iteration 1. Deze kleine, eenvoudige wijzigingen en toevoegingen zijn opgeteld om een veel leukere ervaring te creëren. De game in Iteration 1 is saai, levenloos en oninteressant. De game in Iteration 10 laat je nog meer wensen, en je kunt echt het gevoel krijgen dat een volledig spel begint vorm te krijgen.
Zoals ik al eerder zei, dit is slechts een voorbeeld van hoe jij macht voeg leven toe aan een game met dit soort gameplay en presentatiestijl. Er zijn oneindig veel manieren om je ervaring tot leven te laten komen in de handen van je spelers, en het is aan jou om die kunst onder de knie te krijgen.
De volgende keer dat je een spel speelt, stop je en vraag je jezelf af waarom het bevredigend is. Denk niet alleen aan hoe het eruit ziet, hoe het klinkt, of hoe het speelt. Denk na over de keuzes die u heeft, de mogelijke permutaties van gebeurtenissen die er zijn en de feedback die u ziet en hoort als gevolg van uw inbreng. Bedenk hoe die feedback uw keuzes beïnvloedt en probeer te begrijpen waarom die beslissingen tijdens de ontwikkeling zijn genomen. De beste manier om meer te weten te komen over het ontwerpen van spellen, is door vragen te stellen waarop u misschien nooit het antwoord vindt.
Het is net als zoeken naar de zin van het leven: je zult nooit het antwoord vinden, maar je kennis van de wereld en van jezelf zal ongetwijfeld langs de weg groeien.