The Queue
Nine in the queue
The allowance came back on Wednesday morning. Tuesday had finished at 99 per cent of his Claude Code tokens, which is why Tuesday had been spent on a Steam page, and by quarter to eight on Wednesday every thread that had been waiting for it was awake at once.
That is not how anybody pictures a solo developer. There was one copy of Unreal Engine 5.8 and one graphics card with 8 GB on it. There were, by the evening, nine separate sessions of the agent - Claude Code Opus 5.5, each one working its own part of the town - and only one of them could hold the editor at a time. So they queued. A session would take the editor, build and test its piece, save only its own files, and then send a one-line message to the next in line: "neighbours go", "litterbin go", "parlour go". Whoever was waiting took it from there.
It was a Wednesday, so James was at work. The rulings came in through the day a line at a time, and the queue carried on without him.
It did not run clean. At 07:46 there were two copies of the editor open on the same project, one started by hand. James said to leave both and he would sort it. At half seven in the evening he restarted the Claude app, which ends every session it is running, and the queue had to rebuild itself from the handover notes. By half nine the editor was sitting at 42 GB of memory and a play test of the weather was running at between one and two frames a second.
Rockstar have several thousand people for this. He had a queue of agents waiting for one editor, and a job to go to.
The egg
The longest thread of the day is also the most British thing in the game.
Shirley at number 4 keeps hens. She collects the eggs on her own daily round, and that part had worked since Sunday. What James had asked for was the consequence. If the player helps himself to an egg from her coop and she sees him do it, she reports it. An hour or two later the police come round.
His ruling on how they come round was the important bit: "this should divert the police from their patrol as though they receive a call from HQ to attend." Not a car that appears from nowhere. The patrol car that is already driving its round of Radworth gets the call, leaves its route, and drives to number 6.
A route planner, run outside the engine, laid a path from every junction on the patrol to the house - 2,548 points of road, with the U-turns penalised so the car does not swing round in front of the house, and seven of the routes arranged to arrive from the top of the road and park on the far side, so the officers have to cross. Then the car itself learnt three new phases: drive the callout, wait at the house, drive back to the station and pick up its break.
The first test sent it from the station car park. It arrived in 32 seconds, 0 cm from its mark. The second waited until it was mid-patrol, diverted it at waypoint 652, and took six and a half minutes to arrive, most of which was sitting at red lights. That was the town's own traffic doing it.
Then the officers had to get out and walk up the path, and for a while they would not get there. They walked up to the door, stopped about 20 cm short of it, and stood there indefinitely. No error. The step length had been written into the graph once and used in two places, and the tool the agent writes Blueprints with had quietly turned one of those into a calculation on vectors instead of a single number, so the test for "arrived" could never come true. A plain float variable for the step length fixed it. On the next run the passenger stood exactly on the doorstep, waited 20 seconds, and walked back to the car.
The last piece was the clock. The game's clock is real time by design, so "an hour or two later" means an hour or two of actual evening, and a player who saves and quits in between should not get away with it. The report went into the save file, which now holds 154 fields and passed its round trip test on all of them. A test report planted at half seven in the morning fell due just before nine, and when the play test started at ten the car was sent without anyone calling it. A report put back from a save kept its due time rather than rolling a new one.
That is where it stops for now. The knock, answering the door, and the three replies on the number keys - deny it, admit it, or tell the officers it must have been a fox - are next. The car's blue lights are wired, and for an egg they stay off.
GTA 6 has a wanted level. Here, the neighbour rings it in and the car on its round gets sent over.
A dog walking backwards
Liz walks her German Shepherd every morning, up the lane to the field and home again. On Wednesday James cleared the walk to be shown on X and then mentioned, in the same message, that the dog walked sideways.
That morning, the agent had looked at a frame from a test run and reported the dog's facing as fixed. Zoomed in, it was not. The dog was walking north with its head pointing west.
The cause was small. The dog's model has its head along its own Y axis, not X, and every line that turned it towards where it was going used the X axis. The agent's first correction swapped to the Y axis on its own, and the dog went over sideways and lay flat on the tarmac with its legs out.

Giving it both - Y along the path, Z straight up - stood it upright and head first. The play test agreed: upright and head first on the walk, and running to a spot in the field its head bearing and the target bearing matched at -21.8 degrees each. James's own look at it is the next one that counts.
The lead took two goes as well. Unreal has a ready-made cable for this sort of thing, and the first one ended a metre in front of the dog's neck because the cable's default end point is a metre along. With that zeroed it reached the collar exactly, and then it vanished: 1.1 cm of dark leather against dark tarmac is a lead you cannot see. It went to 1.6 cm and red.

