Jack looks for a job: a point-and-click game born on a train

Yesterday, 18 October, my daughter Anna and I were on a TGV from Paris to Brest, coming back to Brittany after a family weekend. A few hours of train, my laptop, and Anna, who is 12, sitting next to me.
It wasn't our first game of the weekend. On the way there, from Brittany to Paris, we had already made one together on the TGV: a Temple Run style game, based on one of the LEGO sets we got on the TGV. So for the way back, Anna wanted a game too, but a different kind: no combat, no arcade mode, something more about thinking. I thought of the old LucasArts point-and-clicks, and then of my colleague Erwan's project, Web-SCUMM. It was the ideal occasion to finally try it.
She came up with a story: Jack, a skeleton with a pumpkin for a head, gets fired just before Halloween and has to find a new job, un nouveau taf. By the time we got to Brittany, Jack had a stingy vampire boss, a Frankenstein mayor who has lost his bolt, a mummy at the job agency and a green blob who swallows everything. And he lived in a game. A real point-and-click adventure, the kind I grew up with, already playable, with ugly placeholder shapes instead of art. Today we added the pixel art, a second episode and a soundtrack, and published it: Jack cherche un taf ("Jack looks for a job"), playable in the browser and on a phone.
We built it with Claude Code, on top of an engine called Web-SCUMM. And let me be clear from the start: this post isn't about a game made despite the AI, it's about what the AI made possible. A 12-year-old's story turned into a playable adventure game between two train stations is exactly the kind of crazy thing these tools let you do now, and I'm still a bit amazed by it.
Web-SCUMM, or how a game becomes data
If you are of a certain age, the words Day of the Tentacle or Monkey Island 2 probably mean something to you. Verbs at the bottom of the screen (Look at, Pick up, Use, Give…), absurd puzzles, characters you remember thirty years later. LucasArts built those games on SCUMM, their in-house engine.
Web-SCUMM is an open-source (MIT) engine for that kind of game, in the browser. It's made by my colleague Erwan (wanoo on GitHub), VP International Growth at Clever Cloud.
What makes it interesting is not that it reproduces the genre, it's how it does it:
- The game is data, not code. Rooms, props, characters, items, dialogues, puzzles and hints are plain TypeScript objects, with no logic in them. A rule is a verb, a target, a condition and a list of commands. That's it.
- Because it's data, it can be checked. A validator finds broken references and things you can see but can't look at. A solver plays the real engine to prove that the game can be finished from New Game. A walkthrough test replays it after every change.
- A visual Studio: the real engine with an editor on top, to place things in a room, edit every line in place, and run the checks after every save.
- It ships as a web game that installs on a phone and plays offline.
- It's made to be written with an AI assistant. The repository has an
AGENTS.mdwith the rules, and skills for Claude Code (/storyboard,/new-room,/new-character…) that follow the engine's method step by step.
That last point is the heart of this story. Anna and I spent our time on what matters, the story, the jokes and the puzzles. Claude Code turned our ideas into rooms, dialogues and puzzles, following the engine's rules, and the engine told us (and Claude) when something was broken. That's how a story imagined at the start of the trip became a game Anna could play before the end of it.
The story of Jack
Jack is a skeleton with a carved pumpkin for a head, inspired by another of the LEGO sets we got on the TGV, the 30717 "Fun Halloween Skeleton". In the game, though, Jack is pixel art, not a toy.
Jack works as a scarer at the haunted manor, Le Manoir Frissonnant. He's very good at his job. Too good: yesterday, a whole coach of tourists ran away screaming. Without paying. So Count Radinoff, a vampire as stingy as he is pale, fires him. Three days before Halloween.
The Count sets the tone from the first line:
« Jack, mon petit. Asseyez-vous. Ah non, pas sur la chaise, elle est neuve. »
"Jack, my boy. Sit down. Ah no, not on the chair, it's new."
And when Jack dares to ask about his severance pay:
« Votre quoi ? Je ne connais pas ce mot. Il n'existe pas en transylvanien. »
"Your what? I don't know that word. It doesn't exist in Transylvanian."
Jack has until the 31st to find a job. The first stop is the village square and Pôle Frousse, the job agency (a pun on Pôle Emploi, the former name of the French public employment service, and frousse, "the jitters"). At the counter, Mme Bandelette, a very, very slow mummy. To build a file, Jack needs an ID photo and a letter of recommendation from the Mayor.
Of course, nothing is simple. The Mayor, Franck Enstein, has lost the bolt of his neck, and his head leans dangerously to one side. The bolt was swallowed by Gloubi, the garbage collector, a big green blob who swallows everything and gives nothing back, unless he's happy enough to burp. And the road to the funfair is guarded by Brigadier Sans-Tête, a headless knight with an unbeatable logic:
« HALTE ! Personne ne passe sans que je le voie ! »
"HALT! Nobody passes without me seeing them!"
He has no head. So he sees nobody. So nobody passes. It's the rules.
At the funfair, Jack tries a few odd jobs to get what he needs: selling cotton candy for Mémé Guimauve, a retired witch, and calming down Pépite, M. Carrousel's little dragon, who is scared of children. He's good at both. And he gets fired from both, because the children are scared of him. Which gives a running gag:
« Troisième licenciement de la journée. Record personnel. »
"Third time fired today. Personal best."
The second episode takes place in the ghost train run by Wolfgang, a werewolf who is an accountant when the moon isn't full. Jack is hired on a trial period, but nothing works: the ghosts are on strike (Ginette the union delegate, Gaston with his chains, and Bouh the intern, who only says "bouh"), the power is out, and nobody knows the ride reopens. That last problem gets solved by Jack's failed photo-booth picture, the one so scary the machine coughed smoke, which becomes the poster. And then comes the Count's revenge, which I won't spoil, except to say that a stingy vampire ends up paying. Twice.
Along the way there are four small minigames in the LucasArts tradition: serving the right colour of cotton candy, stroking a scared dragon very gently, untangling the cables of the electrical panel, and choosing where to hide for the dress rehearsal.
And if you get stuck, you can talk to Mireille, the little spider who lives in Jack's head (she's in the inventory). Her hints go from vague to very precise. Because there's one rule we took straight from LucasArts: you never die, and you never get stuck.
The game is in French, and it's playable on a computer or on a phone in landscape mode.
How we worked
The brief we started with fits in three lines: a small first scope of 3–4 places, pixel art, LucasArts spirit.
The story is Anna's: Jack fired before Halloween, looking for a new job. The Frankenstein mayor, Gloubi and several other characters are her ideas too. Some situations are hers, some are mine, some came from both of us, and others came out of our discussions with Claude. Because Claude wasn't only typing the code: it was the third person at the table, the one who could turn an idea tossed across the table into a working room in minutes. We worked together on my laptop, side by side, with Claude Code running inside the Web-SCUMM repository and following its method. The TGV didn't make it easy – the Wi-Fi kept dropping and coming back all the way to Brittany – but we got there.
My favourite moment came on the train, the first time Anna played it. The art was still ugly placeholder SVG shapes, but she was amazed to see her ideas turned into a game.
That method is what I liked the most, because it keeps a game healthy even when you're writing it fast, on a train:
- The storyboard first. Every line of text in the game lives in one storyboard file, room by room, beat by beat, with the hints. It's the source of truth: when we wanted to change a joke, we changed the storyboard, then the room.
- Rooms are data. One file per room, with what happens when you look at, pick up, give or use something. No code in the game folder.
- Checks after every change.
npm run validatecatches broken ids and missing lines,npm run solveproves the game can still be finished from New Game, and a walkthrough test replays the whole thing. When you're adding gags at full speed, knowing the game can't be broken by a typo is a real comfort.
Everything else came the next day, today as I write this: the pixel art, the second episode in the ghost train, the soundtrack and the publication.
For the art, the engine's tooling writes the prompts for every sprite sheet, object and background in one shared style (npm run prompts). The sheets were generated by an image model from those prompts, then cut into sprites with the engine's cut-sheet.py tool and cleaned up with a couple of small scripts. Jack's sheet was made first, and it served as the style reference for all the others.
The game is published on GitHub Pages, with a GitHub Actions workflow that builds and deploys it.
A Mega Drive soundtrack for Halloween
A point-and-click without music is sad, so the game has a Halloween soundtrack in Mega Drive style. Web-SCUMM ships an audio pipeline that turns a MIDI file into a Sega Mega Drive arrangement (FM synthesis and PSG, rendered with the Furnace chiptune tracker), and generates sound effects from the same palette of sounds, so everything sounds like the same game.
So the manor plays Bach's Toccata in D minor (what else?), the ghost train plays Grieg's In the Hall of the Mountain King, and there are original tunes for the village square, a waltz for the funfair, and a little jingle for the ending. Plus the sound effects: thunder, a creaking door, a locker opening, and, of course, Gloubi's burp.
Play it, read it, fork it
- Play online: lostinbrittany.github.io/web-scumm-jack-cherche-un-taf, on a computer or on a phone in landscape.
- The game's repository: LostInBrittany/web-scumm-jack-cherche-un-taf, a fork of the engine with only Jack's game in it. The whole story is readable in the storyboard, and you can see how a room is written.
- The Web-SCUMM engine: wanoo/web-scumm, under the MIT licence. Thanks, Erwan, for building such a nice engine, and for thinking so carefully about how it works with an AI assistant. If you ever wanted to make your own adventure game, it's a great place to start.
The credits of the game say « Anna et Horacio », and that's my favourite line in it. I had a blast doing this with my daughter, helping her see her ideas turned into a game. And Jack? He found a job. Scaring people, just the right amount.