TheFourthKnock

A short 2.5D goofy-noir murder mystery, creative-directed through an AI-native production pipeline.

An impossible locked-room killing.
A broken timeline.
Four knocks nobody can explain.

Plays in a desktop browser · keyboard · about 18 minutes · no install

Aren, Mira, Ada, Victor and Elias together by the lounge fire in Cedar House

01 · The game

Something happened at Cedar House.

The Fourth Knock is a short 2.5D murder mystery set inside Cedar House, a colourful creature guesthouse in the Western Ghats, cut off by the 1999 monsoon.

Aren Vale, a platypus traveller who was only passing through, becomes an accidental investigator when property developer Victor Soren is found dead inside an apparently locked room.

9:08 PM

Victor’s broken watch stopped.

9:14 PM

Everyone downstairs heard four knocks.

The murder has a rational solution. The knocks do not.

Aren in Victor’s room during the investigation, the desk lamp lit and rain on the windows
Victor’s room. The fixed, elevated camera shows the whole room; the story decides where you look.
The stopped watch clue panel: a cracked mechanical watch reading 9:08, with spots to examine
The stopped watch. Evidence opens as an illustrated panel with details to examine.

02 · The project question

Can AI systems be directed like a multidisciplinary production team, rather than used as isolated generators?

That was the experiment underneath the game.

One coherent creative direction had to survive every discipline: story, mystery design, game mechanics, illustration, 3D, animation, voice, music, sound and implementation. It had to survive a long production with handoffs between models, approaches that failed and deliberate pivots, and still arrive as a finished game someone can play in a browser.

03 · My role

I directed. AI systems executed.

I didn’t approach The Fourth Knock as a solo-programming exercise. I acted as its creative director and AI production director.

I defined the premise, the mystery, the characters, the gameplay, the visual direction and the quality bar. Then I directed AI systems through implementation, critique, iteration and final delivery: writing the briefs, reviewing each milestone, rejecting what didn’t serve the game, and deciding what shipped.

Directed

By me

  • Concept
  • Mystery design
  • Characters
  • Narrative structure
  • Gameplay direction
  • Visual direction
  • Tone
  • Product decisions
  • Critique
  • Model selection
  • Production pivots
  • Quality decisions
  • Final acceptance

Executed by AI systems, under direction

  • Programming & runtime
  • Asset generation
  • Environment construction
  • Animation implementation
  • Voice performance
  • Music & sound
  • Technical tooling
  • Testing & validation
  • Rendering & capture
  • Production fixes

Creative Direction · Narrative & Game Direction · AI Orchestration · Product Direction

04 · Creative north star

Goofy noir on the outside. Proper mystery underneath.

The world could be colourful, charming, funny and stylised, while the murder stayed serious. So noir never meant “make everything dark”. It came from framing, rain, lighting, negative space, typography, sound and the language of detection.

On the outside
Ada Moss, the tortoise who keeps Cedar House, welcomes Aren with her keys in hand
“This is still a guesthouse, not a pond.” Ada welcomes a very wet guest.
Underneath
Aren, Mira, Ada and Elias gathered in the dark upper corridor outside Victor’s door
Outside a door nobody answers.

Cozy enough to enter, noir enough to distrust.

Art direction

Warm shelter. Cold rain.

Every frame is built on one contrast: amber light, dark timber and warm textiles inside, cool blue monsoon light pressing at the glass. The rain stays outside, even in interior shots, so the house always reads as shelter.

Amberlamplight #F0C88B
Dark teaktimber #4B3124
Mustardbrass #CDA75F
Rust#B3533B
Moss#7D8A52
Creampaper #EFE4C8
Monsoon blue#2F4759
Charcoalink #111920
The covered veranda at night: rain beyond the roof, warm light from the lanterns and the open front door
The veranda. Warm light at the door, cold rain beyond the roof.
The lounge of Cedar House: a fire in the hearth, a patterned rug, a sofa and the staircase, blue rain at the windows
The lounge. Hearth, dhurrie, dark timber; the storm stays behind the glass.

05 · Gameplay

The player actually solves something.

