cleo ๐Ÿ–ค

QuestLine โ€” Roadmap

Development roadmap for QuestLine โ€” what's done, what's next, and what's on the horizon. A Corn Collective production.

QuestLine Roadmap

Active codebase: questline-service (production). questline-dm is deprecated/maintenance only.

Model: Gemini 3.0 Flash (main) + Gemini 3.1-flash-lite (triage)

Infra: Hetzner questline-01, Docker Compose (FastAPI + PostgreSQL 16 + nginx)


Done (completed as of March 13)

  • Core combat loop (attack, damage, heal, initiative)
  • Character creation (join, class selection)
  • Level up โ€” level_up tool handles HP, proficiency, spell slots (March 6)
  • Short/long rest tools โ€” HP recovery, spell slot refresh (March 6)
  • Map generation
  • Inventory system
  • Campaign lore loading โ€” fixed campaign_dir resolution bug (March 6)
  • Narrative log (append_narrative)
  • send_group_message as tool โ€” DM's only way to talk, plain text = internal monologue (March 2)
  • 3-second debounce batching โ€” multiple player messages โ†’ one API call (March 2)
  • Natural language intent parser โ€” AI-powered, replaced rigid command parser (March 1)
  • Combat prompt tuning (tools first, narrate second) โ€” "THIS IS NON-NEGOTIABLE" (March 6)
  • DM silence rules โ€” expanded enumerated list + IO-layer OOC filter (March 12)
  • No unnecessary quotes rule (March 12)
  • Dice roll formatting โ€” ๐ŸŸข/๐Ÿ”ด/๐ŸŽฒ on separate lines (March 7)
  • Spawn with no gear โ€” scavenge before first combat (prompt fix) (March 7)
  • Campaign-reskinned equipment (no generic D&D items, prompt fix) (March 7)
  • DM auto-initiates on session start โ€” [SESSION_START] protocol (March 7)
  • end_campaign tool โ€” final epilogue, summary, outcome, session lock (March 6)
  • Dead lobby tools removed from service (session mgmt via REST API) (March 6)
  • state_dirty check before DB save (March 6)
  • Signal bot setup โ€” +14844820890, registered on Hetzner (March 11)
  • OOC message handling โ€” web: mode:"ooc" bypasses agent; Signal: ooc: prefix dropped at IO layer (March 12)
  • Action limit โ€” hard cap of 3 send_group_message calls per turn (March 6)
  • Session start protocol โ€” set scene, ask if party complete, STOP (March 7)
  • Player joined mid-session โ€” private whisper with recap + weave into scene (March 7)
  • Brevity rules tightened โ€” "1 sentence. Max 2." for routine actions (March 6)
  • Combat workflow in prompt โ€” spawn โ†’ start_combat โ†’ get_initiative โ†’ attack/damage โ†’ next_turn โ†’ end_combat (March 6)
  • Rest pacing guidance โ€” DM offers rests organically, not player-managed (March 7)
  • Emoji notation standard (questline-dm) โ€” stat lines beneath prose (March 7)

Now (v1 โ€” remaining)

  • ASI at levels 4, 8, 12, 16, 19
  • Class features on level up (Extra Attack, etc.)
  • New spells known/prepared on level up
  • Hit dice total increase on level up
  • Turn order / initiative bugs from playtest
  • Bespoke feats: prompt guidance for DM to grant narrative abilities based on player behavior (use update_player โ€” no new tools needed). Moved to v1 from v1.5 (March 6).

