Skip to main content
andremcmade — home
Menu

Experimental · Case study

Night Tide

An interactive riverfront courier story — typed exits, free-text referee mapping, inventory/HP flags, and multiple endings. No API key required to play.

Playable CLI and local web UI with four endings, save/archive, and a stub referee that swaps for live Jev later.

Abstract night quay gradient labeled Night Tide
Tech stack
  • Python
  • JavaScript
  • CSS
  • HTML
  • Pydantic
  • PyYAML
Categories
game-dev · ai-tooling

Problem

Most choose-your-own-adventure prototypes either hard-code every branch or lean on a cloud LLM for every turn. I wanted a story engine where the code owns state (flags, inventory, HP, heat) and a referee only labels which exit the player meant — including free text that is not on the button list.

Approach

Night Tide drops you on a rain-soaked quay with forged papers, one coin, and a sealed packet. You can run:

  • .venv/bin/python web.py — browser UI at 127.0.0.1:5050
  • .venv/bin/python cli.py — terminal, with --new to wipe the save

Nerve, caution, and heat (0–3) move with your choices. Four endings: clean berth, watched berth, detained, or packet gone. Leave TYPESAFE_API_KEY unset and a stub referee plays; set the key later to swap in live Jev — Groq is not wired yet.

Outcome

A self-contained Python story runtime with a thin web shell, finished-run archive under saves/archive/, and a clean seam for a smarter referee without requiring an API key to demo the night.

Changelog

  1. Web UI and archive of finished runs alongside CLI saves.

← All projects