Voorbereiden op een stage of baan als game programmeur

Sta je aan de start van je carrière als game programmeur? Of wil je je alvast voorbereiden op een nieuw hoofdstuk na het afstuderen? In dit artikel willen we je helpen met de voorbereiding op jouw loopbaan als game programmeur. De informatie in dit artikel kun je gebruiken voor het vinden van een stageplek, ter voorbereiding op een sollicitatiegesprek of voor je zelfontwikkeling als programmeur.

In dit artikel geven we antwoord op de volgende vragen:

  1. Hoe ziet een dag als game programmeur bij Grendel Games er uit?
  2. Wat voor type game programmeurs heeft Grendel Games?
  3. Wat maakt een game programmeur goed?
  4. Hoe kan je jezelf verbeteren als game programmeur?
  5. Wat is er nodig voor een goede sollicitatie als game programmeur?

Hoe ziet een dag als game programmeur bij Grendel Games er uit?

Een stage of baan als game programmeur ziet er bij ieder bedrijf anders uit. Bij een grote organisatie heb je vaak een hele specifieke taak. Grendel Games is een kleine organisatie waar op dit moment 3 game programmeurs werken. Daarom heb je als game programmeur bij Grendel Games een breder takenpakket.

Als game programmeur werk je in één van de drie ontwikkelingsteams die bestaat uit 1 designer, 1 artist en 1 programmeur. Elk team heeft meerdere projecten die in sprints van twee weken worden uitgevoerd. 

In hoofdlijnen ben je vooral bezig met het bouwen van nieuwe features. De game designer heeft een idee voor een nieuwe functionaliteit en vraagt de programmeur om deze te bouwen. Het bouwen van een nieuwe feature bestaat uit meerdere stappen, namelijk:

  • Requirements verzamelen: vaak worden de functionele requirements aangeleverd door de game designer. Denk aan technische requirements als “de game moet soepeler draaien op smartphones”. Dat kan invloed hebben op de oplossingsrichting die je kiest.
  • Ontwerpen: als programmeur moet je, voordat je begint met ontwikkelen, een goed beeld hebben van hoe je een nieuwe feature gaat implementeren. Voor ingewikkelde features kan je dit ontwerp gedocumenteerd worden (in tekst of UML). Vervolgens kan er ook met andere programmeurs overlegd worden of dit de juiste aanpak is.
  • Ontwikkelen: een groot deel van de werkzaamheden is het ontwikkelen van nieuwe features voor serious game projecten. Je schrijft codes voor het nieuwe idee en zorgt voor de implementatie in het spel.
  • Testen en verbeteren: een belangrijk onderdeel van het werk als game programmeur is het opsporen van problemen in de code om deze vervolgens op te lossen. Grendel Games vindt het belangrijk dat het programmeerwerk goed in elkaar zit en herbruikbaar is. Later in dit artikel vertellen we meer over wat dit precies inhoudt.

  • Onderhouden: de nieuwe feature ontwikkelt, getest en verbeterd. Om te zorgen dat de code goed blijft functioneren moet deze van tijd tot tijd onderhouden worden. Het kan namelijk zijn dat de code niet goed meer werkt bij de implementatie van een nieuwe code.

Naast het werken aan nieuwe gameplay features houd je je ook bezig met het ontwikkelen van tools die de eindgebruiker niet ziet. Dit zijn tools die de ontwikkeling van nieuwe features makkelijker maken. 

Wat voor type game programmeurs heeft Grendel Games?

Er zijn tientallen types game programmeurs. Vooral grote organisaties hebben een groot aantal verschillende game programmeur functies, zoals A.I. programmeurs, graphic programmeurs, audio programmeurs en nog veel meer. Bij Grendel Games houden we het simpel. We maken onderscheid tussen twee type game programmeurs: gameplay programmeurs en engine/systeem programmeurs.

  • Gameplay programmeur: als game programmeur met een focus op gameplay features ben je bezig met het maken van functionaliteiten die de eindgebruiker ziet. Je houdt je bezig met het ontwikkelen, testen, verbeteren en onderhouden van gameplay features. Ook werk je veel aan het verbeteren van interactie met gebruikers: verfijnde aanpassingen in de code om de spelervaring te verbeteren. Een voorbeeld hiervan is ‘Coyote time’ in platformspellen. Dit concept wordt hier uitgelegd. Als gameplay programmeur kun je je verplaatsen in de doelgroep en weet je welke trucs je toe kunt passen om te zorgen dat de game fijn aanvoelt.
  • Engine/systeem programmeur: dit type game programmeur houdt zich meer bezig met het werk ‘onder de motorkap’. Je ontwikkelt complexe systemen die het makkelijker maken om nieuwe gameplay features te ontwikkelen. Ook zorg je ervoor dat games vloeiend draaien en dat de ontwikkeling van nieuwe functionaliteiten sneller verloopt. Grendel Games maakt veel gebruik van de Unity game engine en deze voldoet voor veel games die wij maken. Toch komt het vaak voor dat er een aanpassing of toevoeging moet komen in de engine voor een nieuwe gameplay feature. Als technische game programmeur zoekt jij uit wat er nodig is om alle plannen voor een game te realiseren. Je bent analytisch en kunt goed in structuren denken. Je weet hoe je nette code schrijft en systemen zo bouwt dat ze ook voor andere toepassingen herbruikbaar zijn.

