Game design / computerspellen ontwikkelen

game design Het ontwikkelen en bouwen van computerspellen, in het Engels ook wel game design genoemd, is meer een creatief proces dan echt techniek. Natuurlijk komt er op een moment echt programmeren om de hoek kijken, maar tegenwoordig zijn er geweldige game engines en ontwikkel omgevingen, waarbij het meeste werk gewoon zonder programmeren (drag and drop) gedaan kan worden. Ik werk zelf graag met de Unity game engine en ik heb ook een tijd Construct II gebruikt. Ik ben van oorsprong een C en C++ programmeur en de laatste jaren werk ik ook veel in de programmeertaal c#. Maar ook met Javascript zijn leuke dingen te maken, ook dit pas ik graag toe, zeker om Progressive web application te maken die zich uitstekend lenen om spellen in te verpakken. Maar zoals ik al eerder schreef is het maken van een goed spel meer een creatief proces dan een technisch proces. Ook hier heb ik veel over geleerd en ook dit wil ik graag delen op deze pagina met verwijzingen naar goed naslagwerk. Ik wens u veel inspiratie toe, vriendelijke groet Hein Pragt.

Op de inhoud van deze pagina rust copyright © Hein Pragt.

Inleiding in het programmeren van spellen

Het programmeren van spellen is leuk, verslavend, een bron van heel veel ergernis maar ook heel veel plezier. Maar hoe kunt u een spel programmeren? Grafische vormgeving en geluid zijn de dingen die het eerst opvallen wanneer we computer spellen bekijken. Maar schitterende animaties en goede geluidseffecten zijn slechts de buitenste laag van deze fascinerende vorm van technologie. 3D techniek vereist wat kennis van wiskunde en verder is een spel vaak een ingewikkelde structuur van logica en regels. Ook raken spellen vaak het vak psychologie omdat het spel een vorm van actie en reactie is en de speler een mens is die op menselijke wijze reageert op het spel. Hoe men vermoedt dat de speler gaat reageren, is vaak al van te voren goed overdacht. Ook is het zo dat in adventure games of role playing games (rpg) de spelfiguren een eigen karakter hebben, ook dit vergt enig inzicht in de menselijke psyche. Het programmeren van spellen brengt vaak vele disciplines bij elkaar, techneuten, programmeurs, grafisch ontwerpers, verhaal vertellers enz.

Het programmeren van spellen is wezenlijk niet anders dan elke andere vorm van programmeren, behalve dat het vaak heel efficiënt moet zijn en voor erg voor snelheid geoptimaliseerd. U zult moeten leren om programma's te schrijven die snel en efficiënt 2D en 3D plaatjes weer kunnen geven, die muziek en geluidseffecten kunnen weergeven en die razendsnel kunnen reageren op gebruiker invoer. Wanneer u een multiplayer spel schrijft dat over een netwerk kan worden gespeeld, zult u ook netwerkcode moeten schrijven. Het programmeren van spelletjes is geen eenvoudige zaak en vergt zeker veel studie. Natuurlijk zijn veel van deze taken al gedaan voor u, er zijn meerder programmacode bibliotheken die u kunt gebruiken. Deze bibliotheken zijn gebouwd om specifieke taken uit te voeren zoals het tonen van graphics, geluid weergeven en gebruikersinvoer afhandeling. Er zijn ook libraries die als een APIs gebruikt kunnen worden als interfaces tussen het programma en de onderliggende hardware. Een succesvolle spelprogrammeur weet wat hij zelf moet doen en wat hij van anderen kan "lenen".

Basis vaardigheden game design

Wanneer u zelf games wilt gaan maken heeft u toch een paar basis vaardigheden nodig. Let op, deze vaardigheden heeft u in meer of mindere mate nodig, afhankelijk u helemaal alleen een spel wilt maken of in een team. In een team heeft iedere ontwikkelaar meestal een specialistische vaardigheid, de een is heel goed in het maken van grafische elementen, de ander is goed in geluid en muziek, een ander is goed in levels ontwerpen en weer een ander kan een goede programmeur zijn. Hoe kleiner het team, hoe meer vaardigheden bij één en dezelfde persoon moeten liggen. De basis vaardigheden zijn dus: grafisch ontwerp, geluid en muziek, spel concepten en last but not least programmeren.

