Doors Closed
Before breakfast
Friday was a work day. Not for the hotel.
The Bumoral is the luxury hotel on the hill above Oakhaven, two kilometres up a new road with hairpins in it, fifty-odd metres above the town. Nearly three thousand pieces of it went into the map at the end of October: a spa on the lower ground floor, the lobby, the bar and the restaurant on the ground, three floors of guest rooms, kitchens and a laundry underneath, staff rooms in the attic. Since then the work has been the part nobody sees in a trailer. The staff need a back way round it - from their quarters to the kitchen, from the kitchen to the canteen, down the service stair in the round tower at the east end - and every metre of it has to be floor the town's people can actually walk on.
The agent, Claude Code Opus 5.5, worked that route through the night while James slept. This was the second full night under the standing approvals he wrote into the project's rules on Tuesday: builds, and closing and opening the editor without saving, at any hour, without asking. Between midnight and nine in the morning the hotel thread took nine turns in the editor. It laid sixteen strips of floor across gaps where the walkable surface had stopped short of a doorway, including a concrete pocket by the boiler room where grass was coming up through the floor because the only thing under the threshold was the hill. It cut four restaurant chairs out of the staff's way, and a potted palm blocking the foot of the grand stair.
Loading the town eats most of the machine's sixty-four gigabytes of memory; one load that morning left five hundredths of a gigabyte free at its lowest point, and took twenty-four minutes. Rockstar have a building full of people for hotels. James had an agent, a queue, and a job to go to.
The tower with no walls
At ten to seven the agent took a picture from the spa, looking at the service stair through its doorway. The stair was there. The stone landing was there. The tower round them was not. Lawn and sky showed straight through where the brick should be, with a few dark slivers hanging in the air.

The agent tried the same view with Nanite switched off for the whole engine - Nanite being the part of Unreal that draws very detailed models cheaply - and the wall came back, solid. It did not establish why that one mesh failed under Nanite and nothing else in the hotel did. It turned Nanite off on that model alone, one asset with one copy in the map, took the picture again at seven minutes past seven with Nanite on everywhere else, and the tower stood.

The missing wall was the second thing wrong with that doorway. The first had come up an hour earlier, and it was worse, because the agent's own check had said it was fine.
The usual way to ask whether a person fits through a gap is to push an invisible person-shaped capsule through it and see whether it hits anything. The agent did that through the spa door into the tower. Clear. The town's navigation still would not route anyone through. So it tried a different question: it fired lines straight down across the doorway, in a grid, and asked what each one landed on first. Four hundred and seventy-six of them landed on the tower, a metre and a quarter off the floor.

The tower had been modelled as rings of stonework. Where the doorways were cut, one decorative course of brick had been left running straight across each opening. It had a top and no underside, a surface facing only upwards, so a capsule pushed through from the side never touched it. The navigation system builds its map of walkable space from the top down. It saw a shelf at chest height and stopped there.
The fix went back to the model in Blender: the bands were cut out of all four tower doorways, and the same downward grid run again. Four hundred and seventy-six hits became eighty-four, every one of them on solid wall either side of the jambs, none in the opening. The agent wrote down that a passing capsule check is not proof of an open door.
Four slits
At twenty past nine the game ran on its own, without the editor, to photograph the inside of the tower at half past eleven in the morning. The tower has tall narrow slits in its wall to light the stair. In both frames every slit was pure black. No sky. No sun on the steps.

The cause, found by reading the exported model with the editor shut, was the glass. The pane in each slit used a material set up as near-black and opaque: from outside, the intended look of a dark window; from inside, a black mirror. The openings behind it were clean. The model went back through Blender with real glass in the slits, and at twenty past eleven the same run showed sky and cloud through the spa slit, and the hills and the terrace balustrade through the three on the ground floor. A resident was climbing the stair in the second frame.

That should have been the end of it. Later in the day James looked at the hotel's windows from the inside. Reflective brick, was how he put it. You could not see out.
The agent had fixed four panes that morning with the cause in its hand and had not asked where else the same glass was used. It did now, again without the editor: a script placed every one of the hotel's 385 front windows and fired sixteen lines out through each one from two metres inside the room. Two hundred and forty-one showed the same black mirror - every upper-floor sash window in the building, the same opaque glass as the slits. Forty-seven were in rooms whose wall lining had been cut for the window and then papered straight over it, dado rail and all. Fifty-seven on the ground and spa floors had no glass at all. Twenty-three in the end guest rooms showed bare sandstone and wallpaper, because the rooms' walls had been stamped nine centimetres too far out and sat behind the glass instead of in front of it.

