Game maken met ChatGPT: een RPG in EarthBound-stijl in één avond

Uit een prompt van 147 woorden haalden Codex en GPT-6 Astra een RPG in EarthBound-stijl, waarvan de hele kaart in één keer wordt gegenereerd en daarna in lagen en collisions wordt opgeknipt. In zes en een half uur kreeg Clairbois er 15 kaarten, 12 kamers, 12 muziekstukken en zes quests bij.

Game maken met ChatGPT: een RPG in EarthBound-stijl in één avond
Kort antwoord

Codex, de code-agent van OpenAI die je met een ChatGPT-abonnement gebruikt, bouwde met GPT-6 Astra een RPG voor muis en controller, met gegenereerde decors, sprites, portretten, geluiden en twaalf muziekstukken. Het project vergde tien beurten, 3 u 05 min werktijd van de agent en omgerekend 65 $ tegen API-tarief. Vier van mijn tien berichten meldden een fout, van de logica van de huizen tot de collisions.

Codex, de code-agent van OpenAI die ik met mijn ChatGPT-abonnement gebruik, schrijft de bestanden, voert de commando’s uit en genereert de afbeeldingen, zonder enig kopieer- en plakwerk. Op 13 september 2026 vroeg ik hem met GPT-6 Astra om een RPG in de stijl van EarthBound, de game van Ape en HAL Laboratory die in 1994 op de Super Nintendo verscheen. Alles stond in één prompt van 147 woorden.

Voor de Dune 2000-kloon had ik drie dagen lang met kleine verzoeken gewerkt. Deze keer legde de prompt meteen een methode voor het decor op, en het prototype stond er in één avond.

Clairbois speel je hieronder, met muis, toetsenbord of controller. De 56,7 MB van de game wordt pas geladen na je klik.

Clairbois : le RPG façon EarthBound de Codex et GPT-6 Astra

La version 04.3 de Clairbois, telle que Codex l'a laissée le 13 septembre 2026. Souris, clavier ou manette, le premier geste active le son. Dans cette version intégrée, la sauvegarde ne dure que le temps de la page.

Protocol

Construit avec l'application Codex et le modèle gpt-6-astra en effort xhigh, le 13 septembre 2026 : 10 tours, 3 h 05 min de travail de l'agent. Fichiers du prototype servis tels quels, sans les pages d'audit ni les sources des images.

ACodex · GPT-6 Astragpt-6-astra (xhigh)

Het project draait in een geïsoleerde sandbox (iframe sandbox en CSP): geen toegang tot de site, cookies of je sessie. Er wordt niets geladen voordat je klikt.

Apart openen
Uitgever
OpenAI
Model
gpt-6-astra (xhigh)
Tool
Codex, application de bureau
Datum
2026-09-13
Duur
3 h 05 min de travail sur 10 tours
Invoertokens
35 405 000, dont 33 769 472 lus en cache
Uitvoertokens
301 285, dont 114 284 de raisonnement
Kosten
abonnement ChatGPT (≈ 65 $ au tarif API)
Projectgrootte
56,7 Mo, 85 fichiers
Opmerkingen
Clic pour marcher et parler, flèches ou ZQSD, E pour interagir, X pour le menu, J pour le journal, M pour la carte, P pour la pause. Une manette standard est reconnue après un premier appui. 1 515 contrôles géométriques au 14 septembre 2026.

Een kaart in één keer gegenereerd en daarna opgeknipt

Hier is die prompt, vertaald uit het Frans en zonder tikfouten.

Genereer een game zoals EarthBound, in HTML, CSS en JavaScript. Ik wil dat je dezelfde art direction overneemt als de originele game, met dezelfde UI, voor gameplay met muis/controller. Daarnaast wil ik dat je de personages genereert, met hun sprites en bewegingen, en ook de decors en de SFX. Voor de decors en de kaart wil ik dat je de hele kaart in één keer genereert, die analyseert en via een systeem van lagen andere afbeeldingen genereert om eroverheen te leggen, met het idee dat een personage dat achter een boom of een hek loopt er ook visueel achter staat. De volledige kaart wordt wel in één keer gegenereerd en gebruikt dat lagensysteem. Je detecteert dus de collisions en doet een handmatige mapping op basis van het gegenereerde resultaat, zodat het personage niet door het decor heen loopt. Maak een snel prototype van de game.

16-bitgames bouwen hun kaarten op uit tegels. Hier is het decor één enkele illustratie, en moet de engine weten wat er vóór de held komt en waar hij tegenaan loopt. Astra koos Phaser 3.90 en steunde op de plugin Game Studio van OpenAI, op imagegen voor de afbeeldingen en op sound-effects voor de geluiden. Daarna kondigde hij een klein buurtavontuur aan, met verkennen door te klikken, dialogen en turn-based gevechten.

De personages, decors en geluiden zijn gemaakt voor het prototype, dat de naam Clairbois kreeg. De held, Nino, komt Lila, Marcel, Iris en Rémi tegen en neemt het op tegen een paddenstoel genaamd Myco.

Zesentwintig minuten voor een eerste prototype