Grafisch ontwerpen

Wanneer u een computerspel bekijkt dan ziet u onmiddellijk hoe belangrijk grafisch ontwerpen is. De meeste beginnende spellen zijn vaak te herkennen aan slechte grafische afwerking. Alle elementen in het spel hebben een uiterlijk nodig, zelfs bij een vrij statisch spel als dammen of schaken is een fraaie grafische weergave nodig. In een platformspel zijn spelfiguren, levels, achtergronden en menuschermen nodig. Al deze grafische elementen moeten gemaakt worden. Hierbij is enige kennis van kleur en dieptewerking wel handig net als het beheersen van een grafisch pakket. Er zijn er talloze softwarepakketten beschikbaar, van gratis pakketten tot hele dure professionele pakketten. Een bekend open source en gratis pakket is: Gimp maar dit pakket blinkt mijns inzien niet uit in gebruikersvriendelijkheid. Daarnaast zijn er de (meestal niet gratis) pakketten zoals: Photoshop, illustrator, paint shop pro en paint.net. Kies een van pakketten en leer er mee werken door er mee aan de slag te gaan. Ik werk zelf het liefst in Photoshop omdat ik dit pakket al heel lang ken en ondertussen precies weet waar alle mogelijkheden zitten.

Naast specifieke elementen moet u ook nadenken over de algehele grafische stijl van uw spel, speels, losjes, strak, veel kleuren of weinig. Zorg er ieder geval voor dat u de stijl consequent toepast binnen het hele spel, er is niet zo ergerlijk als een niet consequente gebruikers interface. Kijk vooral hoe andere spellen binnen hetzelfde genre het doen, beter goed afgekeken dan slecht bedacht. Let wel op dat u geen dief bent, zomaar dingen kopiëren mag niet. Vaak werkt het goed om te beginnen om alles gewoon op papier te schetsen, u kunt dit natuurlijk ook in een tekenpakket op de computer doen. Wanneer u niet genoeg grafische vaardigheden bezit kunt u ook gebruik maken van open source grafische elementen. Op Internet zijn veel gratis grafische sets te downloaden die beschikbaar gesteld zijn om te gebruiken in uw eigen spel. Let er wel op of ook commercieel gebruik toegestaan is en of u aan bronvermelding moet doen. Bij twijfel is het verstandig om altijd schriftelijk toestemming vragen aan de oorspronkelijke maker.

Voor het laten bewegen van objecten in uw game heeft u animatietechnieken nodig. Dit betekent dat u meerdere versies van een plaatje heeft die elk een onderdeel van een beweging zijn, die na elkaar afgespeeld worden. Hoeveel plaatjes nodig zijn kunt u zelf bepalen, hoe meer plaatjes hoe realistischer de beweging. Om te lopen kunt u bijvoorbeeld met twee plaatjes per richting volstaan maar fraaier is vier plaatjes. Voor complexere bewegingen zoals vechten zijn vaak nog meer plaatjes in de animatiereeks nodig. Voor een echt vloeiende beweging heeft u zeker 30 plaatjes per seconde nodig! Alles wat beweegt in een spel is opgebouwd uit een serie van stilstaande plaatjes.

Geluid en muziek