The fix for all four is written and checked offline. It runs in the next editor slot.
The front door
The front door was the afternoon's job, and it had been wrong since October.
When the agent asked the navigation system for a path from inside the hotel to the drive, every path stopped on the same line: the inside face of the entrance hall's front wall. Every path from outside stopped on the outside face. Between them was sixty centimetres of wall and a closed door.
The door was the problem. It is two tall mahogany leaves, shut, across a three-metre arch. Every piece of the hotel had been imported with its collision taken from its full visible shape, which is exact and cheap to set up, and exactly right for a wall. The navigation system cannot tell a closed door from a wall. It saw one. An earlier pass had even noted that the front door stayed shut, and left it, because the staff could reach the entrance from inside.

The agent offered James four ways out. Hide the door and leave an open arch. Hook both leaves open against the reveal. Leave the door drawn shut and let people walk through it like ghosts. Or make it swing. At two in the afternoon the open arch was in and verified, as a stopgap. James wanted the fourth: automatic doors, the same as the lodge.
The lodge across town already had them: heavy doors that open on their own when someone walks up and close behind the last of a group, built in September for its members. At two minutes past three two copies of the lodge's door went into the hotel's arch, one per leaf, hinged exactly where the shut door's leaves were, set to open inwards for the player or any resident within three metres. The checks passed.
At five past eight the agent gave them a sound: an opening creak of a second and a half, a close of just under two, both heard up to twenty metres off.
Then it tried to hear them. It started a test session and held the player in the air at the hotel doorway for fifteen minutes. The hotel never loaded. The editor shows only a fraction of the map at once to save memory, and in a test session the hilltop had not come into range in that time. The machine was running at under one frame a second, with eighty-four gigabytes committed, so the agent stopped the test before it took the editor down. The doors will be heard in a run of the game on its own, which loads the full map.
The point of the Bumoral, set against GTA VI, is that it is not scenery. Second Chance is built so that you can walk into its buildings, and that is the reason a door can take a whole Friday: when a door is real, it is also an obstacle, and there is nobody else whose job it is.
The Sweatbox door
The nightclub's front door had a better day.
On Thursday night James had asked for the door of the Sweatbox to be dressed like a door on a Saturday in town: two crowd barriers making a lane up the top of the steps, an Over 18s sign on the brick, a few fag ends on the paving where Dean, the doorman, stands. It went in between half nine and quarter past ten. Two things came up on the way.
The barriers came out of the importer with no collision at all. The import had dropped all three of the model's collision shapes without a word, so the agent wrote them back by hand as three boxes. And the lane, as first measured, put the barriers five centimetres from the door's hinges, so a door opened all the way would have hit them. It was widened by seventy centimetres. A test walk afterwards went straight up the lane in two points, with Dean in the middle of it and clear of both barriers.

