Making monsters chase between floors and wander on a clock
A hunting monster now climbs the spiral, ladder or duct after the party, and each dungeon floor brings in roaming packs as the game hours pass.
Monsters in my dungeons now follow the party up and down between floors. A monster that’s hunting the party walks to the stair, ladder or duct the party took, climbs it if it fits, and comes out on the other floor still hunting. Floors also get wandering packs. Every hour on the game clock each floor rolls to bring in a small pack out of the party’s sight, and the pack walks the floor.
Why did monsters stop at the stairs?
The game has no pathfinding across floors. A hunter chased the party to the foot of a spiral stair or a ladder and then gave up, and a small monster that could follow the party along a flat duct stopped where the duct started to climb. Monsters in dungeons were the first thing on my plan for what to build next, and these three gaps were part of it.
How does a monster know where the party went?
I didn’t add pathfinding. Following is a rule. One node watches which floor the party is standing on. When that changes, it notes the way between the two floors that’s nearest the party, and the game time. It keeps the last 6 crossings.
The chase AI asks this node first, every time it thinks. A monster that’s hunting on the floor the party just left heads for that way’s mouth. It follows if it gets within 1.1 m of the mouth within 15 game seconds of the party arriving on the other floor. That’s about 50 m behind at a walking pace. It also has to fit:
- A ladder takes whatever already fits onto the ladder’s foot square.
- A climbing duct or a ceiling vent takes only a walker that fits a 1.5 by 1.2 m crawl.
- A spiral takes bodies up to 0.9 m across.
- A flyer follows by nothing, and nothing follows by lift, because the car carries the party and a monster can’t call it.
So in the film the meat sack comes up the duct and the gristle spitter, which is too big for a crawl, stays on the floor below.

The meat sack came up the climbing duct after the party and is biting at it in the crawl.
How does the climb work?
A climbing monster is taken out of the physics world and moved along the way on game time, never real time. On a ladder it moves at 1.2 m per second and in a duct at 0.8 m per second, the same speeds the party climbs at. On a spiral it walks the stair’s line at 0.6 of its normal pace, for the treads and the turns. It’s moved where it can be seen, so the party watches it come up.
At the top it’s let go already hunting and provoked, so it doesn’t lose interest just because it lost sight of the party on the way. The rule doesn’t care which way is up, so if the party goes back down, the monster follows it back down.
A monster that gives up the chase on a floor that isn’t its home walks to the nearest way home it fits and climbs it. Nothing about following is saved. A load drops every climb, and a monster saved halfway up a shaft is put at the nearer end.
How do wanderers come and go?
Each floor that has spawn points gets a node that listens to the game clock. Every game hour, which is 360 seconds of play, it rolls a chance set on the dungeon file: 0.34 for low, 0.67 for mid and 1.0 for high. On a hit, if the floor has fewer than 2 living wanderer packs, a pack of 1 to 3 comes in. Single monsters are most likely, at weights of 0.5, 0.35 and 0.15. A stopped clock spawns nothing, and resting lets the hours go by.
The pack only appears where the party can’t see it. That means the party is on another floor, or it’s at least 10 m away and no ray from the party’s eyes reaches any member’s spot. Its kinds come from the floor’s pool, the monsters its other packs already use, with no bosses, no flyers, and only bodies that fit the spawn square.
I didn’t write any new movement for walking. A wanderer pack walks by moving its members’ home positions along a route, square by square, to another spawn point or the middle of a room. Each member is an ordinary monster that walks back toward its home, so it notices the party, hunts, gives up and even follows up a ladder like any other. At the end of a walk the pack waits 60 game seconds and picks a new goal.
Dead wanderers stay dead. A pack that’s all dead is cleared away once every body is emptied, or after a game week. The packs are saved in their own section, which loads before the monsters, so a pack exists before its members’ health and place are put back.
Where does the generator put spawn points?
The generator calls a new Python module after it builds a dungeon. A spawn point goes on open floor in a corridor or in an empty room, and not in the entrance’s room. It has to be at least 8 squares, walked, from every way into the floor, like the entrance, a ladder, a duct or a spiral, with nothing on it or beside it. Points are 6 squares apart or more, and a floor gets one per 120 open squares, between 2 and 4. If nothing qualifies at 8 squares, it tries again at 4 and then 2. The pick is seeded by the floor, so the same file always lays the same points, and each new point is the one farthest from the ways in and the points already taken.
A Python test ran 20 seeds of 3 floors each and got 140 points. All 140 stood the full 8 squares from every way in.
What’s still rough?
A monster climbing a ladder or duct slides up the shaft in its standing pose, because there’s no climb animation yet. Only dungeons generated after this change have spawn points, so the tour dungeons get them at their next rebuild, and the hand-drawn ones have none until the designer page gets a mark for a spawn point. Every number here is a placeholder for now, and I’ll tune them by playing.
The new game test passes 41 of 41 checks. The whole suite ran 245 tests with 2 failures, both ones that fail on main too.