Astra genereerde de kaart van de buurt, bepaalde waar de vier bomen, de hekken, de gebouwen en de vijver stonden, en tekende daarna de collisions op basis van hun werkelijke posities. De bomen blokkeren ter hoogte van de stam, en het gebladerte komt vóór of achter de held, afhankelijk van zijn positie. De voorgrondlaag kwam binnen met een getekend dambordpatroon in plaats van transparantie, een fout die Astra zelf opmerkte en herstelde.

Voor de geluiden ontbrak aanvankelijk de sleutel van ElevenLabs, dus maakte Astra effecten via synthese. Tweeënhalve minuut later plakte ik de sleutel in het gesprek, en zeven effecten van ElevenLabs vervingen de synthese. De beurt eindigde na 26 min 6 s met 24 poses van personages, een volledige doorloop tot aan het gevecht en 35 geslaagde controles, waaronder een controller die via de Gamepad API werd gesimuleerd. Het opgeleverde archief bevat geen enkele sleutel.

Huizen zonder logica, en dan een bouwtekening

Mijn tweede verzoek voegde het interieur van de drie huizen toe, met meerdere kamers, bedden waarin de held onder de dekens kruipt zoals in Alundra of Zelda, meer quests en nieuwe gebieden. Na vierenhalve minuut heb ik het onderbroken. Mijn volgende bericht legde een regel vast. Elke kamer zou een eigen afbeelding krijgen, en de plattegronden zouden een bouwkundige logica volgen. Een trap die je links neemt, moest boven ook links uitkomen, en een deur moest aan beide kanten van de muur op dezelfde plek zitten.

Astra schreef eerst de plattegrond van de drie huizen uit, twee kamers op de begane grond en twee op de verdieping, en genereerde daarna de twaalf kamers afzonderlijk. De beeldgenerator verschoof sommige openingen. Astra lijnde elke afbeelding opnieuw uit op de coördinaten van de gemeenschappelijke plattegrond, een logisch vlak van 512 × 512 per kamer, en paste dezelfde transformatie toe op de collisions en de lagen. De 28 doorgangen tussen kamers hebben elk een verbinding terug, in beide richtingen getest.

Daarna vroeg ik om een audit van de huizen. Astra vond plattegronden die van huis tot huis bijna identiek waren, te lege kamers en trappen op de verdieping die de indruk wekten naar boven te gaan. Hij tekende de huizen opnieuw als een gezinswoning, een kruidenierszaak met magazijn en een woning op de verdieping, en het huis van een klokkenmaakster rond een werkplaats, met een wenteltrap. De generator voegde opnieuw deuren toe die niet op de plattegrond stonden. Die werden gecorrigeerd voordat de collisions werden vastgelegd, en er werden 158 lagen geëxporteerd. De audit, verspreid over twee beurten, kostte 14,95 $ tegen API-tarief.

Eén schaalfout bleef met het blote oog zichtbaar. De held behield zijn buitenformaat naast meubels die veel groter waren. In de huizen is hij nu ongeveer 62 pixels hoog, twee keer zo groot als buiten, net als de bewoners.

Lagen en collisions, de twee bugs die ik opmerkte

In beurt 9 toonde een screenshot de held met afgesneden benen op vrije grond, in het bos. Astra reproduceerde die afsnijding tot op de pixel. De laag van de boom gebruikte een ruwe omtrek waarin ook een driehoek gras viel. Op de gemelde positie bedekte de oude laag 89 pixels van het personage, de nieuwe bedekt er geen enkele. De acht bomen van het bos en de boomgaard kregen gedetailleerde maskers, opgeslagen als pixelstroken in js/occlusion-data.js.

In beurt 10 kon ik op sommige decorelementen gaan staan. Voor het bord op mijn screenshot was geen enkele collision gedefinieerd, en Astra vond nog meer vergeten elementen bij de rotsen, de struiken, de wortels en de bosranden. Hij verbeterde ook de pathfinding, die na een klik een route kon voorstellen die de hoek van een obstakel afsneed. Een savegame op een plek die inmiddels massief is geworden, zet de held nu terug op de dichtstbijzijnde vrije grond.

De geometrische controles van het project start je met npm test, zonder dependencies te installeren. Dit is hun output, opnieuw gedraaid op 14 september:

json
{
  "maps": 15,
  "rooms": 12,
  "portalDirections": 28,
  "reachableInteractions": 55,
  "boundaryMovementSamples": 22023,
  "passed": true,
  "failures": [],
  "checks": 1515
}

De 1.515 controles slagen in 2,9 seconden, met 17 meetpunten voor grond en gebladerte en 54 decorcontroles. De README die Astra schreef, vermeldt dat deze geometrische steekproeven niet bewijzen dat elke pixel van het decor klopt.

Twaalf muziekstukken en zeven portretten

In beurt 7 vroeg ik om muziek die verandert met de situatie en de omgeving. Astra schreef twaalf prompts en genereerde twaalf nummers met de muziek-API van ElevenLabs en het model music_v2, voor het dorp, de drie huizen, het bos, de boomgaard, twee gevechten, rusten in een bed, de droom, de overwinning en de nederlaag. De tien sfeerthema’s lopen in een lus met een fade van 350 ms, locatiewissels krijgen een fade van 850 ms, en tijdens dialogen gaat de muziek zachter.

