Sådan lavede jeg Who Killed the Narrator?
Who Killed the Narrator? er ude. Det er et kort noir-komisk point-and-click-spil: Rainport, 1947, og stemmen, der beskriver alting, er blevet myrdet midt i et ord. Du kan spille det i browseren eller downloade det til Linux og Windows – du bestemmer selv prisen. Traileren ligger på YouTube.
Det her indlæg handler om, hvordan det blev lavet. Ingen spoilere om, hvem der gjorde det. Den korte version finder du på projektsiden.
Idéen
Adventurespil har en fortæller. Du klikker på en lampe, og nogen fortæller dig, at det er en lampe – som regel med en vittighed. Jeg ville lave et spil, hvor den stemme er en karakter, og så tage den væk.
Så spillet har tre fortællere, én pr. akt. Først den oprindelige: selvglad og for det meste i sin gode ret. Så ingen. Og så en bedrager, der lyder præcis som ham, synes, du er vidunderlig, og lyver.
Den tavse akt blev den centrale mekanik. Når ingen beskriver verden, er hver eneste genstand et "?". Du kigger på den og vælger selv beskrivelsen, og den sande bliver til et spor. Sporene kommer i en notesbog, hvor du forbinder to af dem for at se, hvad de tilsammen giver. Finalen er en fortællerduel, live i radioen, i ånden fra Monkey Islands fornærmelses-fægtning: Bedrageren fortæller dig op i et hjørne, og du retter ham med beviser.
Hvorfor Godot
Jeg sammenlignede Godot, en webstak med Phaser, Unity med Adventure Creator, Adventure Game Studio og Visionaire. Genreværktøjerne gør de sædvanlige dele nemme, men det her spil bøjer selve brugerfladen: Beskrivelser forsvinder, fortælleren skifter stemme, og spilleren skriver teksten. Godot gav mig fuld kontrol, kører native på Fedora og eksporterer til Linux, Windows og web. Så det blev Godot 4.7.
Der findes ikke noget point-and-click-framework, så gang, hotspots, inventar, dialog, notesbogen, gemte spil og hints er alt sammen håndbygget. Al teksten ligger i JSON-filer: rum, genstande, samtaler, notesbogen, historiens scener og hints. Hver beskrivelse findes tre gange – én pr. fortæller.
Udseendet
Grafikken er genereret lokalt med Z-Image Turbo (via SwarmUI) på en bærbar med et RTX 3070 og senere en stationær med et RTX 5070 og derefter klippet ud og placeret i hånden. Et par ting, jeg lærte:
- Rum bygges af dele. Et helt rum i én rendering havde aldrig møblerne der, hvor spilleren skal gå. Så hvert rum er et tomt diorama plus rekvisitter, der er renderet én ad gangen og placeret i editoren.
- Rekvisitter kræver et lavt kamera. Almindelige isometriske rekvisitter ser ud, som om de tipper op mod rummene. Når jeg bad om et kamera cirka 15° over gulvet, kom de til at stå på det.
- Greenscreen, kun matte overflader. Rekvisitterne renderes på chroma key-grønt og keyes ud. Blankt metal spejler det grønne og forsvinder sammen med det, så alt bliver bestilt i mat.
- Faste seeds holder karaktererne til at være den samme person. Dash, Gus, Lola og resten blev låst til et seed og et outfit, og deres blink og talende munde er nye renderinger af det låste billede.
- Modellen vil ikke tegne et skridt. Ikke engang med høj kreativitet. Så Dashs gang er hans stående positur med den ene fod løftet og flyttet frem under frakken.
Oven i det kommer varmt lampelys, skygger fra persienner, en tilt-shift-sløring og en farvekorrektion, der får rummene til at ligne små legetøjskasser.
Lyden
Hver eneste replik har stemme – over 600 optagelser i alt – lavet med Kokoro, der kører lokalt. Hver karakter blev castet efter gehør ud fra en liste med kandidatstemmer. Replikkerne gemmes efter en hash af stemmen og teksten, så når jeg retter en replik, bliver kun den indspillet igen. Fortællerne er i radioen, så deres stemmer er båndbegrænsede og en anelse knasende.
Effekterne og musikken er lavet med Stable Audio Open, tre bud på hver, udvalgt efter gehør. Regnen lyder dæmpet, når du er indenfor. Musik og effekter skrues ned, mens nogen taler. Lolas plade sendes gennem et filter, der får den til at lyde som en slidt 78'er på en grammofon, inklusive ridser. Og i Rainport skal du lægge mærke til regnen.
Test
En smoke test kører headless og tjekker spillets logik: over 600 tjek, herunder at hver akt spilles igennem til "The End". En anden driver spiller spillet i et vindue fra introen til slutningen og tager et skærmbillede ved hvert vigtigt punkt. De skærmbilleder blev til billederne på butikssiden, og traileren er klippet ud fra dem med spillets egne stemmer og musik.
Bygget med Claude Code
Jeg skrev og byggede spillet med Claude Code: GDScript-koden, værktøjerne til grafik og lyd, testene og udkast til teksterne, som jeg så skrev om. Hver eneste linje har været igennem mindst ét ekstra udkast.
Hvad nu
- Et tjek på rigtig Windows og i Firefox. Hvis noget går i stykker for dig, så sig endelig til i kommentarerne på itch.io.
- En Android-version med touchstyring: tryk for at gå og kigge, hold for at fortryde.
- Dashs anden sag er på tegnebrættet. Den hedder The Day It Stopped Raining.
Tak fordi du spillede med. Hvis du gennemfører det, vil jeg meget gerne høre, hvilken fortæller du bedst kunne lide.