Binnen een spel kunnen we achtergrond muziek gebruiken om de sfeer van het spel te versterken en geluidseffecten gebruiken om effecten in het spel te versterken. Bij het openen van een deur kunt u een geluid afstelen maar ook kunnen vijanden hun eigen geluid hebben om ze nog dreigender te maken. Geluidseffecten kunt u zelf maken door de op te nemen met uw computer en daarna te bewerken, er bestaan ook heel veel open source geluiden die u op Internet kunt downloaden. Ook kunt u met een geluidsbewerkingprogramma stukjes knippen uit bestaande geluidsbestanden om uw eigen effecten te maken. Veel ontwikkelaars en game ontwikkel pakketten maken gebruik van zogenaamde wav files of andere geluidbestand formaten om effecten af te spelen. Deze bestanden kunnen vaak veel ruimte in beslag nemen en zeker voor een online spel is het belangrijk (maar ook voor de laadtijden bij offline spellen) om de bestanden zo klein mogelijk te maken en zoveel mogelijk te hergebruiken.

Voor het gebruik van achtergrond muziek maakt men vaak gebruik van midi, waarbij de muziek als het ware via een virtuele synthesizer afgespeeld zal worden. Het voordeel is dat dit formaat erg compact is en u dus hele grote muziekstukken kunt afspelen, het nadeel is wel dat u hiervoor een software synthesizer module in uw code moet hebben en dat u een pakket nodig heeft om deze bestanden te maken en de bewerken waarbij kennis van muziek noodzakelijk is. Vaak kiezen spelontwerpers er voor om een repeterend muziekstuk op te delen in brokken die willekeurig na elkaar gespeeld kunnen worden zodat de achtergrond muziek niet te eentonig is. Hierbij kunnen de individuele stukken bijvoorbeeld in mp3 formaat opgeslagen worden. Let wel op dat ook hierbij de grootte van de bestanden en dus de laadtijd erg belangrijk kan zijn.

Ook hier gaat op dat wanneer u niet genoeg muziek vaardigheden bezit kunt u ook gebruik kunt maken van open source muziek. Op Internet zijn veel gratis achtergrondmuziek stukken te downloaden die beschikbaar gesteld zijn om te gebruiken in uw eigen spel. Let ook bij deze stukken er wel op of ook commercieel gebruik toegestaan is en of u aan bronvermelding moet doen. Bij twijfel is het verstandig om altijd schriftelijk toestemming vragen aan de oorspronkelijke maker.

Spel concepten

Naast alle technische en grafische vaardigheden is ook kennis van spelconcepten belangrijk. Een goed idee voor beginnende gamemakers is beginnen met het nabouwen van hun favoriete game. Dit is een goede oefening om de vaardigheden van gamedesign onder de knie te krijgen. Ook is het spelen en goed bekijken van computerspellen, zeker in het genre wat uzelf wilt maken erg belangrijk. Maar het wordt pas echt interessant als u echt iets nieuws probeert te maken. Veel mensen die op dit punt komen willen wel iets nieuws maken maar vallen telkens weer terug op spellen die ze al kennen. Het is een goede gewoonte ideeën op papier te schetsen voordat u aan de slag gaat. U kunt daarna de uitgewerkte ideeën aan een paar mensen laten zien om het idee te testen, vaak ontstaan hier weer goede opmerkingen of aanvullingen uit. Begin niet te snel met het echt bouwen, een goed ontwerp vooraf kan heel veel tijd achteraf besparen. Niets is meer frustrerend dan het weer compleet ombouwen van een spel wanneer u halverwege bent.

Wat is Parallax Scrolling?

De meeste moderne platformgames maken gebruik van parallax scrolling, ik zal hier proberen uit te leggen wat dit is en hoe u dit kunt gebruiken in uw spel. Wanneer u goed kijkt naar de achtergrond van een spel dan ziet u vaak dat deze langzamer lijkt te bewegen dan de voorgrond. Hierdoor ontstaat er een soort van diepte in het spel. Wanneer u in een trein zit en u kijkt naar buiten dan lijkt het of dingen die dichtbij staan vrij snel bewegen en dat naarmate de afstand toeneemt dingen minder snel bewegen. Dit heeft alles te maken met het principe hoe wij als mensen diepte zien. Ook zullen dingen die verder van ons af staan kleiner lijken dan dingen die dichtbij staan. Dit zijn effecten die we kunnen gebruiken om ons 2D spel toch enige dieptewerking te geven.

