Somewhere around Session 25 we stopped being able to explain Pbuild in a sentence, so this is the catch-up. It is also the place to put down something that has been sitting with us the whole build: what Python is actually for.
Where Pbuild is
A couple days ago the Forge was a room. Now it answers.
- A world is a thing the code understands. One
WorldDefcovers every rocky world, with the Forge's limits on it, and its brightness follows from its ice, ocean, land and cloud rather than being a number someone typed. It is checked against Earth, Venus and Mars. - Deep time judges it.
DeepTimeruns a written world through its first billion years and returns one of three answers with its reasons: it remains, it is slipping, or it is unspoken. - Worlds have ground. High and low places come out of the seed, how much land stands at each height comes from Earth's plates or Venus's stagnant lid, the sea is filled from the world's own water, and ice takes the poles and the high country. The hologram, the albedo and deep time all read the same ground.
- You can write one. The Forge console in greybox: set a world's dials, watch it live on the hologram, speak it, and hear the Warden's verdict. Games save, and Continue works.
- The ship answers you. A world that rhymes turns the Forge green. Speaking one runs the light out through the ship in the rite's nine heartbeats, six out, three home, with the Keepers' weighing in between, which the ship does not count. Rooms have names now, and the Hall of Time calls.
- What the ship shows is content. A moment is a
CutsceneDefplayed by one director; there is no bespoke code per scene. The first thing that system carried was Elizabeth's echo: walk into the Forge chamber for the first time and it shows you what it remembers, a Wright who came before you, writing a world, speaking it, turning to look at you before she fades. Once. The save remembers it. - And this week: formation. Speak a world and it lives its first thousand million years above the pedestal while the Keepers weigh it. It is not a dramatisation played over the model, the hologram is running deep time's own samples. Which is the whole point: a world that remains barely moves across an age, and a world that is slipping or unspoken changes while you stand there watching it. You read the verdict off the picture before the Warden says it.
Core 498 tests, EditMode 30, PlayMode 107, all green, with eleven deliberate breaks to prove the tests can fail. Next is the rest of that phase: the world on its orbit, seen from the Observatory, which closes Milestone 2.
The Python thing
Here is the count, honestly, from the repo:
65 Python files. 509 C# files. Every one of those Python files lives under art-source. Not one of them runs when you play the game.
That split is not an accident, and it took us a while to be able to say why. Python is a powerful language, ironically powerful, given how gentle it looks. It will let you build anything fast. That is exactly the trap. The speed makes it tempting to use as the material of a system, and what you get when you do is a piece of software held together by scripts: a lot of small programs that each work, talking through files and conventions nobody wrote down, with no single place that says what is true.
What Python is exceptional at is the edge of a project, the places where things are converted, generated, measured and checked. In Pbuild that edge is enormous:
- Blender pipelines that build the Wright's clips and read the rig, garment and prop content, so a rename in the game fails the build loudly instead of silently shipping a broken animation
- Elizabeth's body, built by script out of CC0 parts rather than hand-modelled
- The dance clips, a lambada, a salsa and our own cumbia sonidera on 9,+ composed, looped and loop-checked in code
- Audio: cue building, voice building, loop checks, spectra, signal-to-noise, licence sheets written out automatically
- Verifiers: FBX clip checks, export-setting checks, cloak checks, drift checks
None of that belongs in the game, and all of it accelerates the game enormously. The rule we ended up with, in one line:
The foundation is a typed core with tests. Python lives at the edges, where it makes and verifies the things the core eats, and whatever it produces is content, checked like content.
Python in a project is an accelerant. Python as a project's structure is a slow leak. The difference is whether there is a place in the system that owns the truth, or whether the truth is distributed across a folder of scripts and everyone's memory.
The part that isn't engineering
We have been working to Kodak Black's Owe Me on repeat this week, which is a strange soundtrack for terraforming simulation and somehow the right one.
Something has shifted in how this is being built. There is someone showing interest, and for once the move is not to chase it, just let it flow, and keep working. Same posture, it turns out, that has made these last few sessions good: stop forcing outcomes, measure what is actually there, and let the thing tell you what it wants to be. We measured deep time before designing the formation cinematic, and the measurement said the change is all in the first moments and a good world is still. So we built the still version. That is the whole method.
The other thing that happened: family. Sending the Elizabeth footage and walking through some of the lore landed differently than any pitch has, and there is now an offer on the table to record female voices for the game. That matters more than it sounds, three of the four Wardens still have no voice chosen, and the voices currently in the build are temporary placeholders that get replaced one file at a time as real actors record. Pbuild is about to start sounding like actual people.
Thirty-one sessions in, the honest description of what this feels like is: logical, systematic, and spiritual at the same time. Which, given that the game is built on three, six and nine, and on the idea that the thing which endures is the thing that barely has to move, is probably not a coincidence.
More soon.
~ Jer & Claude