James also approved the dog's panting sound, the first take, in four words. The big lap of the field it is meant to do when there is nothing to chase is half built.
Knackered
James asked whether Wozza, the player's mate on the refuse job, ever handed the player an energy drink. He does not. He talks about one, once a shift, and nothing changes hands. There was not an energy drink anywhere in the game: the corner shop sells twelve soft drinks and none of them is one. So James asked for one with a parody name, and a can that looked like it belonged on the shelf without belonging to anybody.
The agent checked names in Chrome before using one. Grafter was taken by a cider and by somebody's energy drink on Instagram. Gobsmack was a Belgian beer importer. Knackered was free, and it is the right word: the drink named after how you feel before you open it.
The can was drawn and built in Blender against seven real brands on the UK 500 ml shelf, to get the shared language right and keep clear of anybody's actual mark - black can, one neon mark down the front, a high caffeine panel on the back, nutrition and a barcode across the seam, and the price-marked £1.29 starburst that every corner shop in Nottingham has on something. The mark is a K whose arms are a single lightning bolt. The tagline is NOT ANY MORE YOU'RE NOT.

Two things went wrong and both were about what a can shows you. The first wordmark was wide, and at three-quarter view the K had wrapped round out of sight, so the can read NACKERED. A can only shows the middle half of its label from the front, and the outer third of that is foreshortened. The second was the ring-pull, which shared the lid's aluminium material and disappeared into it. It has its own darker material now.
It is in the game as a find in the street litter bins, and C drinks it for hydration and energy, with a crack and a gulp spliced into one sound and the bladder filling slowly afterwards. That is built and checked by script; drinking one in a play test is next. Crushing the empty in your hand is written and waiting for its turn in the editor. Boss Man's shop stocking it, and Wozza actually handing one over, are agreed for later.
Closing time at Knockers
Knockers, the strip club, got its fit-out on Wednesday morning. Before it, the building was a shell with an open doorway. After it, there was music you could hear from the pavement, lights, a sign, a front door and a switch by it, and a closing routine that James set in one sentence: at closing time the dancer goes home, then Clive switches off the lights, closes the door and heads home himself.

The fault of the evening came from James watching a play test. The private dance in a booth was fine, he said, but she got a little too close. The agent measured it. The dance clip carried its travel on the root of the skeleton - about a metre forward and back - and with root motion switched off that travel did not move the character, it moved the mesh, a long way past where the character stood. The seat was 105 cm away. The fix kept the clip and cut its forward and sideways travel to 30 per cent, leaving the height alone, because the root also holds her up.
Josiah Bramwell
The last thing hung in the pub was a picture.
The Slag & Slurry has a ghost: its Victorian landlord, who turns up rarely and is easy to miss. James asked for a portrait of him, fully visible, in sepia, in a wooden frame, behind the bar, and later for a name, dates and an old-style typeface. He became Josiah Bramwell, 1838 to 1889, landlord of the Slag and Slurry public house, set in IM Fell English, an open-licensed revival of a seventeenth-century type.
Photographing him was the hard part. Every capture the agent took came back as a blank white frame, at every exposure it tried from -12 to +16, and it looked exactly like an exposure problem. It was two problems. The settings that make him a ghost also hide every part of him from scene captures, so the camera was photographing the backdrop. And on the empty test level the capture blew out to white whatever the exposure. The way round was to capture his plain colour and his surface direction separately and light the portrait outside the engine.

