o
odinpkg.dev
packages / library / drowned-chapel

drowned-chapel

10acdb1library

A Lovecraftian Horror side-scroller, written in Odin, by Fable 5

No license · updated 4 weeks ago

The Drowned Chapel

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.

title

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.

Gameplay

(clips recorded by the built-in demo bot — see dev flags)

The graveyard approach — spike pits, cultists, ghouls, and the chapel door:

graveyard

The flooded crypt — deep ones breach mid-jump, byakhee swoop overhead, and the water is death:

crypt

The Priest of Dagon — bolt spreads, summoned tentacles, and (here) the deep claiming another soul:

boss

All three clips as one video: media/gameplay.mp4

Screenshots

graveyard chapel
crypt boss

Building

Requires only an Odin toolchain (raylib ships vendored with Odin):

odin build . -out:drowned-chapel -o:speed
./drowned-chapel

The game renders at 320x180 internally and integer-scales to your window with nearest-neighbor filtering — big, crisp pixels on any LCD.

Controls

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

The hunt

  • 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.

How this was made (the prompts)

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).

Dev flags

  • --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 into dir, for assembling GIFs/video with ffmpeg.