Dit zijn de twee type game programmeurs die het meest voorkomen binnen Grendel Games. Omdat wij een klein bedrijf zijn zoeken we vaak programmeurs die met beide varianten uit de voeten kan. Met andere woorden: je hebt een basiskennis in het maken van gameplay features en complexe systemen en bent gespecialiseerd in één van de twee. 

Wat maakt een programmeur goed?

Als je dit artikel leest is de kans groot dat je momenteel een studie als game designer volgt of als afgestudeerde op zoek bent naar een baan als (game) programmeur. Je hebt veel theoretische kennis opgedaan en waarschijnlijk ook al verschillende games gebouwd. Super goed! In deze paragraaf willen we je meenemen in de vaardigheden die, naar onze mening, een game programmeur goed maakt. 

Allereerst vinden wij het enorm belangrijk dat code niet alleen goed, maar ook netjes geschreven is. Een game kan ontzettend gaaf zijn, maar dat betekent niet dat de code ook goed geschreven is. Een nette code is onderhoudbaar, leesbaar en herbruikbaar. Een principe dat wij toepassen bij het schrijven van code is DRY (Don’t Repeat Yourself). Wanneer dit principe goed wordt toegepast kan de code herbruikt worden zonder deze opnieuw te hoeven schrijven. 

Een goede programmeur maakt dingen niet ingewikkelder dan ze zijn. Twee principes zijn daarbij belangrijk. De eerste is KISS: Keep It Stupid Simple. Dit houdt in dat het verstandig is om code zo eenvoudig mogelijk te schrijven om eventuele problemen te voorkomen. Daarnaast kennen we ook YAGNI, wat staat voor ‘You Aren’t Gonna Need It. Programmeurs zijn vaak perfectionisten. Nog even dat extra stukje code schrijven om een feature perfect te maken! Maar is het wel nodig? Het YAGNI principe noemt dat je een nieuwe functionaliteit pas moet maken als deze ook echt nodig is.

Planmatig werken en analytisch denkvermogen helpt om als programmeur sneller te werken en betere resultaten te halen. Stel: je hebt vorige maand een code geschreven voor een nieuw level en deze functioneert naar behoren. In de afgelopen vier weken is de game uitgebreid met nieuwe features – dus ook nieuwe code – en plotseling werk de code van vorige maand niet meer. Een goede programmeur weet een probleem snel te achterhalen door een actieplan op te stellen en het probleem op te lossen.

Als je als game programmeur een goede kennis van wiskunde hebt, heb je een voorsprong op de rest. Met name kennis van vector-wiskunde komt goed van pas als game programmeur. Bij het programmeren van games komen vaak situaties voor waarbij er een 2D of 3D ruimte is en de speler een gelimiteerd gezichtsveld heeft. Er moet dan berekend worden of een vijand bijvoorbeeld in het gezichtsveld staat en de speler in staat is om op de vijand te schieten. Kortom: wiskundekennis = bonuspunten!

Sommige dingen wordt je pas goed in met ervaring. Als je op dit moment nog studeert of net klaar bent met je studie heb je waarschijnlijk nog niet heel veel ervaring. Dat is niet erg. We moeten ergens beginnen! Toch merken we dat een game programmeur met ervaring niet alleen problemen snel kan opsporen en oplossen, maar ook weet te voorkomen door code goed te ontwerpen en te structureren. In de volgende paragraaf geven we meer uitleg over hoe je je portfolio kunt uitbreiden en meer ervaring krijgt als game programmeur.

Hoe kan je jezelf verbeteren als game programmeur?

Je weet nu wat welke type game programmeurs er zijn binnen Grendel Games en wat een game programmeur goed maakt. Maar natuurlijk wil je ook weten hoe je jezelf kan verbeteren. In deze paragraaf geven we daar antwoord op. Kort samengevat zijn er twee dingen die je doorgaans moet doen: proberen en leren (van anderen)!

Daag jezelf uit met complexe projecten

