Dev log
Nocturnal Cycle - Shi no Yoru · Epic AI MegaJam 2026 · theme: Director's Cut · Nov 12-15
Two developers and an AI coding assistant built a hamster-on-a-wheel gothic castle game in three days. This is the honest version: what worked, what we threw away, and where the human steered.
The idea
Hammsing is a gnostic-Christian psychonaut hamster. He rides a hamster wheel through a castle toward a boss fight with Nyaacula, guided by Abraxas, a familiar made only of particles. "Director's Cut" is the hamster's name in the fake human world: he eats a misplaced teleport item and is pulled into the game.
Tone rules we set early: Nyaacula is not evil. Abraxas is neutral but unsettling, esoteric on purpose. No health bar; the screen darkens instead. The wheel is a found object you never keep.
Timeline
| When | What happened |
|---|---|
| Nov 11 night | Whisper research for voice notes. No game assets yet. |
| Nov 12 | Unreal Engine 5.9 beta connected to Claude Code through an MCP plugin. First prompt: "place a cube in the middle". Repo created. Style-sheet interview with both devs. Logo drawn as a vector, main menu built in engine. Hero art chosen from candidates. |
| Nov 13 | Moved from hosted tools to local ComfyUI (Flux.2 Klein, Wan 2.2, local voice). Fractal "save" trip effect. Intro and outro. Nyaacula and Hammsing voices in English and Japanese. Cross split out as its own asset. Castle Wall level started. 14-state animation sheet workflow. |
| Nov 14 | Cross became an engine overlay after generated clips drifted. Cave puzzle rooms rejected and replaced by story rooms. Floating island with ghost hamster audience. WASM package. Art site for voting on assets. Bosses split across the castle. |
| Nov 15 | Overnight generation run finished at 06:55. Animation sheet regenerated, hamster clips wired into the castle pawn, submission. |
What worked
Unreal Engine driven by an assistant
The editor was controlled over MCP, and bigger jobs ran as Unreal Python commandlets: levels, materials, menus, the cross glow. One rule learned the hard way: commandlets only run with the editor closed.
A fully local art pipeline
Flux.2 Klein edits made keyframes, Wan 2.2 image-to-video made clips, and voice and sound ran locally too. Reference-image edits beat text-only prompts for keeping the hamster looking like the hamster. About 37 final clips came out of 233 render folders of seeds and rerolls.
Design docs before generation
The animation sheet was planned on paper first: 14 states, 23 transitions, 136 frames. Decisions were written into a table (clean coat, 15 fps everywhere, 16 columns) so the rerolls stayed consistent.
The cross as an engine effect
Generating the cross inside video clips made it drift from frame to frame and look painted on. So we generated the hamster without it and drew the glow, pulse and sparks in the engine, driven by per-frame anchor points.
Rig from the original art
Two AI run cycles failed on consistency. Cutting the hero art into parts and animating those meant every frame reused the same pixels, which solved it and gave us the first playable hamster.
Whisper as the ears
The assistant cannot listen, so generated voice lines were checked by transcription. Takes that came out as noise were thrown away.
An art site for two devs
A small LAN web tool for viewing sheets, queueing rerolls, voting on clips and voting on audio, so both of us could pick the best of an overnight run.
Two devs, one branch
Commit straight to main, fetch first, fast-forward only. About 800 LFS objects pushed without overwriting the other dev's work.
What failed
| Problem | What we did |
|---|---|
| Hosted tools started for images and voice | "dont use elevenlabs. use comfyui". Local only from then on. |
| First cross art "very ugly" | Regenerated from final art, made a 3D version, scaled it up. |
| Cross drifted inside generated clips | Engine overlay with anchors. |
| First animation sheet "pretty unusable" | Rebuilt as a reusable workflow that works for any character. |
| Voice clips "all just noise" | Verified every take with Whisper, kept only the confirmed ones. |
| Sprite upside down, then mirrored; floor blown out white | Material fixes in the import script. |
| Rain fell up and did not collide; sky too bright | Reworked weather, sky and the darkening vignette. |
| Gold material looked wrong | Rebuilt it. |
| Four cave puzzle designs rejected: too clear, not fun, not like the inspirational art | Scrapped puzzles for story rooms and a floating island with ghost hamsters. |
| Longer garden made the eyes and towers vanish | Found a 100000-wide sky backdrop as the cause; reverted the expansion. |
| Two main menus, dead controls, no gamepad | Linked menu to castle to boss. |
| MetaHuman from a photo; candle-hall photo scan | Both dropped. "The art is just ugly ingame." |
| Clips at 6 to 27 fps, coat damaged in some clips and not others | Fixed 15 fps and a clean coat, then rerolled everything. |
| Fall poses ugly in every round | More seeds and an image-edit model comparison. Still the weakest poses. |
| Image-edit model got the pose but lost the character; Klein kept the character but ignored the pose | Proposed a two-step pipeline; a LoRA training script was written but not run. |
| Zombie editor process and a forced reboot | New rule: close the editor before builds. Both game and editor targets built. |
| Two GPU jobs shared one base image and corrupted a clip | One GPU job at a time. |
Where the human steered
- Killed: puzzle rooms, MetaHuman, the candle hall scan, the longer garden, the damaged coat.
- Chose: the golden hamster candidate, the clean coat, 15 fps, the engine-overlay cross, ghost hamsters on the floating island.
- Tone: sincere faith with a psychonaut hero. Esoteric on purpose.
"this sheet is pretty unusable. we need to fix this fundamentally as this will be used for other characters as well."
"don't you know how gold materials look like"
"fall_down is always ugly. why is this so hard to generate"
"i need the computer to be working 9 hours of generating new tries of content so we can pick the best tomorrow"
By the numbers
| What | Roughly |
|---|---|
| Commits on main | 15 over four days |
| Game C++ | 51 files, about 11,700 lines |
| Python tools | 51 |
| Claude Code sessions | 61, about 377 human prompts |
| Audio files | 96 |
| PNG frames and art files | about 5,000 |
What is still rough
- Fall poses and some three-quarter and side views of the hamster.
- The engine still reads the older 8-column sheet while the tools moved to 16 columns.
- A one-shot pixel-art sheet and sprite maker pivot was built as a kit but not run on real output.
Third-party content: the candle hall scan and Fab assets are listed on the submission page. Everything else was generated locally or made by us.