Het effect kan eenvoudig bereikt worden door gebruik te maken van lagen waarbij de lagen van achter naar voren opgebouwd worden. De laag moet dan wel transparant ondersteunen of in kleine delen afgedrukt kunnen worden omdat anders de laag alles van de voorgaande laag zou afdekken en u alleen de voorste laag zou zien. De achterste laag is meestal niet transparant omdat dit de horizon van onze scene is. Binnen gamedesign pakketten heten deze lagen vaak "layers" en hebben ze een zogenaamde Z waarde die de afstand tot de speler aangeeft. Let wel op dat horizontaal en verticaal scrollen heel intensieve processen zijn voor een computer, het kan zaak zijn het aantal lagen wat te beperken. De meeste eenvoudige wijze om een mooi en realistisch parallax scrolling effect te maken is de scroll factor van de achterst (achtergrond) laag de helft te maken van de voorgrond lagen. Wanneer de voorgrondlaag dus 24 pixels opschuift dan schuift de achtergrond laag slechte 12 pixels op. Door de lagen telkens bij ieder "frame" van de achterste laag tot de voorste laag opnieuw af te beelden ontstaat het diepte effect automatisch.

Nu is het wel zo dat het level soms enorm breed en hoog kan zijn, een achtergrondafbeelding maken die de helft zo groot is zal dan een enorme afbeelding opleveren die veel geheugen zal kosten en enorm veel processortijd om te bewerken. De meeste spellen doen dit slimmer door een slim achtergrond plaatje te gebruiken. Deze afbeelding is bijvoorbeeld twee of vier keer de afmeting van het scherm maar sluit aan de linkerkant perfect aan op de rechterkant en eventueel ook boven en onder, waardoor de afbeelding als een soort van tegeltjes naast elkaar geplakt kan worden. Omdat de gebruiker niet zo in details naar de achtergrond kijkt en er vaak ook nog de nodige dingen voor staan, zal het bijna niemand opvallen dat de achtergrond zich na vier of acht schermen zal herhalen.

Unity game engine

Unity logo Ik ben zelf een grote fan van de Unity game engine. Unity is naar ze zelf aangeven, de favoriete engine van meer dan 45% de game ontwikkelaars en dit zou het de meest gebruikte engine ter wereld maken. Uit dezelfde enquête blijkt dat hun naaste concurrent (Unreal Engine) iets meer dan een derde van het marktaandeel heeft. De engine is gratis en eenvoudig te installeren op zowel Windows-pc of Mac (Linux-ondersteuning komt er aan) en zijn heel veel online tutorial te vinden zowel in tekst als in YouTube films en het is zelfs mogelijk een echte opleiding te volgen met certificering. Ook een zegening voor de beginnende game ontwikkelaar is de Unity Asset Store waar u alles vinden, van 3D-modellen tot geluidsbibliotheken, aangepaste scriptring-oplossingen en zelfs complete projecten om in rond te neuzen en te leren van anderen. De meeste inhoud wordt gemaakt door de community en kost geld, maar er zijn veel gratis versies van bepaalde items en Unity zelf uploadt vaak volledig gratis inhoud. U kunt een compleet spel maken zonder te programmeren, maar wanneer u toch iets speciaals wilt of iets anders dan het standaard gedrag, dan kunt u in C# zelf functionaliteit toevoegen of wijzigen. Het grappige is dat de scripts zelf weer met drag en drop aan componenten gekoppeld kunnen worden. De Unity API is online heel goed gedocumenteerd en geeft duidelijk inzicht in hoe een bepaalde functie werkt of zou moeten worden gebruikt. Deze handleiding wordt voortdurend bijgewerkt, en komt u er niet uit dan is er altijd nog het forum.

