Birdoggydog's Builds

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.

41 seconds in the vat cavern, looking up. Each of my two spots as it was and as it is now, then a walk under the stepped bands, then the pump hall on the floor above.

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.

A first-person view looking up in a tiled hall. Red meat covers the lower walls and a low ceiling, and hand-drawn yellow arrows point at clean tan wall panels higher up.

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.

Looking up a square tiled shaft from inside a hall whose low ceiling is covered in red meat. The shaft's walls and its checkered ceiling are clean.

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

The same view up the shaft, now covered in red meat on all four sides and across the ceiling, with the dark frame of the panels still showing through.

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 3 so 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 + y is 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.

Looking up in a tall tiled bay. A band of red meat crosses the middle of the view and the wall panels on both sides of it are clean tan tile.

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.

The same view with red meat covering the wall panels on both sides, up to and across the ceiling.

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?

FloorPieces beforePieces after
11,7011,754
2391423
3203210
4203240

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.