Out of View
The light nobody could find
The day started with a verdict from the night before.
There are monsters at the edge of the map in Second Chance. Not on the streets - out past the last houses, on the moor and in the dark lanes, where the town gives out and the old stories take over. The first one built was the Lantern: a light in the distance that draws you off the path, and something waiting for you when you get there. On Thursday evening James played it live, with the agent - Claude Code Opus 5.5 - driving the test from his side.
"I couldn't see it. I was not sure which way to walk. They are very hard to find." Then, once he had found it: "I reached the light a few times and lost interest."
That was the whole review, and it was right. A light 100 metres away on a dark moor is a dot, and following a dot for 150 metres is a walk. It was also the run that found the sound bug. James had heard one quick noise all night. Every sound the creature made was being played at a stored position whose height was always zero, and on the moor zero is between 14 and 30 metres underground. It had been clicking and chirping all along, inside the hill. The agent moved every sound to the creature's real position, the fourth test run had him saying "yes that was much better", and none of it saved the lure.
He flagged the Lantern as unfinished and set the brief for the next one in a single line. Make it appear more easily. Make it more terrifying than the last.
GTA 6 has a coastline at the edge of its map. This one has English folklore, and the next thing out of it was a child.
Free assets only
The Lost Child is the simplest idea on the list. A small girl crying on the path ahead of you at dusk. She asks you to take her home. She has black eyes, and she only moves when you are not looking at her.
The agent had built a first version of her in Blender from scratch, and James had already turned it down: "the clothing looks incredibly basic and the wellington the wrong shape." His ruling was free assets only. By Friday afternoon she had been put together from three things in his Fab library that cost nothing: a free child model with a face rig, a hooded cloak, and a scanned Victorian dress called "Dress of a poor woman - Victorian era" by TijerinArt, which is under a licence that asks for a credit, so it went straight into the credits file.
Getting a dress made for a grown woman onto a girl a metre tall took most of the afternoon. The cloth simulation that hangs the cape exploded twice - the cape came out 20 to 90 metres wide - because the agent had let the dress shells, then a hollowed-out body, act as things for the cape to fall against. Her skin poked through the blouse at the chest, and was hidden with a mask rather than deleted, because the body carries 149 face shapes that deleting would have wrecked.
At quarter to four James looked at the renders. "Yes that looks good. Quite creepy."

Then the export. Her first trip into Unreal came out 74.9 cm tall. She is 110.4. The agent had scaled her rig by 100 to match Unreal's centimetres, and the scale had reached the bones but not the pose stored on them, which was still in metres. Every vertex had dropped by the height of the bone it hung from. The import's own size check refused to save her, so nothing broken reached the project. The export now forces the pose to be recalculated and refuses to write unless every bone is at rest. A second fault turned up in the animation pass, which was worse to look at: her arms were parented to her head.
What she does is the part that answers the Lantern. She appears 15 to 25 metres away, just outside the edge of your view, so she never pops in on screen. The crying turns you round. While you look at her she is dead still. Look away and she closes three to five metres every 0.6 seconds. If she reaches you, you wake somewhere else.
At nine James said to skip the play test for now. She is placed in the world at the edge of the map. Walking the lane at dusk to meet her is next.
The shack
Somewhere else is a shack, and James wrote its brief at quarter to six in one breath: battered and weathered, holes in the roof, ancient inside, cupboards and drawers you can open, and you wake on an old dirty mattress on the floor. U stands you up, with a prompt to say so, and the camera should rise from lying sideways to standing in two or three seconds.

By nine it was built, placed and played, and James watched the test. "The getting up animation looks great and eating the can contents." The drawers made the right noise. There is a half-drunk bottle of whisky in there, and a tin of pie that stays sealed unless you are carrying a tin opener. He ruled that both should give back a bit of thirst as well as everything else, since they are mostly water, and they do now.
One thing does not work yet. E will not pick up the props inside the shack.
Three on the books
The strip club, Knockers, has had one dancer since it opened. Friday made it three.
The two new faces needed Epic's paid cloud service to finish their bodies, one run each, and James had approved the cost. At ten that morning the agent asked to drive the editor itself to press the button. He said no. At twenty-five past twelve, asked again how he wanted it done, he said not now. At six he was home, sat down, ran the script from the editor's own menu twice while he watched, and each run took about a minute. There is a version of this job where the agent spends the money on its own while he is at work. He did not want that version.
The looks came back close to the brief and not on it. The second dancer was meant to have long black curls and came out with a full afro. The third was meant to have a high auburn ponytail, and came out with an orange updo, because no ponytail hair exists in the kit. The agent said both plainly when it sent the pictures, which is the useful habit. At quarter past seven James said he was happy with them.