Soon (v1.5 โ€” polish)

  • Lobby phase โ€” pre-game in the same chat thread (no separate screen). DM greets players as they join (campaign-agnostic, neutral host). Character creation in lobby. No fiction until creator hits "Begin Adventure." [SESSION_START] fires then. session.phase: lobby โ†’ active. Design decided March 7.
  • Death/TPK policy (casual/standard/hardcore toggle)
  • DM Signal tags (@mentions for turn order)
  • "New" line marker for async catch-up (Trey)
  • DM auto-recap whisper when player returns (Trey)
  • Color-coded player names (Twitch-style)
  • Context window management (structured state docs, tiered summarization) โ€” key scaling challenge
  • Author names in chat bubbles
  • iOS keyboard/viewport fix (input field jumps to top, chat history disappears)
  • Chat history rehydration on WebSocket reconnect
  • Loop detection / max retry limit
  • Tap DM message โ†’ auto-scroll to triggering player message with highlight (Billy)
  • Campaign name + act marker in banner (Trey)
  • Online status in room info API โ€” WebAdapter has methods but they're never called
  • pc: prefix (player chat, DM ignores completely) vs ooc: (DM hears but stays OOC) (Sean, March 12 โ€” not yet implemented)
  • Stripe billing integration โ€” setup pending (carried since March 7)
  • New campaigns wired up in DB: Mice of Maplewood, Threshold (March 7)
  • Campaign narrator rethink โ€” skeleton DM doesn't fit Infinite Costco thematically (March 7)
  • Side-based initiative โ€” roll once per side, winning side acts any order (Kyle, March 1 โ€” consensus pending)
  • AFK handling โ€” turn timer, proxy commands, or side-based initiative (March 1)

Later (v2 โ€” features)

  • Solo Prologues (fka "alone mode"): players spawn solo at different map points, play through whisper channels, converge into party. Tutorial phase + asymmetric experiences + convergence. Elden Ring analogy (Ryan). Strong group consensus, March 6.
  • Split view toggle (DM narration top / party chat bottom) โ€” Billy's mockups
  • Fog of war
  • Voice chat integration for playtests (Trey's idea)
  • Live/catch-up mode toggle (Billy's mockup v2)
  • Billy's property system (emergent physics vs dice) โ€” AI holds hidden element property tables, outcomes from element interactions. Noita/Rain World/Divinity:OS emergence. Strong group support. May be the sweet spot for "AI as engine, not author." (March 1, reinforced March 13)
  • Campaign settings (difficulty, rest frequency, permadeath toggle)
  • Multi-campaign support (multiple groups, different worlds)
  • Per-player avatar (initials + color, skull for DM)
  • prefers-color-scheme light/dark support
  • Settings panel: display name, avatar color, credits, active sessions
  • Experience level setting for new players vs veterans
  • NPC personality tags: ~50 tokens per NPC, track personality/speech/disposition in structured state
  • Interstitial data: capture tone, demeanor, key dialogue in compressed form (Trey)

Ideas (unscoped)

  • Song generation for tavern scenes
  • NPC voice acting via TTS
  • Player-crafted items
  • PvP mechanics
  • Cross-campaign persistent world state
  • Trey's biofilm campaign: players are bacteria, solo prologues, converge into biofilm
  • Film Reroll mode โ€” reenact movies, each person gets a character
  • Collaborative campaign dev โ€” each person designs a room/zone
  • Open source BYOK (bring your own key) release
  • Roblox port (Ryan's agency has Roblox experience)
  • Game jam โ€” everyone builds their own version, play each other's

Active Playtest: KIRKLAND SIGNATURE EDITION

  • Campaign: The Infinite Costco #4488 (post-apocalyptic warehouse)
  • Players: Sean (Martha), Andrew (union organizer cleric), Matt (Dale, box-cutter hero)
  • Running on: Signal via questline-dm (deprecated codebase, last campaign before sunset)
  • Cost: ~$1.30/person/session, group willing to pay ~$2

Open Questions

  • Name: murmur.game leading candidate, no decision. questline.gg considered.
  • AI's role in product: Group discomfort with AI as core creative output. Preference for AI-as-infrastructure. Needs in-person discussion. (March 13)
  • Rolls + HUD: Full group (Ryan, Billy, Kyle) needs to weigh in before building (March 7)
  • Platform: Signal for playtesting, web for production. Signal useful for notifications/engagement but web is primary.

Built by the Corn Collective. All shucks, no bucks.