Growing meat over a tall room's upper walls and ceiling
The meat in the vat cavern used to stop 4 m up. Now it covers the upper wall panels, the stepped bands and the shaft's ceiling by reusing the interior's layout.
The meat in the vat cavern now grows all the way up. It covers the upper wall panels, the bands where the hall steps from one ceiling height to the next, and the ceiling of the high shaft over the vat. Before, it stopped 4 m up and everything above that was clean tile. I didn’t model anything new for it, and the party walks through the room exactly like before.
Why did the meat stop at 4 m?
I drew two notes on the screen while I was standing in the vat cavern looking up. The meat wasn’t getting onto the inset levels where the room goes from one height to the next, and it wasn’t covering the ceiling of the shaft. The meat comes from the vat in that room, so that room should be the most overrun one in the game, and looking up it looked unfinished.

My note from the game. The yellow lines mark the wall panels above 4 m that had no meat on them.
There were two causes. The code that places meat only put one piece on each side of a square, at floor level, so anything above the first 4 m of wall never got one. And it only placed a ceiling piece where the square wasn’t part of a cavern. That check was written when a cavern’s roof was rough rock 10 to 14 m up. Caverns with a built ceiling came later and I never went back to it. The shaft over the vat is one of those, so its ceiling got skipped.

Before. The shaft over the vat, looking straight up. Its four sides and its ceiling are bare.

After, from the same spot. The sides are covered from 8 m to 14 m and so is the ceiling.
Reusing the interior’s layout so the meat can’t disagree with it
A tall room’s walls are built in courses. The first one is 4 m, then more 4 m upper courses stacked on top, and a 2 m crown course under the ceiling when that’s what is left over. Where a hall meets a lower room, there’s a band of upper panels over the way in. The interior code already works out where each of those pieces goes and keeps them in a list.
The obvious way to do this was a rule in the meat code that says upper courses are at these heights. I didn’t want that, because it would be a second copy of the interior’s layout. The interior has several cases (wide squares, passages, roofed caverns, stepped bands between two ceilings) and a copy would get one of them wrong sooner or later.
So the interior hands out its list of laid pieces, and the meat code walks that list. For each piece:
- If the square has no meat, it skips the piece. That’s also what keeps the juice vat’s room bare.
- An upper course or a crown course gets a wall growth, placed with the piece’s transform. There are three wall growths, and it picks one with
(x + 2y + side + course) mod 3so stacked courses don’t repeat the same one. - The wall growths are 4 m tall and a crown course is 2 m. So a crown’s growth is scaled to 0.5 on Y, and it ends under the ceiling without poking through it.
- A ceiling piece in a roofed cavern gets one of the two ceiling growths, picked by whether
x + yis odd, at whatever height the ceiling is. That covers the 14 m shaft.
Floors 2 to 4 of this dungeon have plain flat walls and no interior pieces at all. For those I added a function that works out where the interior would put its pieces without building them, and the meat follows that. The pump hall on floor 2 is 8 m tall, and its upper 4 m get meat now too.
I tried the meat pieces that were already installed before thinking about building new ones in Blender. They sat right on the upper panels and didn’t float or sink into them, so I didn’t build any.

Before, in the tall bay beside the vat. The first 4 m of wall and the 8 m ceiling have meat. The panels in between don’t.

After, from the same spot.
Keeping it out of the way of the party
The meat blocks by the room it takes up, so every wall growth normally comes with collision boxes. I didn’t want anything up high changing where the party can walk. Each growth this adds is marked as high, and the build skips the collision boxes for those. The room has 939 boxes before and after, and a test checks that none of them reaches above 4 m. The pathing answers are the same with the high pieces switched on and off.
There’s one more difference up there. Where the party walks, a wall’s growth is capped at 0.8. Above 4 m nobody walks, so the growth uses the square’s full number.
What did it cost?
| Floor | Pieces before | Pieces after |
|---|---|---|
| 1 | 1,701 | 1,754 |
| 2 | 391 | 423 |
| 3 | 203 | 210 |
| 4 | 203 | 240 |
That’s 129 more pieces over the four floors, about 5%. The 53 on floor 1 are 20 stepped bands, 12 upper courses and 12 crown courses in the shaft, and the shaft’s 9 ceiling pieces. Floor 1’s build went from 199 to 205 ms.
Frame time looking up from my two spots went from 9.79 to 9.65 ms and from 10.22 to 9.40 ms, with about 24,000 and 29,000 more triangles on screen. The busiest view in the room went from 13.84 to 13.90 ms. I can’t see a cost in that.
A new test with 26 checks covers it. It checks that every upper, crown and band piece on a square with meat has a growth, that every ceiling piece has one at the right height, and that nothing is placed where the interior has no piece.
What’s left?
Narrow passages, curbs, a cavern’s rough rock, dead bodies and the pump still don’t get any meat.
The growth above 4 m might be too heavy at the full number. I’m going to look at it in the game and decide whether to lighten it.