Het spel ontwerpen Een engine kiezen
Besteed veel tijd aan het uitwerken van de vraag wat je spel is voordat je ook maar een regel code gaat schrijven. Welk genre is het? Is het 2D of 3D? Komt de speler vooruit in het spel door puzzels op te lossen, het verhaal te volgen/maken, vijanden te bestrijden en/of de omgeving te verkennen? Hoe meer vragen je kunt beantwoorden en hoe meer details je meegeeft aan je ideeën, hoe meer tijd dit je op de lange termijn bespaart. Als je besluit om een grote wijziging aan te brengen nadat je reeds bent begonnen met coderen, dan kunnen wijzigingen vele malen langer duren om te implementeren. Breng dit terug tot iets dat veel, veel eenvoudiger is dan je oorspronkelijke idee. Een klein prototype dat onderzoekt hoe je spel werkt en een paar niveaus biedt om te spelen is al een uitstekend begin. Zodra dit klaar is kun je het als basis gebruiken om het uit te breiden tot een volledig spel, of het wat je geleerd hebt op te nemen in een nieuw project. Op dit punt heb je weken of maanden van hard (maar lonend) werk voor de boeg. Terwijl de onderstaande taken over het algemeen door een team van mensen wordt opgepakt waarna er gelijktijdig aan wordt gewerkt, zal een eenling moeten beslissen welke taak per fase de makkelijkste of belangrijkste is om mee te beginnen. Neem alle onderstaande stappen door en begin met de taak die je het meest aanspreekt. Tenzij je een op tekst-gebaseerd spel maakt, heb je 2D-afbeeldingen en eventueel 3D-modellen en texturen (patronen die je op de modellen toepast) nodig. Muziek en geluidseffecten kun je uitstellen tot een beetje verderop in het proces, maar ze zijn aan te raden als je van plan bent je spel te publiceren. Eenvoudige pictogrammen, gebruikersinterface en lettertypen hebben de laagste prioriteit als je spel zich nog in het beginstadium bevindt, maar kunnen uiteindelijk de spelervaring aanzienlijk verbeteren.  Er zijn veel sites online waar je gratis of goedkope assets kunt vinden. Probeer deze lijst op makeschool.com. Het inhuren van een kunstenaar zal een groot verschil maken. Als je je dit niet kunt veroorloven, verzamelen de assets dan zelf en laat het resultaat zien aan artistieke vrienden of post het voor advies op fora voor gameontwikkeling of kunstfora online. Veel van deze documentatie zal in de vorm van planningsdocumenten komen buiten de code van het spel zelf, hoewel een op een verhaal gebaseerd spel wellicht dialoogbomen nodig heeft. Zelfs een spel zonder een traditioneel verhaal moet een gevoel geven van progressie waaromheen je moet plannen. Een platformspel kan betrekking hebben op een reeks bewegingen en wapen-upgrades, terwijl een puzzelspel meer functies zal toevoegen als de complexiteit en moeilijkheidsgraad van de puzzels toeneemt. Begin met een klein, eenvoudig level of gebied. Focus op de bouw van het pad dat de speler neemt door het level, voeg er zijpaden aan toe (optioneel), meer gedetailleerde graphics, en pas de moeilijkheidsgraad aan (zoals door de hoogte van het platform aan te passen of vijanden te verplaatsen). Gebruik lichtbronnen en item-dropplekken om de speler naar de volgende plaats in het gebied te leiden. Gebruik schaduwen om spelers te ontmoedigen om doodlopende paden of lastige paden te verkennen, en gebruik vijanden voor beide doeleinden (afhankelijk van hoe het spel je leert om vijanden te vermijden). Een goed ontworpen omgeving geeft de speler het gevoel dat hij zijn eigen beslissingen neemt of zelf kan verkennen, maar begeleidt hem langs de eenvoudigste route met behulp van subtiele aanwijzingen. Dit is niet nodig als je eenvoudige gameontwerp-software gebruikt. Als je bereid bent je te verdiepen in de meer diepgaande theorie van grafische systemen, dan kun je beginnen door shaders en particle-effecten te maken, of de grafische code te doorlopen en taken te verwijderen die overbodig zijn voor je spel. Omdat afbeeldingen bijna altijd de bottleneck vormen wat betreft de verwerkingssnelheid, zal zelfs een 2D-game een aanzienlijke optimalisatie moeten doormaken en aanpassingen van code nodig hebben, om de last voor de grafische kaart en processor te minimaliseren. Zodra je een eenvoudige level of prototype hebt van de gameplay, kun je vrienden het spel laten spelen en vragen of ze feedback willen geven. Ontdek wat mensen leuk vinden en wat hen frustreert. Later in het proces, wanneer het spel meer gepolijst is, kan feedback van vreemden of kennissen een uitstekende bron vormen van eerlijk advies, omdat ze het minder belangrijk vinden om je aan te moedigen, of dat je wel of geen succes hebt. Spelers zijn niet opgeleid om feedback te geven vanuit het perspectief van een ontwikkelaar. Als spelers een hekel hebben aan een bepaald aspect van het spel, dan is er meestal iets dat verbeterd kan worden. De specifieke suggesties die de spelers doen zijn echter vaak niet nuttig. Stel hen zeer concrete vragen om exacte te weten te komen met welke functies ze moeite hebben. De meeste videogames worden gemaakt met behulp van een gespecialiseerde engine waarmee je zonder code gebeurtenissen, karakters, enzovoort kunt 'scripten'. Het vanaf nul ontwikkelen van een volledige game-engine zal jaren werk gaan kosten, dus gebruiken de meest onafhankelijke ontwikkelaars een bestaande engine. Je hoeft alleen maar een van de volgende stappen in deze sectie te volgen, afhankelijk van hoe goed je bent in programmeren en hoeveel tijd je wilt besteden aan de kleine details. Deze tools vereisen bijzonder weinig kennis van programmeren en zijn daarmee mogelijk niet jouw ding als je geïnteresseerd bent in de programmeeraspecten van het maken van een game. Aan de andere kant kan een eenvoudige benadering waarbij er je meteen helemaal in duikt je veel leren over je spel en kun je de concept op een hoger niveau wijzigen, voordat je verdergaat met een groter prototype. Hieronder vind je enkele gratis opties:  Voor mobiele games: MIT App Inventor or Game Salad. Voor browser-games: Scratch, of serieuzere versie Snap!, bedoeld als een tool om te leren programmeren. Voor adventure games: AGS (Adventure Game Studio). Wil je een programma waarbij je objecten kunt slepen en neerzetten met een optie om te programmeren, probeer dan de gratis versie van GameMaker Dit is een geweldige kans om echt in de materie te duiken, waarbij je programmeerervaring op het gebied van games op kunt doen, zonder helemaal vanaf nul te moeten beginnen. Veel professionele onafhankelijke gameontwikkelaars beginnen op dit niveau. Hoewel er veel verschillende engines en Integrated Development Environments (IDE's) beschikbaar zijn, zijn de volgende gratis en relatief eenvoudig om te leren:  Voor mobiele games: ProjectAnarchy Voor 3D-games op elk platform: Unreal, Unity, Blender, Torque3D Voor meer geavanceerde programmeurs: LWJGL (in Java), SFML (in C++) Als je al enige kennis hebt van programmeren en je eigen enige wilt bouwen, dan volgen hier een paar plekken om mee aan de slag te kunnen gaan. Als dit je eerste poging is, dan kun je waarschijnlijk beter eerst nog wat tutorials volgen.  Met ActionScript kun je een op Flash gebaseerde engine maken. Dit is een goede plaats om te beginnen voor gevorderde programmeurs. Java is relatief eenvoudig te leren. Je hebt een Java Development Kit (JDK) nodig, plus Eclipse of een ander Integrated Development Environment (IDE) voor Java, als je niet zeker weet waar je moet beginnen. Als je al een programmeertaal (vooral een C-taal of Python) kent, zoek dan naar een IDE voor die taal. Het moet een compiler bevatten en de mogelijkheid om gemakkelijk te werken met afbeeldingen, audio en andere code binnen hetzelfde project. Als je een van de geavanceerde tools in de vorige stap hebt gekozen, zal je waarschijnlijk op zoek moeten gaan naar een tutorial, een helpforum of een ervaren game-ontwikkelaar voor specifiek advies over je gekozen programmeertaal. Als je niet zeker weet waar je moet beginnen of wat je moet vragen, dan volgen hier een paar basisonderdelen die je in het begin zult moeten bouwen:  Een client-server die de gebruikersinvoer interpreteert en het resultaat verwerkt. Zorg dat het invoersysteem correct reageert voordat je serieus aan de slag gaat met de graphics en gameplay (zoek naar 'action listeners' als je vast komt te zitten). AI voor andere karakters, zodat ze reageren op acties van de gebruiker. Voor een eenvoudiger project hoef je alleen maar ervoor te zorgen dat de karakters zich verplaatsen volgens een vastgesteld pad. Het vermogen om graphics te renderen (instructies maken en verzenden naar de grafische kaart). Een spel-lus die constant loopt terwijl het spel wordt uitgevoerd. Dit moet gebruikersinvoer verwerken, andere spel logica verwerken (zoals vijandelijke bewegingen, achtergrondanimatie en geactiveerde gebeurtenissen), berekenen wat moet worden getekend (weergegeven op scherm), en de informatie naar de grafische kaart sturen. Voer dit ten minste 30 keer per seconde (30 fps) uit, als je systeem ermee kan omgaan.
Zorg dat je het eerste concept afrondt. Werk in willekeurige volgorde aan de onderstaande stappen. Verzamel of maak game-assets. Werk aan verhaal- of voorgangsschema's. Ontwerp de levels. Tweak en optimaliseer de afbeeldingen. Vraag feedback van gametesters. Leer meer over game-engines. Overweeg eenvoudige software om games te maken. Probeer de meer professionele ontwikkelomgevingen. Kies een tool voor het maken van je eigen engine. Bouw je eigen engine.
https://www.wikihow.com/Code-a-Video-Game https://www.wikihow.com/Code-a-Video-Game
Designing the Game Choosing an Engine