Nobody Home
Ready nought, place minus one
By eleven on Monday night a terraced house on Brickyard Close held 136 cannabis plants - nine tents of them and a tray of clones on the kitchen table - with sixteen more hanging upside down in the loft and two locks on the front door. The mission to rob it had been written, built into the game and switched on. It sat there logging the same line every two minutes, ready 0, place -1, because as far as the game was concerned the house was the size of a drawing pin.
It was a Monday, so James was at work. The agent, Claude Code Opus 5.5, ran the way it had all week: several sessions, one thread each - the grow house, the break-in, the roadmen, the hotel - and one coordinating session handing the single copy of the editor from one to the next. James's messages started after six. Most of what follows happened while he was doing something else.
Nine tents on Brickyard Close
On Sunday night he had asked for it: a grow in the house of one of the roadmen, Jayden, at 23 Brickyard Close, and a way for the player to break in and steal the crop, with the gang and the police both able to catch him. Two threads wrote the scripts offline before midnight. Monday was the editor.
The props came in at twenty past two: tents in two sizes, black canvas outside and crinkled mylar in, a carbon filter and inline fan, ducting, drying nets, a dehumidifier, foil for the windows. All modelled in Blender.
The layout is a grower's layout, and that is the point of it. In the first-floor front bedroom, two 1.2-metre tents: one ready to chop, one ripe. Two more downstairs in the front room, a week or two behind. Three 2.4-metre tents in the cellar, eighteen pots each. A tent of young plants still in veg in the back bathroom. Four mother plants in the kitchen, kept from flowering so cuttings can be taken off them, and on the kitchen table 24 clones in rockwool cubes next to a set of scales. In the loft, two lines of drying nets with sixteen harvested plants hung upside down under a bare bulb. One pink grow light per 1.2 metres of tent. Foil on the front and back windows. Four bags of coir by the front door. The extraction runs up into the loft and out through the filter, because on a terraced street the first thing that gives a grow away is the smell.

Two walls that were not there
The fit-out slot started at quarter past four with a probe: drop a test line down through every planned pot and check it lands on floor. Ten minutes later it stopped itself. Forty-six pots blocked. Something solid about 1.6 metres up across the front of the front room and of the bedroom above it. And in the cellar, the probe reported the town's own ground coming through the front half in a diagonal wedge, a metre and more above the cellar floor.
The agent read both as real, and the cellar tents were moved back out of the wedge.
Neither was there. The thing at head height was the collision of the telegraph wires' distant-view copy, the HLOD, the cheap stand-in the game draws for a stretch of street when the player is far away. Its box swallowed the front two metres of both storeys, and the test lines started inside it. The wedge was the landscape's stand-in, simplified so far it sags a metre into anything underground. Neither is ever loaded where a player can stand. They only exist for an editor script asking questions from inside them.
The probe now ignores anything with HLOD in its class name. The cellar kept its new plan anyway.

The house was the other way round
The second fault would have put the front-room tents on the stairs.
Terraced houses come in pairs, and the second of a pair is the same model flipped left to right. The fit-out script worked out which from the mesh name: ends in _M, mirrored. This one was SM_TerraceHouse_M_BD - the _BD is for back door - and it pushed the _M off the end. The probe gave it away by finding the stairwell at the wrong end of the house. The mirror is now an explicit setting. The same end-of-name test sits in four other placement scripts, which is a job for another day.
By quarter to five it was placed and saved. The first stills showed leaves poking out through the tent walls, so the pots went closer together and the biggest canopies were narrowed to 70 per cent of their width. The loft bulb went from 40 candelas to 160, because at Epic 40 read as black.