The photographs failed the first time because the camera script took its settings by name and had been given them in order. The second run, at ten to twelve, got all three.
Dogs and nails
The evening was ideas, and two of them turned into plans before bedtime.
Tyson is the stray Staffie who, fed patiently, ends up following you for life. James wanted more: take him home, feed him from a bowl, throw him a ball inside or out with the same hold-and-release as the snooker cue, take him for walks, tell him to lie down. Left at home he barks for a bit. He reacts when somebody walks past the window, knocks, or puts something through the letterbox. Dog food, a steel bowl and a tennis ball go on the shelves at Boss Man's, the corner shop. The props were made in Blender that evening; by two in the morning they were in the game files.
The other was a new shop. Nail Her is a nail bar on the hillside plot opposite 6 Radworth Road, up on a plinth with steps down to the field, Oakhaven FM playing inside and audible about a metre and a half out of the door. The plan is that most of the town's women drop in now and then and come out with their nails a random colour. Hoa, who will run it, offers the player a drink and a manicure for fifteen pounds, which haggles to twelve; if he buys nothing after thirty-five seconds she asks him to leave. The drink comes from an Oakvend machine in the corner, a cream 1980s cabinet with brown and orange stripes: tea, coffee, hot chocolate, vegetable soup, chicken soup, all fifty pence, in a plastic cup that steams. The plot was surveyed at four minutes past eight. The building is modelled. Putting it in the town is next.
The town's older nail bar, Lacquer & Co, closes, and a To Let board from Ripham & Leggit Lettings goes up in its window.
The fault
Mesh disappears completely with Nanite enabled but renders solid with r.Nanite 0 (Unreal Engine 5.8, imported FBX)
One imported stair-tower mesh, roughly 10,000 polygons, drew only its landing and stair under Nanite: the whole curved shell was missing, with a few floating slivers. The same view with r.Nanite 0 rendered it solid. Every other mesh in the building rendered normally. The cause was not identified.
The fix
Nanite off on that one mesh
nanite_settings.enabled = False on the asset only, backed up first, then saved by path. Checked in game view with r.Nanite 1 everywhere else: the shell renders. Guard: when a mesh is missing in a capture, A/B the r.Nanite cvar before re-exporting anything.
The fault
Capsule sweep reads a doorway clear but the navmesh will not route through it (Unreal Engine 5.8, one-sided face)
A decorative brick course ran straight across four doorways at about chest height. It was a one-sided, upward-facing surface: a horizontal capsule sweep never touched it, so the doorway read clear, but Recast voxelised it as a ledge and the path stopped there.
The fix
Cut the band out of the openings, and check with a downward raster
The model was re-exported with the course removed from every door opening. A grid of downward traces across the doorway went from 476 hits on the band to 84, all on solid wall outside the jambs. Guard: a clear capsule sweep is not proof of an open door; trace down through the opening as well.
The fault
Windows look like reflective brick from inside; slits and sash windows render pure black in daylight (Unreal Engine 5.8)
Of 385 hotel windows, 241 sash panes and all four stair-tower slits used a pane material set opaque and near-black, which reads as a dark window from outside and a black mirror from inside. Separately, 47 windows had wallpaper running across the opening, 57 had no glass, and 23 had their room lining behind the glass.
The fix
The slits are fixed; the windows are staged
The slits were re-exported with a real glass material and showed daylight in the next standalone run. The same change for the 241 sash panes, plus the lining and end-room fixes, was found with an offline census (16 rays per window from 2 m inside) and is staged for the next editor slot. Guard: when a material is the cause, search for every other mesh using it before closing the fault.
The fault
NPC paths stop dead at a building's front wall; inside and outside never connect (Unreal Engine 5.8, closed door mesh)
Every path from inside ended on the inside face of the entrance wall and every path from outside on its outside face. The front door was a closed double-leaf static mesh imported with complex-as-simple collision, so Recast treated it as solid wall.
The fix
Automatic doors, reusing an existing door Blueprint
The shut door was hidden with its collision off, and two instances of the project's existing automatic door Blueprint were placed on the original hinge lines, opening inwards for the player or any NPC within 3 m. Built and verified in the editor; the swing and the sounds are still to be seen and heard in a standalone run.
The kit
| Tool | Why this one |
|---|---|
| Claude Code, unattended | nine editor turns on the hotel between midnight and nine, under James's standing approvals |
| Blender 5.1, headless | every geometry fix (the tower bands, the slit glass) goes back through the model, not patched in the level |
| Offline FBX ray-casting | the window census ran with the editor closed, so it cost no editor time and no memory |
| The lodge's door Blueprint | already built and tested in September; the hotel needed instances of it, not a new one |
Plain English
| Term | What it means |
|---|---|
| Nanite | Unreal's system for drawing extremely detailed models without hand-made LODs. It does not cover everything - foliage and transparency are the awkward cases. |
| navmesh | An invisible map of walkable ground that characters use to work out routes. No navmesh, no walking. |
| trace | Firing an invisible line into the world to find out what it hits - used for "what is under this object" and "what is the player looking at". |
| capsule | The invisible pill shape a character actually walks around as; the body you see is drawn on top of it. |
| complex as simple | Using a model's full visible shape as its collision instead of a simplified one - exact, so a closed door or a stray band of brick blocks people exactly where it is drawn. |
| collision hull | The invisible simplified shape used for bumping into things. It is not the shape you can see, which is why invisible walls happen. |
| opaque | A surface you cannot see through. A window pane given an opaque material shows only reflections, like a dark mirror. |
| material | The recipe describing how a surface looks: colour, roughness, shininess, transparency. |
| FBX | The interchange file format used to move models and animation between Blender and Unreal. |
| standalone | Running the game on its own with the editor closed, the way a player would. The only honest place to measure frame rate, because the editor eats memory and processor time of its own. |
| PIE | "Play In Editor" - pressing play inside the editor to test the game without building it first. Fast, and it behaves subtly differently from the real build. |
| World Partition | Unreal's system for very large maps. It chops the world into a grid and only loads the squares near the player. |
| sound cue | A small wrapper around one or more sound files that the game plays instead of the file itself, so the same recording can be reused under several names or mixed with others. |
Things we still need to fix tomorrow:
- Run the staged window fix: real glass in 241 sash panes, cut the wallpaper off 47 openings, glaze the 57 open arches, move the 23 end-room linings.
- Hear and see the hotel's automatic doors in a standalone run.
- Put Nail Her and its drinks machine in the town.
- Tyson at home: bowls, fetch and the letterbox in a test.
- The stone in the stair tower still reads too red-orange in daylight.