Build log · 2026 Epic AI MegaJam · 12–15 Nov · times EST
Four days, one suit
Raiju: The Director's Cut is a score attack: you pilot a robot suit as tall as a building and wreck a film set for pay. Chris and a crew of AI agents ("we") built it in four days; this log keeps the moments that changed it, with the numbers, the failures and the fixes.
4 days12 to 15 November 2026
1 personVery Bad Games (Chris Sands), with Claude Code agents
1,485commits after the "prejam" tag, by 13:00 Sunday
82,244lines of C++ in the game; about 88% written in the jam
Thursday 06:05 Hour six: the first loop, placeholder UI.Sunday Day four: the dressed street set, at true 1080p on the test PC.
The short version
Thursday: a shot list. Saturday: a judge's 4 of 10, and a rebuild as a score attack.
AI agents built it; Chris made the calls and played it by hand on Sunday.
Most fixes came from measuring first. The longest wrong turn lived for about 45 hours.
Chris set the direction and made the design calls. Claude Code agents did the build work: an orchestrator wrote one brief at a time, an Unreal worker built and proved it, lanes made the monster, the sound and the effects, and fresh judge agents scored each video.
The orchestrator set the working rule on Thursday afternoon. One task, J13, had given the city its colours back and added storefronts and street props. Then the packaged autopilot run failed: it stalled in the first scene, the last tower did not fall, and the film was shelved at 86%. From then on, a task was not done until three packaged runs in a row met all goals. (On Sunday, with the clock short, the last build's brief asked for two packaged proofs instead: one at Epic, one at Medium.) Chris could also overrule the agents' targets: he chose the steady camera before it met its own target. How the crew worked, in detail.
118Thu
188Fri
757Sat
422Sun, to 13:00
Commits per day after the "prejam" tag, all branches, counted with git at 13:00 Sunday (git rev-list --all --count prejam..). (The declaration's "about 1,370" was the count at 10:55.)
How one note became a change
05:17 · the noteOn an ultrawide screen, I didn't even notice the pay going upChris, at the test PC
05:50 · the briefPAY POPS NEAR THE CENTRE. [...] This is the most valuable change of the morningThe orchestrator, orders 13
06:07 · the proofgold '+$' right of him near the middle, the x pop under itThe Unreal worker, round 5, a 1080p proof run
Sunday · the resultSunday: pay pops beside him in a later take
What came before the jam
The jam declaration, in Chris's own words:
Made during the jam (Nov 12 to 15)
Raiju: The Director's Cut was designed and built in the jam: the Director's Cut idea, the three acts, pay and grades, the director and his calls, the stunts, the stage, the HUD, the end screen, the title and intro film, all music, voices and sound, and the robot suit's own animations (walk, run, punches, kick, slam, thunder, roar, the bow). About 1,370 commits. About 88 percent of the code that ships.
Made before the jam: carried over from earlier Unreal experiments
Before the jam I was learning Unreal Engine with AI coding agents, with no game in mind. These parts of those experiments carried over and still ship, changed in the jam:
the strike, building damage and floor-by-floor collapse code, the camera boom and impact dust (C++ and Niagara effects)
the robot suit's skeleton and rig, and a first body that the jam rebuilt into the robot suit
the character setup on Epic's Game Animation Sample (the pawn Blueprints and retargeting)
the breakable building kit: wall pieces, Chaos geometry collections, roof props and backdrop buildings, re-dressed in the jam
the street layout, which the jam's stage was built from
debris meshes and damage materials
build scripts in Python and Blender
About 10,000 lines of C++, 12 percent of the code that ships. The full list is in PREJAM.md. The version history is available on request.
How the two movement lines fit: Raiju moves on the character setup from Epic's Game Animation Sample (motion matching), carried over and declared above. The clips it plays for the suit were keyed in the jam by agents in Blender: walk, run, sprint, run-stop, the punches, kick, slam, smash, thunder, roar and the bow. A Fab creature pack supplies the shoulder charge's run clip and fallback clips. The repository holds licensed assets and is not public; four of its records are on this page, word for word.
Thursday 12 November
Day 1: a loop that runs, then a loop that works
The jam opened at 00:00 on Thursday. We did not start from an empty project: the strike, collapse, camera and dust tests from before the jam came with us, but there was no game yet. At 05:07 the jam project was made from those tests and tagged prejam in git, so the line between before and after can be checked. Everything below happened in the jam.
05:07Thu
The first look: a concept round
The first job in the new project was a look. One concept round on the Higgsfield API made 27 text-to-image designs in 12 minutes. The drum-ring design won. The look changed again later; the thunder stayed. No concept image is in the game. Its models were built in Blender and Unreal, and the suit grew from a body Tripo made before the jam.
Concept round 1, hour five of the jam.
27 designs in 12 minutes, $2.05
06:05Thu
Hour six: the first loop runs start to end
Task J1 made a shot loop: six shots, placeholder UI, a scripted run from the menu to the result. The first package an hour later was 1,744 MB, over the 1 GB the jam page asks for. (Bigger builds may go up with itch's butler tool; the final build, about 1.9 GB, goes up that way.) Unused sample characters, 4K textures and denoiser models came out.
Hour 6: title, slate, CUT with stars, and play.
1,744 MB → 764 MB first package, after the cuts
08:47Thu
The lenses: our longest wrong turn
For about 45 hours, the player picked one of three camera lenses for each shot. Task J4, an orchestrator brief on Thursday morning, made them: WIDE, a crane at least 46 m up; SHOULDER, the strike view; LOW, 3 m up, looking up at him. The director asked for one lens per shot, and a hit seen through it paid x1.5. A "clean shot" bonus before it never paid once: 0 of 23 strikes, because his own body covered every hit.
On Saturday the gameplay judge found that on 15 of 20 cues the lens made no difference to the score. They were dropped the same morning, and the camera became one over-the-shoulder view, close or far.
The three lenses, Thursday. The director on each: WIDE "That's the shot! Print it!"; SHOULDER "Nice, but give it to me WIDE!"; LOW "Wasted! Nobody saw it!"
15 of 20 cues where the lens made no difference to the score
Commit 2a35f238
09:35Thu
Strikes that played no move
Kicks missed even whole walls. So the worker measured first: a strike test stood him at fresh walls at 24 strikes per type, at four distances and three angles; 12 of them inside his reach. The cause: the code held the punch and kick clips by a weak ("soft") pointer, so the engine's first memory clean-up, about a minute into play, threw them away. From then on a strike played no move. It showed only in the packaged game.
The fix held the clips for the whole game, swept the limb's path every frame, and gave the tail a 150 degree arc.
A kick lands on a wall in a later take: +$71, a new move.
Kick 0 of 12 → 12 of 12 inside reach, after the fix
Commit b77b0d45
11:49Thu
Why the monster was grey
His hide is storm-dark, but in sun he read mid grey. We changed one thing at a time on the same frame: specular, sky light, fog. None of them did it. The cause was our fixed exposure and a bright sunlit city. The fix touched his materials only: his base colour (albedo) times 0.25, much darker.
The old hide and albedo x0.25.
87 → 36 brightness of his back (of 255); the road stayed at 92
13:26Thu
The ending depended on the frame rate
Two runs on a busy GPU ran slowly and lost. So the worker ran the same scripted shoot at three frame-rate caps. Six causes came out: a test bot that turned a fixed share per frame, physics substeps capped too low, a strike tested at one point per frame, a hole that waited 3 frames before its push, a camera history only 8 frames long, and foot dust smoothed per frame. All now run on time, not frames.
52% → 139% of the film needed to wrap: the same slow run (20 fps) failed before the fix and won after
15:38Thu
Judge pass 1: 18 of 35
A fresh judge agent scored frames of the latest video on the jam's seven criteria. Its main point: the test autopilot won 29 of 30 stars, "so there is no pressure". It also found a black finale. The low camera had gone inside lamp posts, trees and parked cars, which the camera probe passed through.
Judge pass 1: the finale on the low camera goes black.
120 of 606 frames black in that video
17:32Thu
The finale tower gets health
The finale asked for one building to fall. It failed five times, each time for a new reason. Two of them: no whole wall at any strike spot, and the aim assist sending every hit to the neighbour. The worker stopped counting wall pieces and gave the tower health: 8 hits, 4 for thunder.
That evening: the cutaway shows the tower sinking floor by floor.
5 of 5 runs down on the first take
23:16Thu
Judge pass 3: "the first five seconds fail"
The third judge said the video opened on a grey card and a slate of small text. It said the build looked like a prototype: white noise on the monster, flat box cars, a tower that fades out. It also wrote a shot list for a 52-second video. We used it: the next video put gameplay first.
Judge pass 3: the first five seconds of the first video.
18 → 19 → 20 of 35 over the first three passes
Friday 13 November
Day 2: a real street, a real voice, three acts
01:24Fri
"A black blob with white pixel noise"
That was the judge on our monster. With the crack glow off, every speck went away. The glowing cracks were drawn sharper than the screen can show, with a hard edge, so each thin crack became one white dot. The same A/B method found two more noise sources: lit window glass and a scorch decal.
Before and after the crack glow fix.
6 → 2.5 crack glow; the white specks were gone
10:10Fri
A real street and a real voice
From 03:10 the project could use Epic's City Sample content. At 10:10 its street became the play map, and the director got a real voice: 162 spoken lines made with ElevenLabs.
An Act 1 run with a lens cue. The lenses were dropped on Saturday.
162 spoken lines for the director
12:20Fri
Six scenes become three acts
Chris looked at the slates that stopped play between the six short scenes.
"The slate just starts the stage, it doesn't interrupt the stage."
Six short scenes became three acts of free rampage, with the director's cues on top. The first acts ran 100, 110 and 120 seconds. The final game runs 60, 70 and 80.
17:08Fri
"Simplicity above all"
Chris asked for "simplicity above all": no black bars, no boxes, only the most necessary information. The design that followed allowed four things on screen at most, and the street gets the rest.
Act 1 from slate to CUT with the simple HUD (Saturday morning).
4 things on screen at most during play
Saturday 14 November
Day 3: the game changes into a score attack
05:15Sat
A 4 of 10, and the real game
A fresh gameplay judge read the code, the logs and the video, and scored the loop 4 of 10. The film was decided early, Act 3 had no stakes, and the acts played the same. Twelve minutes later Chris restated the core idea:
"a physics sandbox where all rules are off, and the goal is to destroy as much [...] as possible in the allotted time to get the highest score for the film, NOT just to get the shots the director wants - those are just multipliers."
So one score table now pays for everything, a combo meter goes up to x5, the director's calls became multipliers, and eleven stunts (18 by Sunday) pay for things he did not ask for. Every building can fall.
The old pass-or-fail endings, before the score attack: "THAT'S A WRAP! The film is made." or a studio memo, SHELVED: "We paid for a city in ruins. The city is mostly fine."
4 of 10 the loop, before the change
Commit 4967afc3
05:39Sat
Real-sounding names
The director names places, but nothing on the street said which building was which. The first signs said BANK and HOTEL. Chris asked for real-sounding names. The agent on the second PC rebuilt them in Blender as period signs: THE ASHCOMBE hotel, DOTTIE'S diner, ALTAMONT TOWER, THE ROXBURY cinema. All the names are invented.
DOTTIE'S diner: the first sign (left) and the rebuild (right).
8.5 of 10 from a fresh judge, for readability at game distance: the diner and the cinema; the bank and the market stayed at 7 or under
08:02Sat
"Still looks hella fake"
That was Chris on the street. The black rectangles on the road were 22 patches and the kerb strips: a wrong texture setting (the sampler type) made them draw pure black. A new ground material and 141 road and sidewalk decals went in. Two other steps were rolled back: one made the red buildings cream, one made the monster 17% darker.
The street before (left) and after (right).
0.36% → 0.01% of the road drawn black; cost 0.5 ms a frame
11:39Sat
Who is inside the suit
The agents had written Raiju as a real giant on a backlot. Chris corrected it:
"You're a human being. [Raiju]'s not an actor. [Raiju]'s the costume. It just happens that the costume is several stories tall."
So Raiju is a practical-effects robot suit on a full-size street set, and the player is the human who runs it. The score became dollars. Every text a person reads changed: the director's lines, the end screen, this page.
Commit 25aafb68
11:48Sat
A film before the game
Nine minutes later Chris asked for a story up front: "you are an actor. You get a call from your agent", in "at least a 60-second intro video". Its ten painted and ink stills come from Grok Imagine Image 2.0 through the Higgsfield API, from text prompts only. Its moving shots of Raiju are Blender renders of the game's own model. Val, the agent, is the ElevenLabs voice Sloane, chosen by Chris.
From the intro film: "the biggest robot ever built for a movie".
61 s in the game; ten stills for $2.03
17:48Sat
The judge passes: 18 to 23 of 35
With the score attack and the new stage in, the score rose from 21 to 23 of 35, measured by a fresh judge. Its main fault was the camera: "Most action frames use a steep top-down view, and in them you cannot see what he wrecks." Three more judges that night and on Sunday morning held at 23. Each named the next ceiling, from "a building falls about once a minute" to "a climax that pays and a camera that holds."
Pass 1 · Thu18
Pass 2 · Thu19
Pass 3 · Thu20
Pass 4 · Fri21
Pass 5 · Sat21
Pass 6 · Sat23
Pass 7 · Sat23
Pass 8 · Sat23
Pass 9 · Sun23
Judge scores out of 35, pass by pass (on wide screens the axis starts at 17.5). Each pass was a new judge agent scoring the jam's seven criteria, 1 to 5 each, so the scores are not one fixed scale. The last four held at 23.
18 → 23 of 35 over nine judge passes; flat at 23 for the last four
23:45Sat
Lost in his own dust
From Saturday evening the autopilot played the full game again and again at a fixed 30 frames a second, with sound. Each run was one take, and the judges watched takes. The judge on take 9 counted the seconds where you cannot see him: 35 of 209. The worst stretch was dust: "nine seconds of solid tan dust, he is gone." It also wrote: "The tower falls off screen."
The cure, overnight: dust now fades out near the camera, from 5 m to 15 m, and one dust system may cover at most 60% of the screen. A dust tool now also flags the fog seconds in every take.
The take-9 judge's frames, every 0.2 s, of the last seconds of Act 3.
35 of 209 s → 8 of 210 s with him hidden (17% to 4%), each counted by a judge
Sunday 15 November
Day 4: a hand test, a test PC, and the last fixes
05:03Sun
The tower that would not fall at the top setting
When the game became three longer acts on Friday, the finale tower's health went from 8 hits to 16. Sunday morning's judge found it still standing in both takes at Epic, the top graphics setting: one ended at 9 hits of 16, the other at 13 of 16. A climax that does not happen pays nothing. The fix was one number: the tower now takes 12 hits, not 16.
The tower comes down in the final reel (test PC, true 1080p).
16 → 12 hits then down in every fixed-step run: Epic 6 of 6, Medium 5 of 5, Low 3 of 3
Commit 50d00d08
05:17Sun
Chris plays it by hand
He played the packaged game at the test PC and wrote down what he felt. Three of these four notes were in the next take, about two hours later; the roar took until 09:15:
"On an ultrawide screen, I didn't even notice the pay going up." Now each gain of $20 or more pops up on screen as a number.
The crane "falls into the set, blocking the rest of the set ... maybe it needs to break apart". Now it breaks into its own 19 parts.
"Suggest that cars explode with no dust, and are left smoking/smoldering". Now cars burn and smoulder, with less dust.
The "monster roar sounds like he's in pain". The Audio lane made a new roar, a machine: it rises from 40-50 Hz to 86-100 Hz and never falls. The Monster lane reworked the roar pose too, so it "reads as power, not pain".
A later take: each gain pops up beside him, the change from his first note.
3 of 4 of Chris's notes were in the next take, two hours later; the fourth, the roar, by 09:15
How one of these notes became a change, step by step: see The crew.
06:52Sun
The title: from marquee to sodium light
Saturday's title screen was a gold cinema marquee with chasing bulbs. After his hand test Chris said: "the marquee look should only be for the end of stage screens". Three new looks were ready at 06:41. At 06:52 he picked B, the sodium workshop: the robot in warm sodium light, with one blue eye. At 10:00 the title word went bronze.
Saturday: the marquee.Sodium light, cream word.In the game: bronze word (11:14).
08:12Sun
A firewall box on the test PC
The game has no online play, yet on the test PC a Windows Firewall box asked for network access over the intro film and held it for 48 seconds. The cause was the engine's trace system: its control server listened on TCP port 1985 on every network. The fix stops the trace system at start. A check at 09:39 found no listening port at all. At 11:20 a second PC, started from a fresh folder, showed no firewall box, and the title came up in 7.2 s.
On the test PC, an RTX 4070, test 15 at Epic and 1080p ran Act 1 at 55 fps, Act 2 at 49, Act 3 at 36 and the final reel at 34.
48 s → 0 the box held the intro for 48 s; after the fix, no open port
Commit 4332bb20
09:01Sun
A frame-rate lock with two physics steps
Late in a shoot at Epic (the top graphics setting), the frame rate fell and stayed down. The first reading: once a frame takes longer than 33.4 ms, physics runs two steps in it, and the extra step keeps the next frames slow too. The obvious cure, one physics step only, made Act 3 slower on the test PC in a later run, so the setting stayed at two. The cause is not proven.
43 → 34 fps Act 3 on the test PC with one physics step: the cure was worse
09:30Sun
The camera that pumped
The take-9 judge saw the camera arm jump in and out, again and again. In one logged take the worker sorted every arm cut by cause. One rule, the one that framed him in the street corridor, made most of them.
A new steady mode replaces that rule. On the same test run as take 14 it cut the jumps in arm length by more than four fifths, though still above the target of 5 or fewer, and no pump was seen. At 11:26 Chris looked at the sheet and the numbers and chose steady mode.
The take-9 judge's frames, every 0.3 s: the view jumps in and out.
66 → 12 arm cuts in the same test run, before and after; in the logged take, one rule made 80 of 95
Commit 30594c99
10:03Sun
3.9 GB to 1.78 GB
Most of the growth from Thursday's 764 MB package came with Epic's City Sample street, the play map from Friday. We had capped texture sizes on Thursday, but that cap does not apply to virtual textures. So 174 City Sample virtual textures were still packed (cooked) at full size: about half the game data. A cook with them capped passed every check the full build passes. At true 1080p it looks the same from the game camera. Only Raiju's back, at the closest camera distance, is clearly softer, so his own textures are going back to full size.
The full build (left) and the small build (right) at the same take times.
3.9 GB → 1.78 GB the zip (3,947,299,084 → 1,776,133,967 bytes)
Commit b745ccd6
10:21Sun
The cover art
The covers went from daylight street scenes to a grey set. Chris turned the grey set down for its colouring. The next candidates used the game's own title look: dark, warm sodium light, the bronze word and the red stamp. He approved them, and that look opens this site.
The grey set: rejected for its colouring.The sodium look: approved.
10:24Sun
CUT!, then the pay
Chris played the build and ordered a new end for each act. Now the clapper shows alone in the centre for under a second. Then the act's pay counts up in the same spot, with him still seen behind it. At the end of the take, the grade and the count come up over his bow, then "Press any key", then the photos.
The still at 0.45 s: the clapper alone.The still at 1.4 s: the pay counting up.The take's end: the grade over his bow.
0.8 s, then 1.2 s the clapper alone, then the pay counting up
10:58Sun
A punch you can see from behind
Early on Saturday the orchestrator's state log was blunt: "the fist hides behind the torso from the game camera: the biggest drag". The camera sits behind him, so a straight punch is invisible. The fourth punch pass is an overhand: the fist rises high over his head, then comes down into the wall. In take 14 the wind-up reads from the game camera.
Before Take 12: the straight punch, half speed.After Take 14: the overhand, half speed.
Take 14 frame by frame: the fist over his head, then contact.
1 of 21 punches missed in a proof run
Commit f8399d78
10:58Sun
The bow nobody could see
Chris: "The bow is amazing - I think it needs to be more obvious, maybe 25% lower". The deeper bow then vanished under smoke. A fix cleared the effects at the last cut, and every bow frame came out clear. Then a building hid half of it, so a new check makes sure the game camera can see him. In take 14 the game camera saw all six check points on his body, with no cut.
Before Take 12: the bow under smoke.After Take 14: the bow in clear air.
6 of 6 points of the bow seen by the game camera
12:09Sun
Posters for the set
Four in-world film posters, made with OpenAI's GPT-5.4 Image 2 from text prompts, went into the build at 12:09. By 13:15 the billboard and the ROXBURY's front board were seen in play. See them in Made with.
12:47Sun
The bow, from the front
At 12:47 Chris asked to see Raiju from the front at the end of a shoot. The code landed at 13:10: a hard cut to a front three-quarter view, its spot tested with rays from 27 candidates, and the old camera as the fallback. The order the worker got is on this page, word for word. The last build with it was proven at 14:58.
The last build: 1.0 s after the wrap, the grade over him; at 2.0 s, the bow toward the lens.
12:47 → 14:58 from Chris's wish to the proven build
Commit 98bad3f9
13:50Sun
The standing loop: 22 effects, ranked every round
From 11:00 to 13:50 the effects lane on the second PC ran a loop over the 22 effects the game fires. Each round filmed every effect from the game camera's height, 45 m back, in its act's light. Fresh judges scored each one out of 10, and the weakest three or four were fixed before the next round.
Over four rounds the smash dust went from 3 to 7 of 10 (still 4 in the dusk light), the car landing from 3 to 6, and the footstep dust from 2 to 5. Timed against an empty view, no changed effect adds more than 0.2 ms, and all of them together stay under 2 ms. All four rounds are in the last build.
The smash dust, same camera and light: round 1 (judged 3 of 10) and after round 4's fix (7 of 10; in the last build).
3 → 7 of 10 the smash dust in Act 1 light, in the last build; under 2 ms for all 22 effects together
14:31Sun
The last build fails its own first start
The worker packaged the last build, test 15d, and started it once before anyone used it. Its log showed two faults. DLSS had not loaded: the packaged game drops a plugin that is marked optional. And the 64 Rodin crowd barriers would have drawn grey, because one material lacked a flag. The worker wrote that the zip was "NOT the build", the orchestrator stopped its send to the test PC, and both fixes went into a new package, named test 15d2, 11 minutes later. The status line, word for word.
11 min from the rejected first start to the fixed package
Commit 224b3406
How the crew worked
The agents, in detail
Who did what, the words this log uses, and four quotes from the crew's own files.
The orchestrator kept the plan file: the rules, the running state log, and one task brief at a time, each with steps that can be measured. It read each result, looked at the stills itself and picked the next task.
The Unreal worker on the main PC built each round: C++, Python, packaging, scripted proof runs, and a log entry with the numbers and the failures. One at a time, because the machine is shared.
Lanes worked in parallel, each in its own git branch and folder: the Monster lane (body, clips, set props, key art, in Blender), the Audio lane, the Beech lane on a second PC (buildings, signs, effects) and the Submission lane (this log, the credits, the video cut).
A test PC played the packaged game the way a player's PC would, and recorded the true 1080p takes.
Judge agents were fresh each time. Most scored the latest video on the jam's seven criteria and named the second of each fault; others scored one part out of 10 (the game loop, the animation, the signs, the effects).
Unreal assets are binary, and git cannot merge them. So each lane owns its folders, and a hand-off file says what is new, where it is, and how to hook it up.
Words used in this log
Take
One full run of the game by the autopilot, recorded frame by frame.
Round
One batch of work by the Unreal worker: merge, build, prove, report.
Orders
The orchestrator's numbered briefs to the worker.
Fixed-step run
A run where the game advances exactly 1/30 s per frame, so runs can be compared.
Test build
A numbered packaged build of the game (test 15d2, proven at 15:05 on Sunday, is the build that ships).
Lane
An agent with its own job, git branch and folder, working beside the others: the Monster, Audio, Beech (the second PC) and Submission lanes.
Epic, High, Medium, Low
The game's graphics settings; Epic is the highest.
Arm cut
A sudden jump in the length of the camera arm behind Raiju.
In the crew's own words
The brief → The orchestrator, Sunday 08:58 (orders 33)
an overhand punch: the fist rises high above his head in the wind-up, swings down into contact, and the upper body pitches forward after it: it reads from behind
Monster roar pass 4 [...]: chest thrown up and out and kept open [...] reads as power, not pain
This log was written by the site agent (the agent that builds this site) from the state log, the orders, the status files, the judge notes and the commits. Every number in it was checked against them at 15:10 on Sunday; four of them are on this page, word for word.
Read the real thing
Four records, word for word
For readers who want to check our work; the log above does not need them. A brief, an order, a status line and a judge prompt, as the agents wrote and read them. Disk paths are cut to the file name and machine details are trimmed, marked […] or [the PC]; nothing else is changed. The repository itself holds licensed assets, so it is not public.
The worker's brief for the round that made the last build (R8, Sunday morning; four parts of it)
# R8: THE ROUND THAT MAKES THE LAST BUILD (Sunday 2026-11-15). You hold [the PC]'s single Unreal slot and the main tree.
Game: "Raiju: The Director's Cut", Unreal Engine 5.8, a jam entry. The jam closes today 20:59 EST (late = disqualified). This PC's upload link is slow (a 1.8 GB build takes about 40 minutes to send, then the store processes it), so **the last build must be packaged, proven and named by 17:00, and nothing may be started after 16:30 that could break it.** Clock: the machine's (`date +%H:%M`). You follow R7, which packaged **test14b** (the small way, 1,777,620,166 bytes, main 5d68781c: the owner's steady camera, his new CUT card and end beat, the overhand punch and the other new clips, the new sounds, the bronze title). test14b is a build that can ship. Your job: **test15, a better build that can ship, by 14:30**; then, only if ORDERS says go, a second line with DLSS (**test15d**) by 16:30. At every moment the newest PROVEN package is the entry: never leave main in a state that does not build, and never replace a proven package's folder.
A change that fails its bar goes back to its old value, alone, and you go on.
[…]
A5. **One rendered take, `take15`** (Epic, seed 13, fixed 30, HUD on, every frame, to `take15`; plus the still flags `-RaijuCut2Stills`, `-RaijuEndBeatStills`, `-RaijuFilmDump`), and the same seed's end screen at seed 11 (Low is enough). By eye, one sheet each, with the frame numbers:
- the POSTER on the rooftop billboard in Act 2 from the game camera: right way round, readable; the billboard still breaks and sparks; part 1 still shows the poster after it lands (`r8_poster.jpg`). Too dark: `R8_POSTER_GLOW` 2, run the script again. Wrong way round: the flip switches. Broken: check the two mesh assets out again and say so first in your status (the poster is the entry's real use of an OpenAI model: the orchestrator must know at once);
- a chained punch (kick into punch): no snap; the log's largest bone move at a chained start under about 300 cm (was 700 to 1150);
- the end screen on both seeds: no still is a close-up of a toy, a spool or a flat block; every still logs a `rays` line (`r8_end_s13.png`, `r8_end_s11.png`);
- the grade word over the wrap plain to read; the CUT's small lines readable;
- the suit's back plates in a close frame against `small_vs_full_2_close_plates.png` (sharper than test13s's side);
- Beech's effects: a tanker blast that clears him inside 2 s, the punch's downward burst, the tower's fall as the biggest wave, wreck fires as small warm lights in Act 3; the effects' cost lines under the 2.0 ms bar;
- the steady camera's take-end lines.
Write "TAKE15 READY" with the folder (frames, mp4s, sheet, sound, log): the video, audio and art lanes wait for it.
[…]
A7. **Package test15** the small way to `test15` (+ a copy `VeryBad_Raiju_test15.zip`): zip bytes; first start with R7's small_build_check against test14b (nothing missing); the firewall socket list; one packaged real-time proof (Epic, seed 11) and one at Medium (seed 7) to the end screen: no crash, clean exit, the camera and `fairdt:` lines, the load. Write **"TEST15 READY"** the moment the zip and the first start are good; do not wait for the proofs to write it.
[…]
## Hand back by 17:00 (at most 25 short lines)
Which package is the entry and why (path, bytes, main's commit); the table of changes (numbers against bars, kept or switched off); the poster's proof; DLSS: shipped or dropped and why; the takes' paths and frame numbers; every FAIL; what the owner must look at; that no Unreal, game, cook or package process of yours is left running.
An order from the orchestrator to that worker: the front camera at the bow (ORDERS 53, Sunday 13:10)
ORDERS 53 (written by the orchestrator, 13:10 Sunday by [the PC]'s clock, for R8): FOR PART B (the last build), the front camera at the bow HAS LANDED: origin/game/oa 98bad3f9 (on main 59b3f289; never built). One file of code: RaijuSetCameras.cpp +393 lines (no header change; namespace RaijuW42Front; one new block in TickBowCamW24), plus SWITCHES.md part 17 (keep both sides). Switch raiju.end.bowfront: 0 = today exactly, 1 = a hard cut to a front three-quarter view when the shoot enters Screening (code default), 2 = a 1.0 s orbit to the same spot. The spot is tested with rays (27 candidate spots; if none passes, today's bow camera runs) and logs one line a take: `end: w42 bowfront: mode N, side L|R|front|fallback, dist D m, height H m, rays blocked B of T (...)`.
Merge it FIRST in Part B (before DLSS), build; compile fixes smallest, // R8. PROOF in Part B's one rendered take with -RaijuEndBeatStills (plus two Low seeds for the log line only): the 1.0 s still = him from the front three-quarter, fists up in the V, whole body in frame, the grade and the pay in the sky above him and nothing over his body; the 2.0 s still = the bow toward the lens; no wall, wreck or ground filling the frame; the cut lands on a clean frame (no 1-frame flash of the old view after it); the frame time at the wrap beat's first frame (its worst case is about 3,000 traces in one frame: say the ms); the stills screen and "Press any key" unchanged. Sheet r8_bowfront.jpg. BARS: if it does not compile after 15 minutes of small fixes: leave the merge out (revert it) and say so. If the still is wrong on one seed but right on the others: keep it (the fallback did its job) and say which. If it is wrong on most, or the first frame costs more than 100 ms: set raiju.end.bowfront=0 in DefaultEngine.ini (the code stays) and say so. Mode 2 is not wanted in the build: leave the default at 1.
A status line the worker wrote back: it rejects its own package (Sunday 14:31)
2026-11-15 14:31 TEST15D FIRST START (99 s): sockets PASS, nothing else missing, preset test picked MEDIUM […], BUT TWO FAULTS: (1) DLSS NEVER LOADED in the package: 'LogDLSSBlueprint: Error: IsDLSSSupported should not be called before PostEngineInit' x2 and 'dlss: ... supported no (IsDLSSSupported), mode off (TSR ...)': a 25 s start with LogPluginManager Verbose says 'Ignored optional reference to DLSS plugin; plugin was not built by target': this engine's game libraries are precompiled (UnrealGame, 13 Oct) and the Projects module's compiled-in UBT_TARGET_BUILD_PLUGINS list has no DLSS, so a monolithic package drops any OPTIONAL plugin reference that is not in it (PluginManager.cpp 2544). FIX: Raiju.uproject's DLSS reference no longer 'Optional' (SIDE EFFECT: a tree without Plugins/DLSS cannot open the editor; the packaged game is unaffected). (2) 'Material […] missing usage flag Nanite! Default Material will be used in game': the 64 Rodin crowd barriers would draw grey-default in the package. FIX: Nanite off on SM_Rodin_CrowdBarrier (r8_barrier_nanite_off.py, saved; 1,344 triangles). Both committed 224b3406. test15d's first zip (1,941,332,902 bytes) is NOT the build: repackaging as test15d (old folder moved aside).
A judge prompt: the Glass Box judge of this site's own round 12 (Sunday 15:02)
You are a jam judge for the Epic AI MegaJam. You have five minutes for this entry, and you are scoring the "Glass Box" angle: how honestly and clearly the pages show how AI agents and one person (Chris) made the game. The game is "Raiju: The Director's Cut" by Very Bad Games. It has two pages: the home page (the game) and the build log (how it was made).
Read the two pages as HTML text:
- index.html (home)
- index.html (build log)
Rules: do not open a browser, do not change any file, do not read other files.
Report, short and plain:
1. Score: home /10, log /10, with one sentence each on why.
2. For each page, the weakest three passages. Quote each one exactly, say why it is weak, and give a fix.
3. Contradictions between statements on the pages (quote both sides).
Keep the report under 450 words.
Made with
What we made with each tool
Host and partners first, then the other tools. "In the game": seen on screen in a take. "In the build": built in, not yet seen.
Jam partner
Anthropic: Claude Code
In the game: all the code
What we made: all the game's C++ and Python, the Niagara effects by script, the signs and the interface in Blender, and the judging. Claude Fable 5.2 and Claude Opus 5.5 ran as the orchestrator, the workers, the lanes and the fresh judges (see The agents).
How it went: 1,485 commits after the "prejam" tag by 13:00 Sunday; 82,244 lines of C++, about 88% written in the jam. The judges were Claude too, so they were not neutral judges of Claude's work.
Jam host
Epic Games: Unreal Engine 5.8
In the game
What we made: the whole game. The agents wrote the C++ and drove the editor by Python script. Epic's City Sample gave the street: cars and their wrecks, street props, road surfaces and decals. The Game Animation Sample gives Raiju's motion matching.
How it went: the City Sample street became the play map on Friday at 10:10. The game's C++ is 82,244 lines, about 88% written in the jam.
Jam partner
OpenAI: GPT-5.4 Image 2
In the game: the billboard and the front board · the side boards are in the build
In the game: the Raiju poster on the rooftop billboard.
In the game: the billboard down, face up.In the game: HIGH WATER on the ROXBURY.TWO FOR THE ROXBURY: a side board.NUMBER NINE: the other side board.
What we made: four in-world film posters, from text prompts only: the Raiju film for the rooftop billboard, and three made-up films for the ROXBURY cinema's boards, TWO FOR THE ROXBURY, NUMBER NINE and HIGH WATER. The titles and credits were set in our own type on top.
How it went: 22 calls made 20 images for $3.31 in all. We kept every prompt, call and cost in a generation record (not public). The billboard's prompt began:
Movie poster key art, no text, no letters, no logos, no watermark. A towering armoured robot kaiju suit, matte black plated hide with amber-orange panels and one glowing ice-blue eye, seen from low on a night city street, film-set work lights and a camera crane small at its feet. [...]
Jam partner
Hyper3D: Rodin Gen-2.5
In the game: 13 models in the camps
In the game (test 15d2): the tail camp, left, and the head camp, right.In the game: the chair and the camera at the crew camp, beside the old GRIP truck (a 4x crop).
Director's chair on a riser
1930s film camera on a tripod
Made 12:48 to 13:48; in the game except the megaphone and the boom microphone (a second lamp was not placed either):
Police car
Grip truck
Catering truck
Generator trailer
Megaphone on a stand
Star trailer
Craft table with canopy
Crowd barrier (64 copies)
Jersey barriers
Film lamp on a stand
Road cases
Camera dolly
Boom microphone
What we made: real 3D props for the film set, each from one text prompt. Thirteen more were made by 13:48 Sunday, to replace set pieces the agents had built by script in Blender; eleven of them stand in the last build’s camps, beside the chair and the camera: 15 made, 13 in the game.
How it went: 18 generations, 2.5 to 5 minutes each, about half a credit each (9 in all). Three first tries were rejected by eye and made again: a megaphone with a horn at both ends, a lamp with two lenses, a dolly with a loose part. A first try to place the vehicles swapped nothing (the old ones have collision, and the script left them alone); it was rolled back, and the fixed script placed them in the last build.
Jam partner
NVIDIA: DLSS 4.5
In the game
What it does in the game: on by default on RTX cards: DLAA at Epic, Quality at High, Balanced at Medium, Performance at Low. On other cards, or where it is not supported, the game uses its normal upscaler.
How it went: the first package of the last build dropped the plugin as "optional". The round's own first start caught it, and the build was fixed and packaged again in 11 minutes (the entry). We claim no frame-rate gain: none was measured when this was written.
Jam partner
Tripo
In the game: two combo moves
What we made: two combo moves from Tripo's animation presets. Before the jam, Tripo made the base body that became the robot suit (declared above).
Also made with
ElevenLabs (eleven_v3): the voices Ed (the director), Xavier (the announcer) and Sloane (Val, the agent).
Suno: Chris's own tracks for the intro film, the title, the level music and the end screen.
Higgsfield API with Grok Imagine Image 2.0: the intro film's ten painted and ink stills, for $2.03; earlier, concept art with Grok Imagine and Qwen Image 3, starting with a first round of 27 designs for $2.05 (none of it in the game).
CGAxis: wall materials and street props (lamps, trees, bins, benches, bus stop).
Zero Sky (Envato): the title's lettering.
Where it stands
The end of this log
15:10Sun
Sunday afternoon
This log stops here, at 15:10 on Sunday, about six hours before the jam closes. The last build, test 15d2, is proven on both PCs (14:58, and 15:05 on the test PC: "nothing wrong found") and is the build that ships: the front view at the bow, DLSS 4.5, 13 Rodin models in the camps, and all four rounds of the effects loop.
Still open as this is written: the final cut of the gameplay video (the home page shows a 49-second cut from the steady-camera takes). Chris submits once, by hand, before 20:59.
The wrap: fists up in the ruins (test PC, true 1080p).
1.94 GB the test 15d2 zip (1,941,433,172 bytes), the build that ships
What we learned
Lessons
Build the pressure first. A loop the bot wins with 29 of 30 stars is not a game. Judge pass 1
Package early and test the package. The strike clips the garbage collector freed showed up only in packaged play. Strikes that played no move
Change one thing at a time. Specular, sky light and fog, each tested alone on the same frame, were not the cause; the fixed exposure was. Why the monster was grey
Count before you fix. Sorting 95 camera cuts by cause found the one rule behind 80 of them. The camera that pumped
Use a fresh judge every time. Each of nine fresh judge agents named the next fault. Their scores (18 to 23 of 35, the last four at 23) are not on one fixed scale, so they show no clean climb. The judge passes
Done means three clean packaged runs. One good run proved little: the frame rate and the tower each passed some runs and failed others. The crew
Agents get the story wrong too. The agents wrote Raiju as a real giant. Chris made it a robot suit with a person inside, and every text a player reads changed. Who is inside the suit
Get a person to play it sooner. Chris's hand-test notes came on Sunday morning, and every one became a change. Chris plays it by hand