Veertig audiocontroles slaagden in Chrome. Ze controleren het signaal, de lussen en de overgangen, en de README vermeldt dat ze luisteren niet vervangen als het erom gaat de muziek zelf te beoordelen.

De portretten kwamen in beurt 8. Astra liet imagegen zeven portretten in pixelart genereren op basis van de bestaande sprites, met behoud van kapsels, kleding en kleuren. Ze staan naast de tekst van elk personage, en het portret van de held verschijnt in de menu’s met zijn level en zijn levens- en krachtpunten. De vensters houden stand tot 320 pixels breed.

Tijd, tokens en kosten

Meting Clairbois
Periode 13 september, van 16.53 tot 23.23 uur (Parijse tijd)
Werktijd van de agent 3 u 05 min over 10 beurten, waarvan 2 onderbroken
Verstuurde berichten 10, waarvan 2 met een screenshot
Antwoorden van het model 269
Tool-aanroepen 257
Contextcompacties 4
Tokens input 35.405.000, waarvan 33.769.472 uit cache gelezen (95,4%)
Tokens output 301.285, waarvan 114.284 voor redeneren
Kosten tegen API-tarief 65,19 $

Tegen het tarief dat op 14 september 2026 op OpenRouter is opgevraagd, hetzelfde als voor de Dune 2000-kloon, verdeelt het totaal zich over 16,36 $ niet-gecachete input, 33,77 $ cache en 15,06 $ output. Mijn ChatGPT-abonnement rekent dit verbruik af als quotum, het bedrag dient als referentie. Hetzelfde model neemt het met een three.js-scène op tegen Claude Fable 5.1 in onze vergelijking van de twee agents.

Twee projecten, twee manieren om de agent aan te sturen

Meting Dune 2000-kloon Clairbois
Genre realtime-strategie verkennings-RPG
Eerste prompt 66 woorden en een referentierepository 147 woorden en een opgelegde methode
Beurten 46 10
Berichten 54 10
Werktijd van de agent 11 u 16 min 3 u 05 min
Kosten tegen API-tarief 196,00 $ 65,19 $
Kosten per werkuur 17,40 $ 21,12 $
Geautomatiseerde controles 122 Node-tests, 24 browserscenario’s 1.515 geometrische controles

De lange prompt vergde vijf keer minder berichten, tegen hogere kosten per werkuur. Het model antwoordde vaker, 1,45 keer per minuut tegenover 1,27, met iets minder cache, 95,4% tegenover 96,8%. De twee games verschillen in genre en in omvang, dus uit deze cijfers blijkt niet dat de ene methode beter is dan de andere.

Wat je moet onthouden

  • Een hele kaart in één afbeelding genereren werkt, op voorwaarde dat je daarna elke collision en elke laag laat uittekenen en ze vervolgens test.
  • Bij interieurs schrijf je de plattegrond vóór de eerste afbeelding. Deuren en trappen uitgelijnd, 28 doorgangen gecontroleerd.
  • De beeldgenerator verschuift openingen, tekent dambordpatronen en voegt deuren toe. Controleer elke afbeelding voordat ze in de game komt.
  • Vier van mijn tien berichten meldden een zichtbare fout die de automatische tests niet hadden opgemerkt.
  • Twaalf muziekstukken en zeven portretten kostten twee beurten en 10,81 $ tegen API-tarief.

Veelgemaakte fouten

Alle kamers genereren zonder gemeenschappelijke plattegrond De eerste kamers hadden geen enkele logica tussen de verdiepingen. Laat de plattegrond uitschrijven, met deuren, trappen en aankomstzijden, nog vóór de eerste afbeelding, zoals hier architecture.json.
Vertrouwen op de transparantie van een gegenereerde afbeelding De voorgrondlaag kwam binnen met een getekend dambordpatroon in plaats van een alfakanaal. Controleer de transparantie voordat je de lagen uitsnijdt.
Lagen uittekenen met een ruwe polygoon Een boomcontour omvatte ook gras en bedekte 89 pixels van de benen van de held. Gebruik maskers op pixelniveau die de grond en de schaduwen uitsluiten.
Collisions vastleggen zonder volledige inventarisatie Een bord dat in de kaart was getekend, had geen collision. Loop elk zichtbaar object na met de debugweergave, hier F2, en een routetest.
Gegenereerde muziek beoordelen op de controles De 40 audiocontroles checken het signaal, de lussen en de fades, niet de muzikale kwaliteit. Luister naar de nummers voordat je ze houdt.

CodexGPT-6 AstraJavaScriptJeu vidéoPhaser

Damien Flandrin Webdeveloper sinds 2010, maker van Gekkode en Email Impact. Elk artikel wordt vóór publicatie getest op een echt project. Contact
Nieuwsbrief

Nieuwe tests, tutorials en projecten, per e-mail.

Reproduceerbare tests, geversioneerde code, gedateerde resultaten. Nooit spam.