Full Blast er dataspillet mitt: du løper, skyter og overlever bølge etter bølge, med følelsen fra spillene jeg selv vokste opp med. Jeg begynte for hånd i romjulen 2025, rett og slett fordi det å lage spill er noe av det gøyeste jeg vet. Nå bygges hele spillet på nytt i spillmotoren Godot, for at en drøm skal bli mulig: tusenvis av fiender på skjermen samtidig, på en liten spillkonsoll.
Spillet
Løp, skyt, overlev
Bølge etter bølge med glødende fiender strømmer inn i en neonarena; innimellom kommer en boss. Du glir, hopper og kaster deg gjennom mengden, plukker opp krystaller og blir sterkere, helt til du dør og vil prøve igjen med en ny plan. Og hele verdenen pulserer i takt med musikken.
Drømmen
Tusenvis av fiender på en Switch
Nettleserversjonen klarer et par tusen fiender. Så sier prosessoren stopp, fordi hver fiende må flyttes én og én, seksti ganger i sekundet. Drømmen er tusenvis samtidig, på en maskin så beskjeden som en Nintendo Switch. Da må svermen over på grafikkortet, som er bygget for akkurat sånt. Det er hele poenget med Godot-versjonen.
Porten er en gjenoppbygging med én streng regel: følelsen skal overleve flyttingen. Hver tallverdi fra originalen ligger i en egen fasitfil: hvor fort du løper, hvor høyt du hopper, hvor hardt et skudd treffer. Testene sjekker i hver eneste kjøring at den nye versjonen holder fasiten. Avvik fanges av en maskin, ikke av magefølelse.
%%{init: {"themeVariables":{"fontFamily":"Instrument Sans","fontSize":"14px"},"flowchart":{"useMaxWidth":true,"nodeSpacing":22,"rankSpacing":36,"padding":6,"diagramPadding":4}}}%%
flowchart TB
O["Originalen i nettleseren"] -- "fart, hopp, skade" --> F["Fasitfiler"]
G["Godot-porten"] --> T["Hver testkjøring"]
F --> T
T -- "avvik" --> S["Maskinen sier ifra"]
T -- "fasiten holder" --> V["Videre"]Og så skjedde det morsomste: den nye versjonen vokste forbi originalen.
Det nye
Tre ting nettleseren aldri fikk
Musikken ble spilldata
Soundtracket ligger inne i spillet, så tempoet er kjent på forhånd. Det er målt over hele sporet, nøyaktig 105 slag i minuttet, og bakt inn i spilldataene som et taktrutenett. Robotfiendene marsjerer diagonalt til basstromma i samlet flokk, og bossenes missiler danser på samme takt. Nettleserversjonen kunne bare lytte til musikken og reagere i etterkant; Godot-versjonen vet når neste slag kommer, før det kommer. Og fordi bevegelsene styres av rutenettet og ikke av lyden, spiller et testløp helt likt hver gang.
Roboter som spilltestere, og en bot som lærte av en bot
Spillet tester seg selv: roboter spiller runde etter runde og måler hvor langt de kommer. Én av dem er håndskrevet og flink. Den jakter på powerup-kasser og bruker det den finner. Så trente jeg et lite nevralt nett på opptak av den flinke, og det lærte seg kassejakten bare ved å se på. En bot som har lært av en bot. Og vil jeg se dem spille, åpner et eget verktøy en vegg av vinduer der botene spiller live, med alle effektene på.
%%{init: {"themeVariables":{"fontFamily":"Instrument Sans","fontSize":"14px"},"flowchart":{"useMaxWidth":true}}}%%
flowchart TB
H["Håndskrevet bot"] -- "runde etter runde" --> R["Opptak av løpene"]
R -- "treningsdata" --> N["Lite nevralt nett"]
N -- "lærte kassejakten" --> S2["Spiller selv"]
H --> W["Vegg av vinduer:<br/>botene spiller live"]
S2 --> WSpillet måler hvor godt løpet ditt gikk
Etter hver etasje regner spillet ut en rating, samme idé som sjakk bruker, og anbefaler neste etasje: vanskelig nok til å være spennende, aldri håpløs. Formelen er ikke gjettet. Den er kalibrert på hundrevis av robotrunder, der tre boter med ulikt ferdighetsnivå spilte de samme etasjene med de samme tilfeldighetsfrøene.
Historikk
Fra romjul til taktfaste roboter
Fem punkter, hentet fra commit-historikken.
- Romjulen 2025Første commitSpillet begynner for hånd i nettleseren, mellom juledagene, i Three.js og TypeScript.
- 25. mai 2026Godot-porten starterAI-flåten setter i gang gjenoppbyggingen: fundament, spillbar bit og arenaen på plass samme dag. Planen er lagt: svermen skal bo på grafikkortet.
- 4. juni 2026Svermen på grafikkortetCompute-versjonen av svermen kobles inn i det levende spillet, foreløpig som tilvalg bak et flagg.
- 12. juni 2026Musikken blir spilldataTaktrutenettet på 105 BPM bakes inn: missilene danser, og robotfiendene marsjerer til basstromma.
- 14. juni 2026Bot lærer av botDen klonede boten lærer kassejakt av den håndskrevne læreren, og rating-systemet som anbefaler neste etasje lander samme dag.
Tallene
Talt i historikken
Tallene er talt i git-historikken og i spillets egne dokumenter; kilden står under hvert tall.
Kildercommit:b233b2bcommit:bf76966commit:6da3813commit:d388da9commit:80831dc
Ærlig talt
Hvor porten faktisk står
Godot-versjonen er spillbar fra start til slutt på PC: bevegelse, kamp, bosser, progresjon, effekter og lyd. Men målet er ikke nådd. Grafikkort-svermen er bygget og koblet inn, men står fortsatt som tilvalg bak et flagg. Noen Switch finnes ennå ikke, verken devkit eller konsollport. Siste Godot-commit er fra midten av juni; der står porten nå.
Jeg lar det stå sånn. Et spill som er spillbart hele veien og ærlig om hva som gjenstår, er en bedre historie enn et som later som det er ferdig.