Een game binnen het uur ontwikkelen met code en AI

 

 

Online zie je geregeld filmpjes langskomen van mensen die door middel van artificial intelligence, kunstmatige intelligentie, een videospel maken. De uitdaging is om dit in minder dan een uur te doen. Nadat ik, Samuel de Korte, een aantal van deze filmpjes had bekeken, besloot ik om deze uitdaging ook aan te gaan. Lees mijn ervaringen hieronder!

 

De uitdaging

Het doel van de uitdaging is om in een uur tijd een werkend spel te hebben en om dit met AI te maken. Ik heb OpenAI chatGPT model 3 gebruikt voor ondersteuning en Perchance.org voor de afbeeldingen. Sommige mensen slagen er in om een eenvoudig spel af te leveren. Anderen lukt het helaas niet om een goed spel te maken of zij hebben slechts een half-afgemaakt spel, waardoor het niet echt te spelen is. Denk bijvoorbeeld aan het ontbreken van een win voorwaarde of een bepaald doel van het spel.

 

Mijn poging

Ik ging enthousiast van start en het was een leuke uitdaging om te doen. Ik koos voor een eenvoudig spel in de stijl van Space Invaders. Ik heb ChatGPT direct aan het werk gezet door te vragen om zich als een ervaren programmeur te gedragen en door mijzelf voor te stellen als iemand die onervaren is met programmeren. Het voordeel daarvan is dat de AI dan meer uitleg geeft bij alles wat het doet. Daardoor begrijp je beter wat er wordt gecodeerd en waarom ChatGPT een bepaalde keuze maakt.

 

Helaas bleek ik iets te enthousiast te zijn, want Python werkte niet goed op mijn computer. Vervolgens ben ik met de AI gaan troubleshooten om het probleem op te lossen. De AI gaf een bepaalde oplossing en daarmee ging ik aan de slag. Stapsgewijs kwamen we bij de juiste oplossing en vervolgens konden we verder. Nadat Python op de juiste manier geïnstalleerd was, konden we verder met het ontwikkelen van het spel.

 

Een ander probleem waar ik tegen aan liep, was dat de Pygame library niet goed werd aangeroepen. Dit probleem heb ik toen aan de AI voorgelegd en samen zijn we weer stapsgewijs aan de slag gegaan om het op te lossen.

 

De AI heeft ook alle teksten geschreven voor het spel, inclusief de begintekst om de speler aan het spel te introduceren en om het spel te starten. De speler weet op deze manier wat er moet gebeuren om te voorkomen dat je verliest en wanneer je gewonnen hebt. Het leuke is dat ChaptGPT ook een achtergrondinformatie heeft aangemaakt op basis van input die ikzelf heb aangeleverd. Deze moest ik vervolgens wel binnen het scherm laten passen, want dit werd deels buiten het speelscherm weergegeven.

 

Aanvankelijk had ik het spel geprogrammeerd om de hoogste score te behalen, maar dat bleek geen goede uitdaging te zijn. Voor spelers is het niet echt een leuke uitdaging en het spel wordt al snel repetitief. Daarom heb ik ervoor gekozen om de win conditie iets aan te passen. Je moet nu de aarde voor 30 seconden beschermen.

 

Nadat ik een eenvoudig werkend spel had, besloot ik om de uitdaging iets verder te drukken. Ik had de AI gevraagd om tien suggesties voor verbeteringen in het spel aan te dragen. Er werd onder andere gesuggereerd om geluid toe te voegen of om meer varatie in de vijanden aan te brengen. Ik heb een tweede categorie van vijanden geintroduceerd ‘fighters’. Deze zijn langzamer en kleiner dan de standaard vijandelijke schepen, waardoor ze moeilijker te raken zijn en het spel meer variatie heeft. Dit is onder andere terug te zien in de code, doordat de ‘enemy’ en ‘fighters’ op verschillende manieren zijn geprogrammeerd. Qua netheid zal deze code geen prijzen winnen.

 

De code zelf werd eenvoudig door de AI gemaakt. Doordat de code stapsgewijs gemaakt was, moest ik aan de slag gaan om te zorgen dat de verschillende componenten goed in elkaar klikten. Omdat dit niet goed werkte, wilde ik logging verwerken in de code, zodat ik kon zien waarom iets fout ging. Helaas bleek dit lastiger dan verwacht en heb dit laten zitten, omdat er meer tijd in het werkend krijgen van de logs dan dat het qua informatie zou opleveren. Je kan het restant van deze poging in de code terugzien.

 

Uiteindelijk besloot ik om richting een win conditie te werken, want de eindtijd was inmiddels wel verstreken en ik wilde graag een geheel werkend spel hebben. Ik heb het spel sluitend gemaakt door spelers onder andere de optie te geven om te herstarten door middel van de ‘Y’ en ‘N’ knop op het toetsenbord.

 

Alle problemen zijn door middel van AI opgelost of doordat ik workarounds heb bedacht voor bepaalde toepassingen. Aanvankelijk werd er niks getoond wanneer twee schepen een botsing kregen. Ik heb toen twee afbeeldingen gemaakt van explosies om het spel interessanter te maken. Vervolgens heb ik ChatGPT gevraagd om deze afbeeldingen voor twee seconden te tonen voordat het game over menu verschijnt.

 

De uitslag en mijn gedachten

Ik moet toegeven dat het mij niet gelukt is om binnen een uur een goed werkend spel te krijgen. Ik heb de tijd niet exact bijgehouden, maar het heeft ongeveer twee uur geduurd voordat ik een functionerend spel had. Dit had verschillende redenen, allereerst ben ik minder vaardig in Python en moest ik eerst een omgeving hebben waarin het spel kon werken. Hier ging meer tijd in zitten dan verwacht, maar bij toekomstige pogingen zal dit sneller gaan. Pas nadat ik dit geregeld had, kon ik echt aan de slag.

 

Daarnaast moest ik gaandeweg een paar dingen verzinnen om het spel functionerend te krijgen. Vooraf had ik hier niet goed over nagedacht en hierin merkte ik opnieuw de kracht van AI. Als jij vooraf duidelijk weet wat je wilt, kan het je goed helpen. Ik had mijn plan niet helemaal duidelijk en dat zorgde voor vertraging. Ik moest onder andere een nieuwe win-voorwaarde hebben, ik heb een extra categorie vijanden geïntroduceerd en ik wilde dat je het spel kon herstarten. Toch ben ik tevreden met het resultaat. Het was een leuke uitdaging om aan te gaan en de AI heeft mij goed geholpen. Mocht je de code willen bekijken, klik dan op deze link: samueltheshort/starshipshootergame: A simple starship shooter game made with AI (github.com)

 

Prompts:

 

Hoe ik aan de slag ging.

 

 

Doordat ik geen werkende Python omgeving had, heeft ChatGPT mij geholpen bij het installeren ervan.

 

Suggesties van ChatGPT om het spel te verbeteren.
Afbeeldingen van het spel:

 

De introductietekst.

 

Het spel

 

Een botsing tussen twee schepen.

 

 

Ben je net zo enthousiast over coding en AI? Of heb je vragen? Schroom dan niet om even contact met mij hierover op te nemen.

 

Samuel de Korte
Technisch specialist automation
samuel.dekorte@bconn.nl

 

×

Heb je een vraag?

Klik hieronder om ‘m snel te stellen aan ons via WhatsApp!

×