This isn’t a walking simulator or a visual novel. You collect words, build deductions, bring them back to the people they contradict, and the case only moves when the logic holds.

  1. Observe
  2. Inspect
  3. Question
  4. Collect clue words
  5. Form deduction
  6. Re-question
  7. Resolve contradiction
  1. Observe

    Walk Cedar House in real time. Anything worth a closer look is marked in the world.

  2. The stopped watch inspection panel

    Inspect

    Evidence opens as an illustrated panel with details to examine.

  3. The conversation panel listing topics to ask Mira about

    Question

    Choose what to ask. Everyone answers in character, with a voice.

  4. A closer look at Mira, with details to notice

    Collect clue words

    What you notice becomes words in your case file.

  5. A Case Note with blanks to fill from collected clue words

    Form deduction

    Place clue words into a Case Note and test whether it holds.

  6. Aren presents a piece of evidence to Mira

    Re-question

    Bring evidence back to the person it contradicts.

  7. The realisation screen: 9:08 against 9:14, the connection breaks

    Resolve contradiction

    When the logic holds, the story moves forward.

Case Notes

The game makes your reasoning visible.

Instead of picking a culprit from a list, you build sentences from what you’ve found. The first contradiction is simple and it changes everything:

9:08the watch stopped
six
minutes
9:14four knocks

So the knocks cannot prove Victor was alive. It’s the first of four Case Notes.

Case Note 01. Clue words placed into a sentence, then filed. Real gameplay.

06 · Three pivots

Where the impressive option lost.

Three decisions shaped the game more than any single asset. In each one, the more technically impressive option was the wrong one.

Pivot 1

Full 3D → 2.5D

Before · prototype
The first technical prototype: a small low-poly lounge with tiny 3D characters and procedural furniture
The first technical prototype: full 3D, tiny characters, procedural props.
Before · full-3D hero
A fully 3D lounge with modelled human characters, built in Blender and rendered in Three.js
The full-3D hero scene: modelled characters in a modelled lounge. Better, but not first-page quality.
Before · my direction board
An early character board with a realistic human lead
My early reference board for a realistic human cast, generated in ChatGPT.
Redirect · my new board
A reference lineup of the illustrated animal cast: a platypus, a mongoose, a badger, a tortoise and a boar
The redirected board: an illustrated animal cast. Reference only; the game’s art was produced separately.
After · v1.0
The final game: illustrated 2D characters standing in the stylised 3D lounge of Cedar House
The shipped look: simple illustrated characters inside a tactile stylised 3D house.

The first direction was fully 3D: modelled characters in a modelled lounge. On paper it was the more ambitious option. In practice it was harder to keep consistent, more expensive per character and pose, less distinctive, and less suited to a short mystery that lives on faces and reactions.

I stopped it at the visual gate and redirected the whole look. The characters became simple illustrated cutouts, acted through expressive poses, inside a stylised 3D world. That constraint became the game’s identity.

Technical ambition is not the same as creative quality.

Pivot 2

Over-engineering the locked room

Rejected · simulate the trick sliding bolt + knob cord runs down under the door pulled fromoutside INSIDEOUTSIDE
619simulated cord segments
0.5 msphysics steps
128solver iterations

Still failed its own accuracy check after 0.474 simulated seconds.

Shipped · an ordinary spring night latch hold-back (released) spring bevelled tongue strike door pulled shut from outside
  1. Release the hold-back
  2. Pull the door shut
  3. The spring tongue catches

The locked room originally depended on a lace-and-bolt trick: a cord looped round a sliding bolt and pulled from under the door. The implementation responded by building a physics simulation of it, with hundreds of cord segments, friction models and force calculations. That was a lot of machinery for something the player only needs to understand.

I rejected it. The final mechanism is an ordinary spring night latch with a hold-back catch. It is deterministic, readable, and demonstrated in three steps the player performs.

Use the cheapest reliable system that delivers the intended player experience.

In the game. The reconstruction at Victor’s door.
Pivot 3

Sets → one real building

Before
An earlier build: Victor’s room floating as a standalone set in a dark void
An earlier build: every room was its own floating set.
After · v1.0
Now: walking in from the veranda. The veranda facade is the lounge’s west wall.

The earlier environment problem wasn’t asset quality. It was spatial coherence: each room felt like a separate set. So the house was planned as one building before any room was touched.

The veranda facade is the lounge’s west wall, with the same windows and the same door. The stair climbs through the lounge’s north wall into the corridor above. Every door hangs on real hinges and opens the same way from both sides, and leaving a room means walking through it.

Once the building made architectural sense, the atmosphere improved on its own.

VERANDA LOUNGEhearth VICTOR’S ROOM UPPER CORRIDOR 202
Cedar House in section. In brass: the front door in the lounge’s west wall, Victor’s door (202), and the stair through the lounge’s north wall.

07 · The opening, four times

Four openings. One target.