Onder Windows is de Unity ontwikkel omgeving geïntegreerd met Microsoft Visual Studio wat het bewerken van C# code stukken vereenvoudigd. De hele interface van Unity is even wennen maar is uiteindelijk zeer gebruikersvriendelijk, hoewel het in het begin wel zoeken is in de enorme lijst van mogelijkheden en instellingen. De beste wijze om het te leren is de tutorials volgen en vooral zelf veel experimenteren. Neem het openen van een deur, zoek het uit, experimenteer met code en wat graphics en alles zal uiteindelijk op zijn plaats vallen. Met een paar oefeningen bent u in staat om een simpele game te maken die er ontzettend goed uitziet en veel standaard functionaliteit krijgt u standaard “out of te box” meegeleverd. Ik was in ieder geval binnen een paar dagen verkocht en verknocht aan de Unity engine en ontwikkel omgeving.


Links, tips en ebooks


Boeken over game design

Praktisch advies over het starten van een carrière in de videogame-industrie en het verbeteren van uw ontwerpvaardigheden. Dit is jouw kans om te leren van de hoofdontwerper van commerciële en kritisch succesvolle videogames als Neverwinter Nights en Dragon Age: Origins. Ontdek hoe de auteur zijn carrière begon, de valkuilen die hij tegenkwam en hoe hij ze overwon. Geschreven door een veteraan uit de branche met meer dan tien jaar ervaring in het werken voor een grote gamestudio. Hoewel specifiek geschreven voor de game-ontwerper, zullen de meeste adviezen interessant zijn voor elke nieuwkomer in de industrie. Onderweg verkent de auteur zijn eigen ervaringen met game-ontwikkeling en de moeilijkheden die hij tegenkwam bij het aanpassen aan het leven in zijn droombaan.
kopen knop


Schrijf onderhoudbare, fouttolerante en schonere gamecodes door de standaardontwikkelingspatronen. Maak gebruik van de kracht van C# om solide architecturen voor uw gameprojecten te creëren. Het boek begint met het uitleggen van de architectuur van Unity Engine en laat je zien hoe je deze kunt verkennen voor het ontwerpen van games. Dit zal lezers helpen vertrouwd te raken met de pijlers van Unity's Engine-architectuur en hen helpen betere technische beslissingen te nemen. Vanaf het eerste concept tot de implementatie leert u elk detail kennen in de context van echte gebruiksscenario's in de industrie waar gameprogrammeurs vaak mee te maken hebben. Leer meer over softwareontwerppatronen tijdens het bouwen van gameplay-systemen. Verrijk uw ontwerpwoordenschat, zodat u uw ideeën over hoe u de architectuur van uw game kunt verbeteren, beter kunt verwoorden.
kopen knop


Dit boek staat ook prominent in mijn boekenkast en is zeer goed. Met een enorm ecosysteem van vooraf gebouwde game-items, een enthousiaste community van mede-ontwikkelaars en ondersteuning voor bijna elk platform, is Unity een geweldige keuze om je droomgame werkelijkheid te laten worden. Unity in Action, Second Edition leert lezers om games te schrijven en te implementeren met het Unity-gameontwikkelingsplatform. Volledig bijgewerkt met de laatste wijzigingen in Unity, nieuwe best practices en een heel hoofdstuk over het bouwen van 2D-platformgames met Unity's uitgebreide 2D-toolkit, is dit boek essentieel voor elke aspirant-game-ontwikkelaar. Belangrijkste kenmerken * Praktische voorbeelden * Duidelijke uitleg * Uitstekende grafische afbeeldingen.
kopen knop


Last update: 19-05-2021


Disclaimer: Hoewel de heer Pragt de informatie beschikbaar op deze site met grote zorg samenstelt, sluit hij alle aansprakelijkheid uit. Op de artikelen van de heer Pragt rust auteursrecht, overname van tekst en afbeeldingen is uitsluitend toegestaan na voorafgaande schriftelijke toestemming. Heinpragt.com is ingeschreven bij de KvK onder nummer: 73839426 en is gevestigd in Veenendaal.  Lees hier de privacyverklaring van deze site. Voor informatie over adverteren op deze site kunt u contact opnemen met: (heinpragt@outlook.com).