A Lovecraftian retro sidescroller written in Odin with raylib.
Disclosure: this game was created end-to-end by Claude (Fable 5) via Claude Code — all code, every pixel-art sprite, the level layout, and every sound effect were generated from the prompts listed below. There are no asset files: sprites are string-grids of palette characters baked into textures at startup, and all audio (including the ambient drone) is synthesized from raw samples.
A spectre bound to an arcane lash haunts a drowned chapel: a moonlit graveyard, a candlelit nave, a flooded crypt, and at the altar — the Priest of Dagon. Deliberate, punishing combat: knockback that loves spike pits, 3 lives, no checkpoints, no mercy. Movement is fully responsive — steer in mid-air, and the lash swings freely alongside everything else: run, jump, and whip at once. Monsters have no loyalty: their stray shots wound their own.
(clips recorded by the built-in demo bot — see dev flags)
The graveyard approach — spike pits, cultists, ghouls, and the chapel door:
The flooded crypt — deep ones breach mid-jump, byakhee swoop overhead, and the water is death:
The Priest of Dagon — bolt spreads, summoned tentacles, and (here) the deep claiming another soul:
All three clips as one video: media/gameplay.mp4
![]() |
![]() |
![]() |
![]() |
Requires only an Odin toolchain (raylib ships vendored with Odin):
odin build . -out:drowned-chapel -o:speed
./drowned-chapelThe game renders at 320x180 internally and integer-scales to your window with nearest-neighbor filtering — big, crisp pixels on any LCD.
| Key | Action |
|---|---|
| Arrows / WASD | move (full air control), crouch |
| Z / J / Space | jump |
| X / K | arcane lash |
| C / L (or Up+attack) | use relic |
| Enter | start / pause |
| Esc | quit |
- Arcane Lash — your whip. Two hidden upgrades extend its reach and bite.
- Relics (one at a time, fed by eldritch essence from candles and kills):
- Ritual Dagger (1 essence) — fast, straight.
- Eldritch Flask (3) — arcs, shatters, leaves burning ground.
- Seeking Eye (5) — slow, homing, pierces.
- The bestiary: patrolling cultists, lunging ghouls, breaching deep ones, swooping byakhee, hovering watchers, floor-born tentacles — and the two-phase Priest of Dagon.
- Death costs a life, your relic, your whip upgrades, and half your essence. The level restarts. Three lives, then the deep claims you.
Tips: the lash can cut enemy projectiles out of the air. Whip every candle. Water is death. Watch the dirt — when it rumbles, move.
Built in a single Claude Code session with the Fable 5 model, followed by a few refinement prompts. Verbatim:
1. The original request:
I want to create a retro sidescroller, but with good pixel art that works well on LCD screens and is not tiny (I have old eyes!). It should be a horror-theme (Cthulu vibe?) with multiple levels. Let's implement it in Odin! I don't want it to be too easy, I'd like to start with one challenging level with multiple weapon powerups and an array of villians
During planning, Claude asked three design questions; the chosen answers were: Castlevania-style deliberate combat (over Contra run-and-gun or Mega Man precision), lives with no checkpoints ("old-school punishing", over health-bar checkpoints or one-hit kills), and procedural retro SFX (over starting silent).
2.
how do I A) build and B) launch it?
3. Refinements after the first playtest:
nice! can you now A) change the main character, it looks a little goofy. If you can't do a realistic person, maybe a spectre or something, and B) I want to be able to do multiple keystrokes at once, like jump and lash, etc. and C) The funky physics where I can change direction in mid-air. D) have the monsters able to hurt each other
4. Clarifying C:
I think there was confusion on C); I want mid-air physics and the ability to change direction
5. This README:
Please create a README for this, including the prompts used to create it (disclosed it was created with Fable). Also include up-to-date screenshots and gifs/movie of gamplay, please
The gameplay clips above were recorded by a tiny heuristic bot that Claude added for exactly this purpose — it walks the level, lashes whatever comes close, jumps hazards, and holds its ground against the Priest (with mixed success).
--shot out.png— boot straight into gameplay, export a 4x screenshot of the internal canvas after one second, exit.--title— with--shot, capture the title screen instead.--at N— start at tile column N (handy: 70 chapel, 135 crypt, 195 boss).--record dir [--secs N]— let the demo bot play for N seconds (default 10) while dumping 30fps PNG frames of the internal canvas intodir, for assembling GIFs/video with ffmpeg.