The gold outfit took two goes. The first read lemon. The second reads mustard, and that is as gold as it gets, because the shiny material they wear has no metal setting to give. "Looks very good," he said. The thin orange outline in that picture is the box you stand in to talk to the first dancer. It is set to invisible and draws in the editor regardless, and on the first look it had hidden her completely.
The routine is designed and half written, and he settled it in three rulings: two on the stage and one working the floor, a pair swap every song, and private dances only from the one on the floor. Each has her own name, her own lines and her own record of how you have treated her. Rockstar have a writers' room. He had half past ten and three personas to approve.
Thirty races nobody drove
At half nine James told the autograss session not to hand over to anyone else at the end of the night. He wanted to stay on it.
The eight buggies from Thursday race now. Their heat was worked out in advance by a simulation, then recorded into Unreal as a sequence, so all eight run the same 133 seconds every time, drifting into the bends with the front wheels turned against the slide. The first check found the steering wheels turning the wrong way, against the tyres.
His next brief was the best one of the day. A new game should not start on a fresh track. Run the race several times, he said, until it looks worn, and save that. The agent did it without the editor: thirty simulated races, each driver taking a slightly different line. The first attempt dug a flat canal 5 metres wide and 14 cm deep. The second, with thirty races, made a flat dish with no grooves in it. The third let old races soften and kept only the recent ones sharp, the way weather would.

"It looks good, that should be a good starting point." The grass poking through, he said, was fine. In heavy rain the dish floods. He said that was fine too, but the cars should skid more in it and dirty water should spray up behind them. The spray is designed and written down. Building it is next.
The cars get dirty now, dusty when it is dry and caked when it is wet. The dirt goes where a real buggy's would, thrown up by its own tyres and by the car in front, so the leader stays cleanest.

At five past eleven the mud track vanished. The ground underneath was bare grass, the cars raced across a field, and nothing had errored. The agent tried the material first. It was not the material. It took half an hour to find that the eight track pieces, built from a Python script, were reporting their size as zero after an editor restart, so the engine judged them too small to draw. A setting the script re-applied every run had quietly rebuilt them from nothing. The track was back by twenty-five to midnight.
After midnight a garage went up, with roller doors that open as each car drives in, and a drone camera feeding a big screen in the middle of the track. All of it is waiting for its first play test.
The estate goes up
Across the map, the estate on the hill went from five test buildings to the whole thing. By half six on Friday there were 2,986 houses and shops on it, and 15,890 smaller details round them, packed into 343 batches so the graphics card draws them in a few hundred goes rather than thousands. Some of the houses are mirrored copies. Mirroring a model is the classic way to turn it inside out, so the agent went and looked, and they were the right way round.
The last job, gone midnight, was retaining walls along every road on the slope. All 233 pieces went in on line. Then the agent took a picture from the bottom of the bank.