Zoals net al omschreven is ervaring belangrijk als game programmeur. Hoe meer games je hebt gemaakt en hoe meer problemen je hebt ervaren (en opgelost), hoe beter je wordt! Wat ook helpt is dat je ervaring hebt met complexe games waar meer programmeerwerk voor nodig is. Een endless-runner game (zoals het dino-spel van Google) is een speltype waar weinig programmeren voor nodig is. Er zijn namelijk weinig gebeurtenissen in het spel. De snelheid in het spel is constant en er is één level. Er is één knop nodig die de dino de enige beweging laat maken om verder te komen in het spel, namelijk: springen.

Wij adviseren om jezelf echt uit te dagen. Probeer een game te programmeren waar verschillende opeenvolgende gebeurtenissen geprogrammeerd moeten worden. Een game als Tetris is al een behoorlijke stap vooruit omdat de code voor dit spel een stuk complexer is. Een blokje valt, er kunnen blokjes gecombineerd worden, er moeten blokjes verdwijnen, vervolgens moet het originele blokje wellicht verder omlaag vallen en mogelijk moet er ook een complete rij verdwijnen. Allemaal invloeden als gevolg van één druk op de knop door de speler. 

Een ander voorbeeld van een speltype dat complexer is om te maken zijn RTS games. Denk aan Age of empires of Command and Conquer. Ook hier vind je meer bewegingsmogelijkheden en objecten – zoals gebouwen, bomen en grondstoffen – die het moeilijker maken om te programmeren. Wij adviseren dus om te proberen zulke games te maken. Als je hiermee aan de slag gaat hoeft het grafisch niet eens perfect te zijn. Je mag best gebruik maken van gratis assets of het spel voor 90% uit grijze kubussen laten bestaan. Daarnaast hoef je ook niet een compleet spel te bouwen. Je kan ook een deel ervan maken, zoals A.I. of pathfinding in de vorm van een demo. Als de code erachter maar klopt.

Leer van anderen: lees en praat over het programmeren van games

Je hoeft het wiel niet opnieuw uit te vinden! De programmeurs binnen Grendel Games hebben ontzettend veel geleerd door ervaringen met elkaar te delen en de discussie aan te gaan. Deel daarom je werk ook met anderen en vraag wat ze ervan denken. Je zult merken dat je tot nieuwe ideeën komt en betere code gaat schrijven.

Een andere manier om kennis op te doen is om artikelen en video’s te bestuderen. Er is ontzettend veel beschikbaar op internet. Om je een start te geven hebben we een lijst samengesteld met onze favoriete artikelen/video’s. De volgende onderwerpen zijn erg leerzaam:

  1. Separation of Concerns (praktisch uitgelegd in een video)
  2. Seperation of Concerns (een goede, meer diepgaande uitleg aanvulling op de video)
  3. Don’t repeat yourself
  4. Serie van 13 video’s over verschillende onderwerpen

Wat is er nodig voor een goede sollicitatie als game programmeur?

Ben je op zoek naar een baan als game programmeur of sta je op het punt om een sollicitatie op te sturen? Kijk dan goed naar wat er gevraagd wordt in de vacature. Ook Grendel Games heeft soms vacatures beschikbaar als game programmeur. Dat geldt ook voor een stageplek. Bekijk onze vacaturepagina voor meer informatie.

Bij Grendel Games vragen we om de volgende onderdelen in je portfolio:

  • CV + motivatiebrief. Laat daarin ook weten wie je bent, wat je passies zijn en wat jouw specialiteit is. Denk terug aan paragraaf twee: wat voor type game designer ben jij of wil jij worden?
  • Een representatief portfolio. Dat houdt in dat de projecten die je noemt gelijkwaardig zijn aan je huidige vaardigheden en ervaringsniveau. Heb je 4 jaar geleden voor een schoolproject een code geschreven voor een game en denk je dat je dezelfde code vandaag de dag veel beter kan schrijven? Neem hem dan niet mee in je portfolio. Laat je beste werk zien!
  • Laat code zien! Geef niet alleen een uitleg over de game of wat jij gemaakt hebt, maar laat ook zien welke code jij geschreven hebt.
  • Randvoorwaarden: was het een groeps- of individueel project? Hoeveel tijd had je voor het project? Wat was jouw verantwoordelijkheid?

Als laatste willen we meegeven dat iedereen op een andere manier code schrijft. De standaarden voor code (zoals de lijst met artikelen uit de vorige paragraaf) zijn simpelweg meningen van specialisten. Houd je je niet aan deze standaarden en schrijf jij code op een andere manier? Licht dan toe waarom je het op die manier doet en wat het voordeel daarvan is.

tim-laning

We hopen dat dit artikel je op weg heeft geholpen in de voorbereiding om een baan of stage als game programmeur. Heb je nog vragen? Neem dan gerust contact met ons op!

Deel deze post op:
TwitterLinkedInFacebook