A house the size of a drawing pin
The break-in slot opened at twenty past eight on a fresh editor, because the town takes ten minutes to load, leaves the editor holding over 80 gigabytes, and a second test run in one session runs it out of memory.
The first four steps passed. The doors of No. 23 got their locks. The front has a euro cylinder with anti-snap protection over a BS3621 five-lever mortice deadlock, the pair an insurer asks for. The back door has the five-lever on its own. The game picks them differently - pins and tension for the cylinder, five levers to lift to their gates for the mortice - which makes the back door with one lock the obvious way in. Two safe spots went in for the getaway: the queue outside the Sweatbox, and the pavement outside Kebabylon, where a lad coming out of a twitchel with a bin bag at midnight is one more lad with a bin bag at midnight.
Then the test run: the clock pushed to 25 past eleven on a Friday, the mission switched on. It logged its state every two minutes. Enabled 1. Ready 0. Place -1. It never got ready.
The agent measured why in the running game. The mission finds its house by asking the town's home-life code which home contains the middle of the grow, and the answer was none. No. 23 is a home - place 141, one resident - but the same question asked on a fifteen-by-twelve grid across the house hit 141 in exactly one cell: the one holding the invisible marker residents walk to when they come home. The house's box was the marker's box.
The cause was a tag. The home-life code looks for a building near each home marker, and the terrace shell carries its street and number but not the tag it wants. The nearest thing it would accept was the marker, so every question about being inside No. 23 became a question about being inside a TargetPoint. Tagging the shell during the run changed nothing. The home was already bound.
The fix leaves the home-life code alone, because every terraced house in town depends on it. When the lookup misses, the mission finds the nearest front door and uses that house's own interior. James approved it at four minutes past nine and it was built into the game, green, by twenty to ten. The re-test is next.
GTA VI will have heists, and they will be missions the game hands the player. This one is a house on a street with foil in the windows and a back door with one lock on it. Nothing tells the player it is there. Walking past is a choice, and so is going in.
A glove is not a hand
The marketing stills from the grow came out at ten to five. Two things in them read wrong.
The gloves first. Where one lad points into a tent, the palm side of his curled fingers showed skin. In a tight curl the body's own fingers cross the inside of the glove. The agent built a glove with 7 mm of clearance instead of 4.5, and the patches came out slightly smaller. Clearance cannot hold off a finger pressed into its own palm. The real fix is to stop drawing the hand while the gloves are on: a body material with the skin masked out from the wrist down. James said yes to hiding the hand at 23:18. It goes into the next build.
The balaclava was the other. From behind, under the grow lights, it read as a bare head. The mask was whole. It was moulded over the ears, so the ear bumps show, and the black knit has enough sheen that magenta light turns it the pink of skin. In daylight it is plain black. A darker, rougher material is James's call.

The lad on the left
At three minutes past six James sent two notes on the roadmen. They were meant to lean with their backs to a wall, and he had seen them leaning sideways. And in the dusk clips from the Bleachfield, the guy on the left was bowing continuously, that one needs replacing.
The lean turned out to be a true back lean, chest pitched 24 degrees behind the feet. What James had seen were posed stills shot along the wall, which make a back lean look sideways. It is next to be seen in play, shot front-on.
The bowing was real. The agent worked out from the camera which lads stood on the left, then measured the head pitch through every idle. Kian held his chin down at 58 degrees on average, the most of any of them. Dion swung his head and chest through more than 100 degrees, over and over, a full bow every few seconds. The prompts said why. Kian slouches. Dion laughs with his whole upper body. Kimodo had done what it was told.
New prompts went in with head up and chest upright, three takes each, and both new idles were in the game by half seven. Jayden's old idle kept one hand on his hip, elbow winged out, for the whole loop. The agent wrote a check for exactly that, generated six new takes and picked one with both hands in the hoodie pouch. It was imported at 22:41.
Fallow, not red
The hotel took the last slot of the night. The Bumoral is the luxury hotel on the hill above the town, and its grounds went in between twenty to ten and twenty past: flower beds, the fountain garden, a bandstand lawn, a rose walk, statues, topiary. At twenty past ten James asked for trees, an avenue up the drive and copses on the slopes. By eleven there were 79 avenue trees, hornbeam and oak, and 63 more in copses, and not one crown over the drive.

A country house hotel in England has deer in the park, and James had said to try the ones the project already owned. Those are red deer from an animal pack - too big, and the wrong deer. What you see in an English park is fallow: chestnut with rows of white spots, a white rump with a black horseshoe round it, and on the bucks broad flat antlers like a shovel. The agent repainted the doe's coat and found the pack's materials had no parameters at all, four textures wired straight in, so a material instance had nothing to swap. It made copies with a named colour slot instead.
The buck needed a new mesh, the red deer's antlers swapped for palmate fallow ones. It imported at 22:44, and the script said saved 8. The engine's log said it could not merge the bone tree with the existing skeleton, so the mesh was saved pointing at a skeleton it does not match. A read-only pass over the log caught it afterwards, and confirmed the original pack was untouched.

The badges were the last job, at four minutes past eleven: a black and gilt name plate on the left breast of each member of staff. The first pass fitted all thirteen back to front, the lettering pressed into the waistcoat. The import had flipped which way the plate faces and the fitting script aimed the other way. Felix, the porter, now reads correctly.

