- Published on
A software factory to build the world of Pocket Switzerland
- Authors
- Name
- Christophe Jossart
- Mastodon
- @colorfield
I spent most of my summer evenings building the world of Pocket Switzerland. Claude Code assisted me from the start, and still, the genesis of the project was handcrafted (the story is in the previous post). It is a personal project, with little time to give it. I wanted to build a whole world anyway, and to keep some things for myself: the concept, the game modes, the art direction, the editorial tone, the characters, the story, the dialogue.
Since that post, the map has grown into a role-playing game, with the classic structure: a world map you fly over by balloon, then towns you explore on foot, with their inhabitants, their riddles and their market. It has a story, too. At the end of the summer, while the other marmots get ready to hibernate, Clotilde decides to stay awake to see the winter, and sets off from Château-d'Oex, the village of hot-air balloons.
Bern, the first town, became a laboratory. Walking, the inhabitants and their dialogue, the riddles, the market, the platform course: each mechanism was built there to serve every town to come. Bern also showed the cost of a single place: dozens of illustrations, 3D models and animations, each one passing through my hands. With a whole country left to build, on evenings only, the project needed to move forward between my decisions. So the last steps of Bern served to build and test a software factory, and the next places, starting with Château-d'Oex, will come out of it.
Four tools share the work around those decisions. Claude Code writes the code and drives the others, Codex draws the illustrations and models the 3D pieces in Blender through its MCP server, and Herdr gives me a window on what they do.
This post follows that path: the harness first, then the map, then the city of Bern decision by decision, and finally the small software factory that came out of it.
- The harness first
- A map before anything else
- Bern, decision by decision
- From an assistant to a factory
- What the factory works from
- The right level of autonomy
- Where to go next
The harness first
Before the first mountain, I set up the harness: tests written first, performance budgets measured on a modest laptop, and every decision written down in an ADR or a spec. The previous post tells the details. Claude Code works inside it: hooks guard the generated files, and a CLAUDE.md with its rule files tells each session what was decided and why.
A map before anything else
With the harness in place, I started with the map. I needed something concrete quickly, to avoid getting stuck in a project that would stay theoretical.
Then came the long work of the details. The colours of the map went back to the workshop many times, until day, dusk and night found the balance I was looking for. The physics of the balloon, its weight, its drift, the burner. The search for the music and the sounds, piece by piece.
I took the high-level decisions, and I also made a great number of small adjustments myself. The rhythm shows in the history: 412 commits in August, 939 in September, 1,947 in October.
Bern, decision by decision
The map stays the overview, light enough for a modest laptop. The town is a second way to see the land, at the height of a pedestrian: you leave the balloon and walk.
Bern came first, between 24 October and 9 November: 17 specs, 16 plans and about 540 commits. Most of it was built with Claude Code as an assistant, and the factory arrived for its last two projects.
The grey town, then the idea of Bern
The first version followed the cadastral data faithfully: 1,130 buildings and a five-minute walk at a trot from one end to the other. I walked through it and found it a very good start, too realistic and too big. A town in a role-playing game sits closer to the world map than to reality.
So Bern became the idea of Bern: the main streets, the main places, the access to the river, the start of the bridges. About a hundred houses, on roughly a sixth of the real old town, and a town for pedestrians, with no cars and no wide roads. The streets and the Aare keep their real curves. The town gets its own performance budget, and the counter in the corner of the screenshot keeps an eye on it.
The market and the pive
The main street became the market. Clotilde buys equipment and food there, and sells what she has too much of. I wanted to keep money out of the game, so the currency is the pive, the pine cone, a word from French-speaking Switzerland. The pives are earned everywhere, and nothing essential is sold only for pives.
A skateboard to go faster
On foot, Clotilde was slow to cross Bern, and making her run faster would have changed nothing. So she got a skateboard: faster on the flat, effortless downhill, one key to call it. The Casino square, empty until then, became a skate area with a mini-ramp, a rail and a kicker. It stays a light game of skill: no score, no fall, no extra key to learn, and the slides start on their own.
The zipline
From the platform of the cathedral, Clotilde jumps, hooks onto a cable and glides down to the Aare, with the river and the roofs of the Matte below. I brought in more contemplative moments like this one. It stays a cozy game, where time takes on another dimension.
Odile and the clock tower
The inhabitants give the town its soul. Odile, the clockmaker, is the first one. After a conversation with her, you should leave having learned something, with the feeling that a friendship is beginning. She sends Clotilde up the clock tower, the one at the end of the street in the first screenshot, to touch one wheel, and only that one.
Climbing the spiral staircase in the half-light, I wanted two feelings: the mystery of Odile's riddle, and wonder at the beauty of the mechanism. At the top, the mechanism appears all at once, lit. The wheel sets off the procession of figures on the facade, and the hands of the clock show one hour per figure.
The gardens and the sundial
The hours from the tower are the key to the gardens. Clotilde finds a stone sundial there and four blocks to push onto the right hours, in the order of the sun. The difficulty lies in knowing what to do; the hands have nothing hard to manage. A few principles hold for every riddle in the town: the solution is in the town, the clue is a piece of knowledge that can come from elsewhere, and a failed attempt starts again on the spot.
The cathedral portal
Ten virgins frame the portal of the cathedral: on the left, the five wise ones with their lamps raised, on the right, the five foolish ones with their lamps empty. In the game, one of the wise virgins has lost her lamp, and the gardens give it back. In the parable, the wise ones refuse to share their oil; Clotilde makes up for it and lights the lamps of the foolish ones, in the order the wise ones lit up. With the ten lamps burning, the door opens on the staircase of the cathedral's tower, and the whole town spreads out below the gallery.
Léon and the paddle
The last link of Bern's story ties the cathedral to the river. Léon, the boatman of the Matte, recognises the trolley of his zipline and lends Clotilde his paddle. We already had enough riddles, so the descent of the Aare is a game of skill, easy to finish and harder for those who want a challenge. It ends on the Lauferplatz, with a postcard that links Bern to the main story: Clotilde's grandmother came through here.
The small adjustments
Around those big decisions, there were countless small ones. The finishing brief for Bern went through eight versions. On one evening, the paving showed faint diagonal stripes; after ruling out the facets of the ground and the shadows, the cause turned out to be the fibres of the paper grain, stretched along one axis. The budget moved too: the draw calls went from 39 to 174, then back down to between 122 and 166, and the town's models went from 35.3 MB to 12.0 MB with Meshopt compression.
From an assistant to a factory
During Bern, my role changed. The conceptual work grew, and more and more of it could be extrapolated from decisions already taken. The corrections kept coming at the same pace, though: small fixes Claude could have made alone, validations that were right 90% of the time, monitoring of messages between Claude and Codex. In the meantime, the project slept between two validations.
Addy Osmani's article on software factories gave it a shape: many loops of agents running inside a harness, between automatic checks, with the human keeping the decisions where judgement is expensive. He tells the dark factory, where machines verify machines, from the lit one, where people still read what comes out, to keep the comprehension debt from growing. Mine is lit, and small: one production line, one project at a time, one Codex run after the other. The ground was ready, since the specs and the plans already came out of the Superpowers skills, alongside Matt Pocock's skills.
Bern's first weeks showed which decisions had to stay with me, and which ones kept coming back to me for nothing. Its last two projects, the finishing touches and the granary course, were the test runs. The method that came out of them went back into the modelling guide and the factory's skill.
Who does what
- Me: the decisions that stop the factory (the story, the graphics, a critical dialogue, the editorial tone), playing the game before a release, and the summary at the end of each project.
- Claude Code: the spec and the plan, the code test first, the briefs, driving Codex and checking what it delivers.
- Codex: the illustrations, the 3D models in Blender through its MCP server, and the animations.
A stop reaches my phone as a notification, through Claude Code's Remote Control, with a private page that shows the candidates side by side for a visual choice. Each model reviews the other: Codex reviews Claude's code with codex exec review, and Claude judges Codex's deliveries on screenshots of the scene. Herdr, a terminal multiplexer for AI agents, opens a pane next to the session for each Codex run, so I can watch it work and step in.
Where the lights stay on
Osmani's rule is to give a loop as much autonomy as you can cheaply and reliably verify. The code has cheap checks, the tests, the type checker and the performance budgets, so it moves on alone. The drawings have none: Claude can compare a render with its brief, and taste still has no oracle, so every graphic choice stays a stop. The intent comes from me alone, too; no incidents or player requests feed the queue, which suits a personal project.
The test runs
The finishing touches ran from a Friday evening to the Sunday morning: twenty Codex runs, each delivery judged on screenshots, and a summary page at the end. The granary course opened the same Sunday morning and closed that evening, with 6,851 tests passing and the draw calls between 32 and 99.
What the factory works from
The factory runs on what the summer left in the repository. The art direction and its list of validated choices, against which every delivery is judged. The modelling guide, with the rules learned along the way. The CLAUDE.md, the specs and the ADRs. The journal of each project, to pick up again after an interruption. And the session of each Codex run, which a correction resumes, so that Codex keeps everything it knew about the piece.
The factory would have been impossible on the first day; it came out of the summer.
The right level of autonomy
For me, this factory reaches the level of autonomy I was looking for: the details move forward on their own, and creativity is free of them. It is the goal I have always worked towards, in designing systems as much as in telling stories or making images, whatever the tools of the moment. The tools have changed, and the goal stays the same: to give the time back to the ideas.
Where to go next
Take off from www.pocketswitzerland.com, and the what's new page tells what each release brought.