Er zijn twee spellen die ik beschouw als mijn eerste: een die ik maakte voordat ik kon coderen (wat moeilijker was dan het moest zijn, maar absoluut niet onmogelijk), en een die ik maakte in samenwerking met een kunstenaar nadat ik de basisprincipes leerde kennen programmering. In dit artikel zal ik mijn ervaringen met je delen, om te bewijzen dat het niet uitmaakt welk vaardigheidsniveau je momenteel hebt, alles wat je nodig hebt om spellen te maken is passie - geen excuses!
Voordat ik een game-ontwikkelaar was, specifiek een programmeur, heb ik met behulp van Flash 4 gedisciplineerd. Ik was toen nog maar 12 of zo, maar ik had veel plezier toen ik de basisprincipes leerde kennen door stokslagen, die enorm waren geïnspireerd door mijn ontelbare uren. Newcamps hebben gebruikt om te roamen. Dit leidde uiteindelijk tot het maken van korte animaties, waaronder voorladers, afspeelknoppen en de hou op()
functie (geplaatst in het laatste frame van de film om looping te voorkomen).
Ik had altijd al games willen maken, maar het leek me volledig te boven te gaan - totdat ik me realiseerde dat die paar tools die ik al gebruikte me de mogelijkheid gaven om dat te doen.
De naam van mijn allereerste game was Omnigosha. Tot op de dag van vandaag heb ik absoluut geen idee waar ik met die naam kwam, maar het klonk toen cool, dus ik bleef erbij.
Omnigosha was een point-and-click-avontuur, dat plaatsvond in een grote stad waar een misdaadsyndicaat niets goeds deed. De game ontbrak meestal aan verhalen, maar uit de weinige brieven en boeken die je tijdens het spel vindt, leer je dat een groep die zichzelf de "Zwarte Monniken" noemt illegale Japanse wapens importeert, en wordt geregeerd door hun leider Don Etello (ik was een slim kind, ik weet het).
Je zou het hoofdgebouw verkennen (gebouw A, want dat was het enige gebouw ooit voltooid voor dit ambitieuze project), verzamel items en werk je een weg voorwaarts. Omdat ik geen programmeerkennis had, was er geen inventaris, dus het spel had een lineaire voortgang van het spel, wat betekent dat je het spel in één specifieke volgorde moest voortzetten. (Hoewel er een optioneel mini-bossgevecht was, dat plaatsvond als je een alarm activeerde door te proberen een item uit een veilig kluisje te vroeg in het spel te verzamelen.)
Hoewel het misschien absoluut belachelijk leek, heb ik in feite mijn hele idee afgewerkt, en nog wat, met bijna helemaal geen code. De enige tools die ik had, waren Flash-knoppen en de kennis van de volgende functies:
hou op(); // stopt film bij afspelen van huidige frames (); // hervat de film van het huidige frame gotoAndStop (frame); // stopt de film op het opgegeven frame gotoAndPlay (frame); // hervat de film van het opgegeven frame
Ik dacht dat ik de bovenstaande tools kon gebruiken om iets te maken als een boek 'kies je eigen avontuur'. De speler springt tussen pagina's (frames) door keuzes te maken (waarop ze hebben geklikt), wat zou bepalen op welke pagina (frame) ze werden verzonden.
Er waren bijvoorbeeld 12 verdiepingen in mijn spel, dus elke verdieping zou op de eerste 12 frames staan. De lift die tussen verdiepingen leidde, was niets meer dan een index van knoppen die naar elk frame leidde. Voor de kamers die meerdere verdiepingen hadden, heb ik de extra kamers aan het einde overstag.
Dit systeem werkte eigenlijk best goed voor het verkennen van de wereld die ik had gemaakt, maar ik had absoluut geen idee hoe ik een inventaris moest maken, dat is waar dingen lastig werden.
Omdat ik geen inventarisatiesysteem had, moest ik creatief worden met hoe het spel echt vorderde. Hiervoor deed ik iets absoluut belachelijks, maar ik wist niet beter - en ja, het werkte.
Ik heb mijn gekopieerd gehele wereld (alle frames van mijn spel) naar meerdere "scènes", een voor elke voortgangsfase van het spel. Daarna maakte ik kleine wijzigingen in elke scène, afhankelijk van hoe ver je in de game was.
Als je bijvoorbeeld begint met Scene 1 en het eerste item dat je verzamelt een sleutel is op Floor 4, dan stuurt het spel je naar dezelfde verdieping en frame waar je op het bureau was om die sleutel te 'verzamelen'. , maar in Scene 2. In Scene 2 is de wereld hetzelfde, behalve dat je nu de sleutel hebt, en dus kun je de deur openen die wordt ontgrendeld. Er is geen systeem dat bijhoudt dat je de sleutel vasthoudt: je bent gewoon in scène 2, waar het bureau nu leeg is en de deur kan worden geopend.
Dit gaat door voor elk afzonderlijk item dat je verzamelt gedurende het spel, wat zorgt voor een goede 20 tot 30 exemplaren van bijna elk frame in mijn spel. Voor zover ik wist, deed ik niets verkeerd! En ik was klaar om nog meer te creëren, ondanks hoe weinig ik wist.
Naarmate ik meer en meer enthousiast werd over mijn project, werd ik ambitieus en begon ik me af te vragen hoeveel ik kon creëren met dat weinige dat ik kende. Op een bepaald moment in mijn spel ontmoet je uiteindelijk de leden van de "Black Monks" en heb je een vuurgevecht; dit is waar dingen gek worden.
U vraagt zich misschien af hoe dit zelfs mogelijk is zonder programmeerkennis. Nou, door het hebben van een aantal uiterst ingewikkelde frame-setups en verschillende knoppen die je naar specifieke frames leiden, afhankelijk van wat er gaande was, was ik in staat om een heel nette pistool-uithouding te creëren. Tijdens deze afstand kun je op de pijl-omlaag drukken om je achter een gigantische kist te verbergen, op de pijl-omhoog drukken om dekking te zoeken en op vijanden klikken terwijl je geen dekking hebt om ze neer te schieten. Om dingen op te ruimen, maakte ik van elk krat in de kamer een knop waarop kon worden geklikt, wat een geluidseffect zou veroorzaken en hun afbeelding zou veranderen in een krat met een kogelgat (het kogelgat was vooraf bepaald en niet op de plek waar je schoot) ).
Later, met behulp van zeer vergelijkbare technieken, creëerde ik zelfs een gigantische tankbaas die raketten op het scherm schoot, en die een zwak punt had dat alleen kon worden geschoten als de bewaker omlaag was.
Voor het geval je het je nog niet had gerealiseerd: mijn methoden hierboven zijn absoluut belachelijk op alle mogelijke manieren. Als ik de meest extreme basisprincipes van programmeren kende, had ik dit spel veel sneller kunnen maken. Bovendien had ik de bestandsgrootte veel kleiner kunnen maken, want ik hoefde geen frames keer op keer te kopiëren voor elke fase van de voortgang in het spel..
Een basiskennis van arrays zou me in staat hebben gesteld een eenvoudig inventarisatiesysteem te creëren, waardoor de gebruiker items kon verzamelen zoals ze ze vonden, en voor het spel om te weten welke items op een bepaald moment werden bewaard. Kennis van als
Uitspraken en Booleans zouden me dan in staat hebben gesteld controles uit te voeren op al mijn deuren, dressoirs, roosters, enzovoort. Deze twee gecombineerd, samen met een paar andere basisprincipes, zorgden ervoor dat ik het spel goed kon programmeren, waardoor ik het kon bewerken en uitbreiden naar eigen goeddunken. Zoals het was, moest ik elke keer dat ik een nieuw item aan het begin of in het midden van het spel toevoeg, enorme bewerkingen uitvoeren, omdat alles in het spel frame- en scène-specifiek was en de latere waarden veranderden met eerdere toevoegingen.
Belemmer jezelf nooit door een gebrek aan kennis
Het meest waardevolle wat ik heb geleerd van dit spel is dat je jezelf nooit moet hinderen door een gebrek aan kennis. Als je een probleem probeert op te lossen zonder de juiste hulpmiddelen, kun je het beste eerst afstand nemen van het probleem en eerst de juiste hulpmiddelen aanschaffen.
Als je zwakke plekken in je programmeermogelijkheden hebt, maak er dan een gewoonte van om één aspect tegelijk aan te pakken, en je krijgt langzaam maar zeker de kennis waardoor je nooit fouten kunt maken zoals die ik heb gemaakt.
Een paar jaar nadat ik Omnigosha had gemaakt en op Newgrounds had uitgebracht, bevond ik me in het kleine stadje Moskou, Idaho. Het was hier dat ik voor vijf dollar per uur in een Pizza Hut werkte, en hier besloot ik dat mijn leven verandering behoefde. Ik was het helemaal zat met mijn baan en geen gevoel voor richting in mijn leven. Ik had eerder een Wacom grafisch tablet gekocht om mijn animatievaardigheden te verbeteren, maar kunst is nooit mijn fort geweest en ik had eindelijk geaccepteerd dat mijn animeren niets meer was dan een hobby. Hoewel animatie niet mijn roeping leek te zijn, was alles in orde, want voor het eerst in mijn leven wist ik wat was: game-ontwikkeling.
Ik wist dat ik niet over de vaardigheden beschikte om dit op korte termijn te realiseren, maar mijn motivatie om uiteindelijk dagbanen te verlaten zoals die ik in mijn verleden had, was sterk genoeg om vooruitgang te boeken. Een paar maanden later bracht ik mijn eerste echte, volledig geprogrammeerde game uit - Stabika Episode 1: Escape.
Als onderdeel van mijn reis naar het verwerven van de vaardigheden die ik nodig had om een gameontwikkelaar te worden, ging ik naar de enige plek waarvan ik wist dat die me die toen kon leren, Newgrounds. Hier heb ik ontelbare uren doorgebracht op de Flash-forums en heb ik elke beginnervraag gesteld die de mens kent. Ik heb zelfstudies gelezen, de vragen van andere mensen bekeken en kennis genomen van de antwoorden die ze hebben ontvangen. Hoewel wat ik aan het leren was niet geheel formeel of best practice was, was het een enorme stap in de goede richting en niets leek op het gedrocht van praktijken die ik eerder had gebruikt.
Naarmate mijn leerproces voortging, werd ik steeds enthousiaster om iedereen te helpen waar ik toe in staat was, omdat dit zou bewijzen dat ik eigenlijk aan het leren was, en het zou geweldig voor me zijn om iets terug te geven aan de gemeenschap die me leerde kennen . Op een dag stelde David Mills een bijzonder interessante vraag op de Newgrounds-forums over het creëren van een God of War-achtige getimede sequentie, en tot mijn verbazing vond ik mezelf eigenlijk in staat om zijn vraag te beantwoorden. Hoewel de codering achter het idee vooral logica was die iedereen kon achterhalen, gebeurde het zo dat ik ook de mogelijkheid had gekregen om die logica te programmeren.
Na een paar antwoorden heen en weer, bedankte hij me enorm en beloofde hij me in de wedstrijd te crediteren. Een paar dagen later was hij terug naar de forums, liet hij een demo zien met de code die ik hem gaf en kreeg hij feedback. Niet lang daarna was hij terug om vragen te stellen over hoe te nemen wat mensen hadden voorgesteld, en ik was terug om hem nog een keer te beantwoorden. Voordat we het wisten, waren we samen een partner en maakte ik mijn eerste echte game.
Dit is de originele technische demo die ik Mills heb geleverd, als een bewijs dat ik in staat was om de klus te klaren:
(Een pluim voor ImageShack voor het al die jaren hosten van die SWF.)
De game zelf speelde veel op de getimede sequensen van God of War, zoals Mills in zijn eerste bericht noemde. Het was min of meer een animatie met interactieve momenten waarin de tijd zou vertragen en de speler een willekeurig geselecteerde sleutel moest invoeren voordat de tijd om was.
Deze momenten waren altijd op momenten dat er gevaar was, dus als je op de juiste toets sloeg, ging de animatie door op een waanzinnig ontzagwekkende manier, terwijl het raken van de verkeerde sleutel zou resulteren in een bloederige dood. De game duurde maar een paar minuten om te verslaan als je goed genoeg was, maar de meeste spelers moesten steeds opnieuw oefenen om hun reactietijd te verhogen en te onthouden wanneer de getimede sequenties eraan kwamen.
Ongeacht de korte duur voegden we een controlepunt toe net voor de eindbaasscène, om het spel plezierig en niet al te bestraffend te houden. Om het spel af te sluiten, hebben we een laatste reeks gemaakt met een verwijzing naar Mortal Kombat: de tijd zou volledig bevriezen en de tekst "Finish Him" zou over het scherm worden uitgespreid. Spelers moesten vervolgens vijf willekeurig gegenereerde toetsen achter elkaar invoeren om de genadeklap te bezorgen. Hoewel spelers deze laatste reeks niet konden verknoeien, was het een behoorlijk slechte manier om het spel te beëindigen, en mensen leken ervan te houden.
Het vrijgeven van Stabika was een enorme stap voorwaarts in mijn streven om een game-ontwikkelaar te worden. Ik had mijn programmeerkennis met succes gebruikt, deze kennis verbeterd en een splinternieuw partnerschap gevormd dat leidde tot een groot aantal toekomstige spellen, wat me op zijn beurt aanzienlijk meer ervaring gaf als ontwikkelaar.
Hoewel we Stabika 1 misschien gewoon voor de lol hebben uitgebracht, hebben de aandacht en feedback die we hebben gekregen geleid tot ons eerste sponsorschap met CrazyMonkeyGames, wat ons opende voor een hele nieuwe wereld van mogelijkheden.
Ik kan eerlijk gezegd niet genoeg goede dingen zeggen over het vrijgeven van mijn eerste game en ik dring er bij je op aan om naar dit doel toe te werken als het iets is waarin je geïnteresseerd bent; de resultaten kunnen je verbazen.
Het maakt niet uit welk vaardigheidsniveau je momenteel hebt, alles wat je nodig hebt om spellen te maken is passie.
Zoals je kunt zien, variëren mijn twee games behoorlijk. Eén game vereiste bijna helemaal geen code, en de andere was geavanceerder, vereiste enige programmering en was veel meer gepolijst. Ongeacht hun verschillen hebben ze één ding gemeen: mijn verlangen om spellen te maken, heeft hen tot leven gebracht.
Als je hier iets uithaalt, zou ik willen dat je je realiseert dat het niet uitmaakt welk vaardigheidsniveau je momenteel hebt, alles wat je nodig hebt om spellen te maken is passie. Er kunnen eenvoudige games worden gemaakt met bijna geen technische kennis, en meer gecompliceerde games staan recht voor je - als je de tijd neemt om de nodige vaardigheden te leren. Als het maken van games iets is dat je echt wilt doen, beloof ik je dat je in staat bent; je moet er gewoon op bedacht zijn.