Installing 149 building parts and laying parapets on roofs
The game now reads its steampunk building parts from installed files that passed the model gate, and the house recipe lays open parapets, coping and hopper pipes.
The steampunk houses are now built from 149 parts that went through the model pipeline’s gate and sit in the game’s own asset folder. Before today the game read those parts straight out of the art kit’s build output. I also taught the house recipe to lay the roof-line parts the kit had been making, so a tenement now gets open parapets over its top windows, iron caps at its corners and hopper-headed downpipes.
How did the building parts get installed?
I wanted proof that the kit can build surface buildings, and that meant the parts had to go through the same gate as every other model. The gate refuses a model whose pipeline record is incomplete, failed, or written for different bytes. All 149 passed and none was refused. They come to 4,963 KB, about 33 KB each, and the biggest has 688 triangles at the highest level of detail, just under the cap of 690. Each part has a record of pipeline steps 1 to 18, and I built the whole set twice and got the same bytes both times.
On the game side it was one function. BuildingMembers.folder() is the one place that says where parts are read from, and I changed it to return res://assets/models/buildings/<look>. Each part is a .glb with a manifest, a pipeline record and a .piece.json beside it. The game still loads them with GLTFDocument at runtime, because an export can’t pack a raw .glb. The short interior pieces still come from the kit’s build folder until they get their own install. If the folder is missing, the catalogue is empty and the test and the film skip, so nothing crashes on a machine without the assets.
The first asset bump failed. Importing 149 new files took longer than the 150 second timeout in my import script, so I raised it to 1200 seconds and it went through.
Why was a dead house fresher than a decayed one?
The judge looked at one house in four states, peak, declining, decayed and dead, and found the outsides read as one house ageing. The insides didn’t. In the dead house the floor planks were clean and warm, while the decayed house had already lost its boards, so time ran backwards from decayed to dead. The cause was that the dead house’s floor parts skipped the function that applies a state to every part. I sent them through it, so dead is now at least as worn as decayed.
The second find was worse. The decayed stair had lost its treads and was just two stringers and a rail, and it’s the only way up. The treads had been put in the groups that break first. I moved them out so they only go at the last state, dead.
A state has to apply to every part of the house, floors and stairs included, and the groups that break first can’t contain what the player walks on. I want a collapse checked against whether you can still walk it, not only by eye.
The judge filed two things for later. Peak and declining hardly differ at 12 m, and at 5 m all eight fronts look alike, because the state, not the seed, tells the houses apart. Neither held up the install.
Why did the roofs need parapet parts?
The kit had built an open parapet, a coping cap, a hopper downpipe and a coping for the high wall of a lean-to, but the recipe couldn’t place them, so those spots were empty sockets. The kit’s lessons check, which counts faults in the plans the recipe makes, charged it with 18, and a crack test found 11,176 rays that slipped through the lean-to’s high wall.
Four rules in the deck code do the laying:
- An open parapet goes on every outline edge whose top storey has windows. It has a post at each end and nothing over the glass. A bay without a window keeps the plain parapet, which has a post in the middle as well.
- A coping cap goes at each corner of the parapet where two copings meet, and a smaller one at each inside corner.
- The top storey’s downpipe at an outside corner is the hopper form, with its head under the coping and no swan neck. The storeys under it keep the plain pipe. A house with one storey under a parapet gets no pipe, because the kit has no hopper pipe that ends in a shoe, so that socket stays empty.
- On a lean-to the top string course of the high wall gets a coping on each bay, and at the end of a run an iron end cap closes it, so no sky shows under it.
On the T-shaped tenement that comes to 13 open parapets and 7 plain ones, 6 coping caps outside and 2 inside, and 6 hopper pipes. Its members now match the kit’s hand-laid version exactly, and the recipe’s faults went from 18 to 8. Six of the 8 are the lean-to coping’s middle post standing over a window, which needs an open coping from the kit. The other 2 were already there on a 30 degree jog. The lean-to terrace’s crack test went from 11,176 open rays to 0.
tests/building_recipe passes 6,318 checks with none failing, and a new section covers these members. Over 406 plans, the faults in the lessons check dropped from 278 to 42, all of them that lean-to coping.
Why did the first film get sent back?
The code passed, but the judge sent the film back. I’d filmed from the street looking up at a three-storey wall, so the walls leaned 20 to 30 degrees in frame and the cap and hopper were a few pixels across. The captions described things you couldn’t see. I redid it from a gantry across the lane at the height of the roof line, looking level, 5 m off the wall. The hopper is about 40 pixels tall there. A film of a roof-line part has to stand where the part is at least 20 pixels tall, and a sheet’s 5 m view for it should aim at an outside corner against the sky.
The T tenement still has 2 crack rays. One is a pilaster joint from an older item. The other is under an open parapet at a window wall, and it only shows up in the recipe’s member order, so it goes on the kit’s list. The kit worker should first check that there isn’t a real slit there.
Why did three building tests fail once the game read the installed parts?
The first install of 149 parts came from a kit branch cut before three other pieces of kit work landed: the window parts (open window walls and glass fills), the parapet parts (open parapet, coping caps, hopper pipes, end caps, half gables and ridge jogs) and the footprint pieces (domes, cone gores, finials, diagonal walls, an arcade, a wedge, a retaining wall, a ramp and a porch roof). Once the game read its parts from the installed set, three building tests failed on main. Parts were not found by their query, a shell was short of its window fills with 107 instances against 114, and a two-house cable test had no span.
The fix installed the 43 missing parts through the same gate. Each was built twice to the same bytes, shown on a review sheet that was read, imported into Godot with 0 failures, then marked for test, film and credits. The 149 already installed were checked and are byte-identical to the kit’s current build. That makes 192 parts, 6,786 KB on disk, the largest 92.9 KB. The three tests pass, and the building, model pipeline and model gate tests pass 10 of 10.
A branch cut before a kit landing installs the kit as it was, so an install has to take the whole current set.