v0.27.1 March 14, 2026

Tavern Games, Crafting to 100 & New Maps

The Millhaven Tavern now has a card table. Sit down, place a bet, and try your hand at Circle of Seven (a territory control card game) or Founder’s Call (a Hold’em-inspired game). Win and you double your wager. Lose and it’s gone.

Crafting professions got their full endgame backbone. Migration 111 adds six tiers of content from level 1 to 100 — new harvest nodes (Gold Veins, Mithril Deposits, Starbloom Gardens), 80+ material items each with a hand-crafted pixel art sprite, and skill-based drop rates that reward investing in gathering professions.

Millhaven is also growing. Two new interior maps — Elara’s Home and the Millhaven Barracks — add explorable spaces and set the stage for upcoming quest content. The tavern and town maps also got layout updates from our production map editor.

Behind the scenes: GitHub Actions CI for automated testing, a database adapter test suite (the foundation for Steam/offline mode), 11 new NPC sprites, and tavern ambience audio.

Read the full devlog on EchoForge Studios →

— Bruno

v0.27.0 March 13, 2026

NPCs Come Alive: Schedules, Patrols & the Bug That Broke Everything

We’ve been building NPC schedules — NPCs that follow daily routines. A town guard patrols the streets in the morning, goes to the tavern for lunch, then resumes patrol at night. It sounds straightforward, but it required a complete rethink of how we track NPCs.

The old system was map-centric: each map managed its own NPCs. If a guard walked to the tavern but no player was there, the tavern map was never loaded, and the guard just vanished. When his shift ended, he was supposed to walk back — but there was nothing to walk back from.

The new schedule registry tracks every scheduled NPC globally, regardless of whether their map is loaded. When a player enters a map, the registry tells the map where everyone should be. NPCs exist in the world even when no one’s watching.

Here’s the punchline: after building all of this, NPCs still wouldn’t patrol. We spent hours tracing through schedule logic, waypoint loading, and state management. Turns out the tick loop was calling a function that didn’t exist (getPlayerCountOnMap), and JavaScript’s optional chaining silently returned undefined, so the player count was always zero. Every map was skipped on every tick. No NPC ever moved.

Two-character fix: changed the method call to the one that actually exists. Sometimes the hardest bugs are the dumbest ones.

Also in this release: Sentry error tracking on both the client and server, a smooth real-time clock display, and a cleanup pass that removed leftover client-side enemy spawning code that had no business being there.

— Bruno

v0.24.0 March 4, 2026

Generator Polish: Caves, Ruins & Interiors Come Alive

Last week’s map generator overhaul gave us 4-layer rendering, semantic buildings, and three new map types. This update is the follow-through — bringing every non-dungeon generator up to the same visual quality level.

Caves

Tunnels now have stalagmite formations along their walls, scattered bones, and flickering torches. Chambers are typed — the largest becomes the entry, the furthest becomes the treasure room with a chest and pillar formations. Two new atmosphere presets add crystal-blue or lava-orange lighting.

Ruins

Corridors get wall torches, ground debris, and overhead decoration on all four wall directions — cobwebs, vines, and banners. Rooms have type-specific decoration templates: entry rooms with stairs and flanking torches, treasure rooms with central chests, and a heavy-debris variant for the most decayed areas.

Interiors

Taverns, shops, temples, and storage rooms each get purpose-built decoration. Barrels in tavern corners, crates lining shop walls, flanking pillars in temples, and packed storage rooms. Doorway areas between rooms now have light scatter instead of bare tile.

Atmosphere & flavor

Five new atmosphere presets (Crystal Cave, Lava Cave, Overgrown Ruins, Cozy Interior, Dark Interior) and twelve new flavor texts bring mood and storytelling to every generated space. All decoration values are profile-driven, so no two caves or ruins need to look the same.

Read the full devlog on EchoForge Studios →

— Bruno

v0.23.0 March 4, 2026

Traps, Keys, and Dungeon Lore

This update is all about making dungeons feel dangerous and alive. Until now, dungeon floors were mostly about fighting enemies and opening chests. Starting today, the dungeon itself is trying to kill you.

Traps with real depth

We didn't want traps to be simple "step here, take damage" tiles. Every trap in Echo Quest runs through a full mitigation chain inspired by tabletop RPGs:

  1. Dodge check — Your evasion stat plus a class bonus determines if you leap out of the way entirely. Rogues and Rangers excel here.
  2. Armor reduction — If you don't dodge, your defense (physical or magical, depending on the trap type) reduces the incoming damage using the same formula as combat.
  3. Saving throw — One last chance: a class-based save roll can halve the remaining damage. Clerics and Warriors have the strongest saves.
  4. Status effects — Some traps don't just hurt. Poison traps inflict damage over time, ice traps slow you down, and lightning traps can stun you briefly.

There are seven trap variants — spikes, fire, poison, darts, ice, lightning, and pressure plates — and the deeper you go, the nastier the mix gets. Floor 1 might just have basic spikes. By floor 4 you're dodging hidden lightning runes.

Disarming

See a trap? Click it to try disarming it. Your class matters: a Rogue has a 50% base disarm bonus, while a Warrior sits at 10%. Level scaling pushes those odds higher over time. Succeed and you earn XP. Fail and… well, the trap triggers on you. Choose wisely.

Hidden traps & trapped doors

Some traps are invisible until your character gets close enough to detect them. Detection uses the same class bonuses as disarming — Rogues spot them first. On deeper floors, 20% of traps start hidden.

Doors can now be trapped too. Click a trapped door and you'll see a choice: try to disarm the trap first, or just force it open and eat the damage. Key-locked doors add another layer — find the key in a nearby chest before you can open them at all.

Flavor text

As you explore, you'll start seeing styled text panels appear with bits of lore, hints, and atmosphere. These are flavor text zones — hand-placed areas on the map that tell you something about where you are. An ancient library might describe the crumbling bookshelves. A dungeon entrance might warn you about what's below.

The text is stored in a reusable library so we can share the same descriptions across multiple maps. Each entry has its own color, icon, and display duration. This is a building block for richer storytelling as the world grows.

Desktop app & Steam

Behind the scenes, this release also includes the foundation for a standalone desktop app via Electron, with Steam integration for achievements, cloud saves, and rich presence. Single-player mode got local save protection and offline adaptations. This isn't player-visible yet, but it's the groundwork for our Steam launch.

Performance

Off-screen characters now pause their animations, and mobile devices get reduced particle counts for weather and combat effects. Small changes, but they add up — especially on longer play sessions.

Read the full devlog on EchoForge Studios →

— Bruno

Want to Try It Yourself?

Jump into Echo Quest and experience these updates firsthand — free to play, no download required.

Play Now View Pricing