The 40-second opening (an unsigned letter, a night train, a ghat road, a lit house) was rebuilt several times. These four versions show the production method changing while the target held.

V13D cinematic

Version 1: Cedar House as a 3D render
Version 1: the bus on the ghat road in 3D
  • Technically polished.
  • The wrong medium for an illustrated cast.

V2Code-drawn 2D

Version 2: Cedar House drawn in code
Version 2: the ghat road and bus drawn in code
  • The right medium.
  • It felt programmer-generated.

V3ComfyUI painted + animated

Version 3: a painted Cedar House
Version 3: a painted ghat road with an inset sign
  • Painterly atmosphere and real motion.
  • Not every generated movement was equally strong.

FinalHybrid

Final opening: the painted Cedar House
Final opening: the code-drawn ghat road kept from version 2
  • The painted shots, the code-drawn ghat road, and the 3D move into play.

In V3, each painting was guided by the code-drawn layout of its own shot (Z-Image-Turbo with ControlNet), then brought to life with Wan 2.2 image-to-video. Aren himself is always the approved drawings, never regenerated.

The production method was allowed to change. The creative target was not.

08 · AI orchestration

How it was made

Different systems did different jobs. The direction held them together: briefs, critique, acceptance gates and the decision about what survived.

The centre

Creative direction

Nikhil Desai: vision, mystery, characters, quality bar, pivots, final acceptance

Primary AI builder · foundation

GPT-6 Astra

Early prototypes and research; the 2.5D build in the browser; the story, investigation, Case Note and Residual systems; the locked-room demonstration. It generated the illustrated character sheets with Codex’s built-in image generation.

Primary AI builder · production & finishing

Claude Opus 5.5

Creative audit and presentation; the Cedar House rebuild; Blender hero furniture; all four openings; the complete voice, music and sound pipeline; the final director’s polish; the trailer; and this page.

Visual & world

Pictures & places

ComfyUIZ-Image-Turbo + ControlNetWan 2.2 TI2V-5BBlenderCodex image generation
Runtime

The game

Three.js r180JavaScript modulesWeb AudioCanvas
Audio

Voice & sound

Chatterbox TTSKokoro-82M refsStable Audio 3Python DSP
Finishing & QA

Proof & polish

Headless ChromeFFmpegSpeech recognition QCDaVinci Resolve
Each tool’s actual job
GPT-6 Astrain CodexThe foundation: research, the first 3D prototypes, then the 2.5D browser build with its story state, investigation, Case Notes, Residuals and the locked-room demonstration. Generated the illustrated character atlases with Codex’s built-in image generation.
Claude Opus 5.5in Claude CodeProduction and finishing: the creative audit, acting and presentation, rebuilding Cedar House as one building, the hero furniture, the opening’s four versions, the full audio pipeline, the final defect pass, the trailer and this page.
ComfyUIlocal, 0.37Painted the opening’s plates (Z-Image-Turbo with the Z-Image Fun ControlNet, guided by each shot’s layout), animated them (Wan 2.2 TI2V-5B), and generated score, ambience and raw effects (Stable Audio 3 Medium).
Blender4.5 and 5.2, scriptedThe first full-3D hero scene; later the Cedar House exterior and the lounge and bedroom hero furniture, all built from Python scripts.
Three.jsr180, JavaScript modulesThe game itself: a browser-first renderer with no build step, a fixed orthographic camera, and the 2D cast as deforming cutouts in a 3D house.
TypeScript, Vite, Rapierprototypes onlyThe first full-3D builds and the cord-physics experiment from the second pivot. None of it ships: the game moved to plain modules with no build step, and the lock to a spring latch.
Chatterbox TTS + Kokoro-82Mlocal98 voiced lines, chosen from 713 rendered takes. Kokoro supplied original synthetic reference timbres only; no real person’s voice was used.
Python DSPnumpy, scipy, librosa, pyloudnormEditing, seamless loops, room acoustics, the Residual sound, loudness and every audio quality check.
Windows speech recognitionofflineIntelligibility and negation checks on every voice take.
Headless Chrome + FFmpegAutomated playthroughs and regression checks, deterministic frame-by-frame capture for the trailer and this page, and every encode.
DaVinci Resolve Studio21.1The trailer’s editable timeline. The final cut was rendered by a scripted compositor.
ChatGPTimage generationMy own reference boards for the visual direction. Reference only; none of it ships in the game.

09 · Audio

Audio was a production, not a layer.

Every line was cast, performed and checked. The score was made for the story’s states, and each space got its own air. The audio pipeline was its own project, with its own tests.