Where the shaped ground meets the walls it rises and dips between each section, so the bottom of the wall reads as a row of teeth. The agent did not fix it. Changing the ground needs a backup and James's say-so first.
The fault
Unreal Engine 5.8 3D sound is silent or plays once because the stored location has z = 0
A creature's every 3D sound was played at a stored location vector whose Z was always 0. On raised terrain that put each sound 14-30 m below the ground, beyond its attenuation. In play the tester heard a single short noise in a whole run. Nothing errored.
The fix
Play attached sounds at the actor's real location
Use GetActorLocation (or attach the audio component to the actor) rather than a cached 2D position. Then test by ear in play, standing where a player would.
The fault
A Blender rig imports into Unreal Engine 5.8 short, every vertex dropped by its bone's height
A character scaled x100 in Blender to centimetres imported at 74.9 cm instead of 110.4 cm. The transform reached the armature data, but the pose matrices were left in metres, and the FBX exporter wrote them. Every vertex fell by its bone's head height. A separate fault in the same export parented the arm bones to the head.
The fix
Force a pose re-evaluation and refuse to export unless pose equals rest
After scaling, force the pose to re-evaluate, then check every bone against its rest pose and refuse to export on any mismatch. Re-import the FBX into Blender and compare evaluated bounds - that is the honest check. Keep a size guard on the Unreal import, which caught this one before anything was saved.
The fault
Unreal Engine 5.8 Python-built Nanite static mesh reports zero bounds after an editor restart and disappears
Eight track meshes built with build_from_static_mesh_descriptions rendered as missing after an editor restart: get_bounds() returned zero, so the engine culled them. A later script stage re-set nanite_settings on every run. The notified change rebuilt each mesh from a source that, after a restart, produced empty bounds. In the editor session that built them it had worked.
The fix
Rebuild the assets with Nanite on before the build, then never touch Nanite again
On a fresh editor with a blank level, rebuild the mesh assets from their source data with Nanite enabled before the build, and assert the bounds. Leave the placed actors alone. Change later stages to call set_material only. The guard: read the bounds back after any script edits a Python-built mesh.
The fault
MP_Displacement is missing from UE 5.8 Python and cannot be wired
For a tessellated mud material, MP_Displacement is not in the Python MaterialProperty enum (it is marked hidden), and casting the raw value is refused. The Monolith expression connector has no "Displacement" name either.
The fix
Route the material through MakeMaterialAttributes
Feed every output through one MakeMaterialAttributes node, whose Displacement pin can be wired, and switch the material to use material attributes. A validator may then warn about a missing opacity mask - that warning is reading the old direct pin and can be ignored.
The kit
| Tool | Why this one |
|---|---|
| Unreal Engine 5.8, driven through the unreal-mcp and Monolith MCP servers | every build and play test, several sessions taking turns at one editor |
| Blender, run headless | the Lost Child's fit, rig, clips and LODs, the shack and its props |
| Fab | the free model, cloak and dress the Lost Child is made from |
| ElevenLabs | the Lost Child's voice, from a library voice added to the account |
| Python with numpy, outside the engine | the race simulation, the 30-race wear bake and the engine sound bake |
Plain English
| Term | What it means |
|---|---|
| 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. |
| Blueprint | Unreal's visual scripting. Logic built by wiring boxes together with lines instead of typing code. This whole game is built in it. |
| MCP server | A bridge that lets an AI agent drive another program directly. Here, two of them let the agent operate the Unreal editor. |
| Fab | Epic's marketplace for ready-made game assets - models, materials, characters, clothing. Buying a garment and refitting it is how almost everyone in this game got dressed. |
| FBX | The interchange file format used to move models and animation between Blender and Unreal. |
| rest pose | The neutral pose a character's skeleton was built in, before any animation moves it; the export and the skinning both assume the model is in it. |
| skeleton | The hierarchy of bones inside an animated model. Two models sharing a skeleton can share animation. |
| cloth simulation | Working out how fabric falls and folds by calculating it, rather than modelling the folds by hand. Expensive, and usually baked down to a fixed shape before it reaches a game. |
| attenuation | How a sound fades with distance, and how far away it can still be heard. |
| MetaHuman | Epic's system for realistic human characters - face, body, hair and clothing, ready to animate. Every named person in the game is one. |
| material | The recipe describing how a surface looks: colour, roughness, shininess, transparency. |
| displacement | Pushing a surface's actual shape in and out from a texture at draw time, so ruts and bumps are real geometry rather than painted shading. |
| 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. |
| bounds | The invisible box the engine considers an object to occupy. Streaming and culling decisions are made on the box, not on the model, so an object with a box the size of the map can never be streamed out. |
| level sequence | Unreal's timeline for animating things in a level - cameras, cars, doors - keyed frame by frame and played back like a film. |
| LOD | Simpler versions of a model, swapped in as it gets further away. The trick that lets a street hold hundreds of objects. |
| autograss | British grassroots motor racing on an oval of grass or mud, usually in a farmer's field, with classes running from stripped-out hatchbacks to purpose-built buggies. |
| handover | A running notes file for one strand of the work, written so the next session, human or AI, can pick it up cold and know what is done, what is not and what will bite. |
Things we still need to fix tomorrow:
- Walk the lane at dusk and meet the Lost Child in a play test.
- Make E pick up the props inside the shack.
- The Lantern's redesign: a whispered hello, and it shows itself inside 10 metres.
- Build the three-dancer routine: two on stage, one on the floor, a swap every song.
- Water spray behind the buggies in the wet, then skid recordings for rain.
- First play test of the garage doors and the track TV.
- The teeth at the foot of the estate walls, once James has seen the picture.