Rockstar have a team for the deer. James had a Monday, after work.
The fault
Line trace hits a solid object 1.6 m up inside a house where nothing is visible
Placement probe in Unreal Engine 5.8: 46 planned pot spots blocked, a hit about 1.6 m up across the front 2 m of two storeys, and a "landscape" surface 1-1.6 m above a cellar floor. The traces started with initial overlap.
Cause: World Partition HLOD actors. The telegraph wires' HLOD instancing component has query collision; the L1 HLOD's simplified landscape sags about 1 m into the cellar. Neither is loaded where the player stands.
The fix
Skip HLOD actors in editor traces
The probe's trace ignores any hit whose actor class contains "HLOD". Re-probe: floors at -2.600 / 0.000 / 2.601 / 5.200 m, the cellar an open box.
The guard: when a trace reports an obstacle nobody can see, print the hit actor's class before replanning round it.
The fault
Grow house break-in never starts: log shows "ready 0 place -1"
[GrowHeist] enabled 1 ready 0 place -1 every two minutes in PIE. The house lookup at the fit-out centre returned -1. A 15 x 12 grid at three heights hit place 141 in one cell only.
Cause: home life bound place 141 to its home TargetPoint, because the terrace shell carries no Res: or house place tag. The house box was the marker's bounds. Tagging the shell at runtime changed nothing: the registry's building was already bound.
The fix
Fall back to the nearest front door and the shell's own interior
On a miss, the mission takes the nearest house whose front door is within 15 m and, if the home box is under 300 cm, uses that shell's interior box in its own yaw frame. Built green; the PIE re-test is next.
Still open: the burglary side uses the same point-sized box at No. 23, so household intruder hooks may not fire there.
The fault
Skin shows through MetaHuman gloves on curled fingers
Palm-side finger pads and the crease between index and middle finger show skin in a tight curl. Raising the glove's clearance from 4.5 mm to 7 mm shrank the patches only slightly.
The fix
Hide the hand rather than push the glove out
A masked body material hiding the skin from the wrist down, swapped in while the gloves are on. HideBoneByName was ruled out: the gloves follow the leader pose and would collapse too. Staged for the next build.
The fault
Name badges mount back to front after FBX import
Every badge showed its plain back with the lettering against the cloth. The imported plate faces local -Y (the import flips Y); the fitting script aimed +Y out of the chest.
The fix
Aim the face the import actually produced
Aim -Y outward and refit. The guard: one close-up of one badge, checked for mirrored text, before fitting the rest.
The fault
Interchange "cannot merge bone tree with the existing skeleton" while the import script reports success
Importing a modified deer mesh onto an existing skeleton logged "Imported skeleton has some invalid bind poses", then "cannot merge bone tree with the existing skeleton", then an AssetCheck "incompatible Skeleton" error. The script printed that it had saved 8 assets.
The fix
Read the log, then re-export to match
Pending: re-export from Blender with the stag's exact bone names and hierarchy and "Add Leaf Bones" off, then re-import. The failed merge left the original skeleton untouched.
The guard: a script's own "saved" count is not proof. Search the log for the Interchange error.
The kit
| Tool | Why this one |
|---|---|
| Unreal Engine 5.8 | the game; the only place the point-sized house showed up |
| Blender | the tents, ducting and filter, the fallow antlers, the glove fit |
| NVIDIA Kimodo | new idles from rewritten prompts, three takes each |
| Several Claude Code sessions with one coordinator | one editor, one thread in it at a time |
| A state line in the log every two minutes | the only sign the mission was switched on and never ready |
Plain English
| Term | What it means |
|---|---|
| HLOD | The same idea applied to whole groups of buildings at once, so a distant part of town is drawn as one cheap lump. |
| 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". |
| 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. |
| World Partition | Unreal's system for very large maps. It chops the world into a grid and only loads the squares near the player. |
| mirrored mesh | The same model flipped left to right, used for the second house of a terraced pair. Anything placed inside it has to be flipped too, or it lands where the other house keeps its stairs. |
| TargetPoint | An invisible marker placed in the level so code can find a spot by name, such as the point a resident walks to when they go home. |
| 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. |
| MetaHuman | Epic's system for realistic human characters - face, body, hair and clothing, ready to animate. Every named person in the game is one. |
| Kimodo | An open model from NVIDIA that turns a written description of a movement - 'walks with his hands in his hoodie pouch' - into a skeleton animation, which can then be put on a character. |
| Interchange | Unreal's newer system for bringing files such as FBX models into the engine. In 5.8 it can take over an import without saying so, and it does not read the settings the older importer used. |
| skeleton | The hierarchy of bones inside an animated model. Two models sharing a skeleton can share animation. |
| FBX | The interchange file format used to move models and animation between Blender and Unreal. |
| material instance | A copy of a material with some settings changed. Cheap to make and cheap to render, so most surfaces are instances rather than originals. |
| material parameter | A named slot in a material that a material instance can change, such as which picture is used for the colour. A material built without one cannot be re-coloured by an instance at all. |
| mother plant | A plant kept growing and never flowered, so that cuttings can be taken from it again and again. |
| clone | A cutting taken from a mother plant and rooted on its own, so it grows into a copy of her. |
| carbon filter | A drum of charcoal that the air from a grow room is pulled through by a fan, to take the smell out before it leaves the house. |
| candela | A unit of how bright a light looks from one direction. A candle is about one; a lightning strike is millions. |
Things we still need to fix tomorrow:
- Re-test the break-in with the house fix: the back-door pick, the grabs, the bag slowing the sprint, the gang and the police.
- Build the glove fix and look at a pointing hand under the grow lights.
- Re-export the fallow buck to match the stag's skeleton, then the herd in the park.
- The mirror test in the four other placement scripts.
- A darker, rougher balaclava, if James wants one.
- Ryan's body loop.
- The new lean in play, shot front-on to the wall.