98voice lines
9music cues
10ambience beds
52effect files

One storm, different walls

The same monsoon, heard from four places.

Each clip is the game’s own ambience bed, at the game’s relative levels. Press one to listen.

The Four Knocks

Three strikes. A longer pause. A fourth.

The knocks are both a clue and the game’s sonic identity. Their rhythm is a contract, fixed wherever it appears: in the game, its captions, the letter’s underline, the trailer and the title.

How they were built
  • Each strike layers a generated knuckle-on-door transient, a floor thud for weight, and synthesised wood resonances.
  • At 9:14 they’re heard from the lounge, through the ceiling and down the stairwell. At dawn it’s the same strikes, heard through Victor’s door.
  • Strikes land at 0.15, 1.10, 2.05 and 4.30 seconds. The fourth is slightly firmer.
  • The mix was rebalanced so the wood still reads on laptop speakers.

10 · Quality control

“I didn’t knock.” “I did knock.”

16 of 18 generated takes were heard as the opposite.

Convincing isn’t the same as correct.

One line near the end of the story rests on a single syllable. The voice model kept swallowing the “n’t”, and speech recognition heard 16 of 18 takes as “I did knock”: the opposite meaning, in the line where meaning matters most. The automatic selection would have shipped the reversal.

So the pipeline gained a polarity test. Every line whose meaning rests on a negation (19 of them) is checked against its flipped twin, and a take heard reversed can’t be chosen.

AI output can’t be accepted because it sounds convincing. It has to preserve intent.

11 · Final polish

By the end, the project didn’t need more ideas. It needed fewer visible mistakes.

The last pass added no features. It hunted visible defects:

  • Head clipping
  • Sprite consistency
  • Furniture intersections
  • Collision
  • Depth & occlusion
  • Z-fighting
  • Door traversal
  • Staging
  • Eyelines
  • UI clipping
  • Audio start-up
2 mmthe size of the fix
Before · the table blinksAfter · 2 mm apart
The lounge table’s inlay and teak top sat at exactly the same height. The camera’s constant micro-motion kept flipping which surface won, so the table blinked. Real frames from the defect probe.
Aren’s head poses before and after the fix: seams at the neck in the old rig, continuous in the new one
Head clipping. Heads were separate cutouts, so a tilt could open a seam. Top: a simulation of the old rig, with gaps in red. Bottom: the final rig in engine, where each pose is one deforming mesh.

12 · Evolution

It didn’t come from one prompt.

  1. Concept

    The story, the rational murder, the unexplained knocks, the cast.

  2. Full-3D hero scene

    Full 3D direction

    Modelled characters in a modelled lounge. Stopped at the visual gate.

  3. The first 2.5D lounge

    2.5D pivot

    Illustrated cutouts inside a stylised 3D house.

  4. The browser-first build

    Browser-first architecture

    Plain JavaScript modules and Three.js. No build step; it runs in any modern desktop browser.

  5. The rebuilt veranda

    Cedar House rebuild

    One building, walked passages, doors that open both ways.

  6. The painted opening

    Hybrid animated opening

    Four production methods, one target.

  7. Full audio production

    Cast, score, rooms, the knocks, and a QA pipeline.

  8. The finished lounge

    Final director’s polish

    No new features. Fewer visible mistakes.

  9. The title

    v1.0

    Frozen, archived and playable. September 2026.

13 · The finished game

Case file

~18 minshort mystery
5principal characters
2Dillustrated cast
3Dstylised world
98voiced lines
Originalscore and sound
4Case Notes to deduce
3Residual events
1rational murder
4unexplained knocks

14 · What I learned

Four lessons

  1. Taste matters more when execution gets cheaper.

    Fast generation raises the value of deciding what deserves to survive.

  2. Constraints improve AI production.

    The game got stronger when it gave up the more technically ambitious 3D direction.

  3. Models need direction, not just prompts.

    The strongest work came from specifying intent and constraints, while leaving implementation free.

  4. Finishing is not generating.

    Final quality came from consistency, continuity, readability, pacing, testing and defect removal.

Reflection

Working creatively with AI felt less like operating a generator and more like directing an unusually fast multidisciplinary production team.

The systems can produce code, images, environments, animation and sound. They don’t decide which version deserves to survive. Throughout production one question stayed the same:

Does this serve the experience?

When the answer was no, the work changed, however technically impressive it was.

Find out what.

Desktop browser · keyboard · about 18 minutes · sound recommended