The spot over the back bar turned out to be taken by the pub's green sign. James moved it to the wall by the near end of the bar, where Samantha sings, and said to replace anything already hanging there. Nothing was. It went up at about half eleven. In the agent's own capture it reads slightly soft.
The hail went the other way. He watched it fall in a play test and said it looked more like sleet, and that hail is small balls that bounce, land on the pavement and melt. It was rebuilt that way after the test stopped. The balls are next.
The fault
Unreal Engine 5.8 NPC walks backwards or sideways after SetActorRotation with MakeRotFromX
A dog actor turned to face its direction of travel with SetActorRotation(MakeRotFromX(travel)) walked with its head 90 degrees off its path. A frame from the test run was first read as correct; zoomed, the head pointed west while it walked north.
Cause: the skeletal mesh is the actor's root and its head is local +Y, not +X.
Wrong fix: MakeRotFromY(travel) on its own. With no up vector the rotation pitched 90 degrees and the dog lay on its side.
The fix
Use MakeRotFromYZ with Z up for a mesh whose forward is +Y
MakeRotFromYZ(Y = travel, Z = (0, 0, 1)). In the mover Blueprint that steps the dog by script, the same thing as a fixed yaw offset of -90.
The guard: check facing as a number, not a picture: compare the head bearing with the travel bearing in play (here -21.8 against -21.8 on a run to a target).
The fault
CableComponent end sits 1 m off the attach point, and a thin cable disappears in game
The cable's end was a metre in front of the dog's neck. The default EndLocation on a CableComponent is (100, 0, 0). Separately, a 1.1 cm cable in dark leather rendered but could not be seen against tarmac.
The fix
Zero EndLocation and give the cable a width and colour that reads
Set EndLocation to 0 before attaching the end. 1.6 cm, red. Tick the cable only while it is shown.
The fault
Blueprint NPC stops about 20 cm short of its target and never arrives
A scripted walk to a doorstep stopped short and waited forever, with no error. A bound expression for the step length was used in both a float comparison and a vector scale, and the graph-writing tool resolved it as vector by vector, so the arrival test could never pass.
The fix
Store the step length in its own float variable
Write the step to a float variable first and wire both uses to that. Also seen on the same build: a statement placed after a trailing cast block made the tool refuse the whole function body; casts now go last.
The fault
Looping dance animation drifts an NPC off its actor with root motion disabled
A dance clip played by a single animation node moved the visible character up to 112 cm forward of the actor. The clip's travel was on the root bone and bEnableRootMotion was false, so the mesh roamed rather than the actor moving.
The fix
Scale the root's horizontal travel in a duplicate clip
Duplicate the clip and scale the root track's X and Y travel to 0.30 about the first frame. Leave Z and rotations alone, and leave bForceRootLock off, because the root carries the character's height.
The fault
SceneCapture2D renders white or empty at every exposure in Unreal Engine 5.8
Two causes. Components flagged bHiddenInSceneCapture (set here on every part of a ghost) are invisible to the capture, which shows only the backdrop. Separately, on a test level with a bright sun and sky, the capture's FinalColor blew out to white across manual exposure bias -12 to +16.
The fix
Clear the flag on a temporary copy and light the capture offline
Spawn a transient copy and call SetHiddenInSceneCapture(false) on it. Capture SCS_BaseColor and SCS_Normal, the normal into an RGBA16F render target so negative values survive, and light the result outside the engine.
The kit
| Tool | Why this one |
|---|---|
| Unreal Engine 5.8, through the unreal-mcp and Monolith MCP servers | every build and play test, nine sessions sharing one editor |
| Claude in Chrome | the trademark check on the drink's name, and the shelf research |
| Blender, run headless | the can, the portrait frame and the landlord's whiskers |
| Freesound, a CC0 recording | the can crush |
| IM Fell English (open font licence) | the lettering on the portrait |
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. |
| glider | A character moved by a script setting its position a step at a time while a walk clip plays, rather than by Unreal's character movement and AI; cheap and predictable, but nothing stops it walking through things. |
| cable component | Unreal's ready-made rope or line: a chain of points that sag and swing between two ends. Here it is the fishing line, from the rod tip to the hook. |
| root motion | The movement baked into an animation clip itself, stored on the skeleton's top bone. A walk clip can carry the forward travel, a turn clip the rotation. The game either lets the clip move the character, or strips it out and moves the character some other way - and if the two disagree, the feet slide. |
| scene capture | A second camera in the level that renders what it sees into a texture instead of the screen; handy for snapshots and mirrors, and it keeps its own exposure and visibility rules, so it can disagree with what the player sees. |
| material slot | A numbered surface on a model that takes its own material. One mesh can have several - brick on one, roof tiles on another - and the numbering is how a script says which is which. |
| UV | The flat pattern that says which part of a 2D image lands on which part of a 3D model. Wrong UVs mean the texture arrives stretched or in the wrong place. |
| Niagara | Unreal's particle system - rain, smoke, sparks, dust, fizz on a pint. |
| mipmap | Pre-shrunk copies of a texture used at distance, so far-away surfaces do not shimmer. |
| trade dress | The overall look of a product's packaging - colours, layout, shapes - which can be protected even when no single logo is copied; the line a parody has to stay on the right side of. |
Things we still need to fix tomorrow:
- The knock, answering the door within a minute, and the three replies, then the far-side parking driven end to end.
- James's own look at the dog's facing, then the dog's lap of the field and the chase.
- The can crush into the editor, then a can drunk with C in a play test.
- Hail as balls that bounce and melt, in a play test.
- Josiah's portrait checked in play for sharpness; a soft one means its texture is streaming a low mipmap.
- Knackered on Boss Man's shelf, and Wozza handing one over.