December Update: Quest System & World Polish (v0.3.0)
December Update: Quest System & World Polish (v0.3.0)
One month ago, on November 1st, we released Milestone 1 - a solid foundation of combat, progression, and exploration systems. The core mechanics worked. Character creation, combat, leveling, and exploration all functioned. But functional isn’t the same as compelling.
A world needs more than working systems. It needs stories. It needs consequences. It needs to reward exploration and manage itself gracefully. This December release - v0.3.0 - moves Chatsubo from “core systems work” to “world building.” The quest system brings structured storytelling to the sprawl. Automatic loot cleanup maintains immersion without manual intervention. And critical XP fixes ensure boss encounters reward appropriately.
This is still early alpha - we’re building toward a living world, not celebrating one. The foundation is solid. Now we’re constructing the experiences that will make Night City worth exploring when we open the doors to players.
Quest System: Stories in the Shadows
At the heart of v0.3.0 is something every MUD needs but few get right: a quest system that feels organic, not mechanical. We didn’t want waypoint-following checklist gameplay. We wanted stories that emerge from exploring the world, talking to NPCs, and discovering what happens when you walk down that dark alley.
The Foundation: Talk, Explore, Progress
Two starter quests are now live in Night City. Visit the Cheap Electronics shop and strike up a conversation with the proprietor. They might have a package that needs delivering. Head to Ninsei Street and chat with the street vendor - they might know something valuable about what’s happening in the back alleys.
Accepting quests feels natural. Walk up to an NPC and talk to them. Use common greetings - “hello”, “hi”, or just “talk” - and they’ll respond. If they have work available, they’ll let you know. No quest markers, no floating exclamation points, just conversation.
Once you’ve accepted a quest, the quest command shows your active objectives. quest log displays your history. Quest items you receive are protected - you can’t accidentally drop them or trade them away. The system respects your investment without micromanaging your actions.
Location-Based Triggers: Exploration as Gameplay
Here’s where it gets interesting. Traditional quests send you to an NPC to report progress. “Go here, kill that, return to me.” It works, but it’s predictable.
Chatsubo quests can progress when you discover locations. The information gathering quest sends you to investigate the Back Alley. When you enter that location, the quest advances automatically. No NPC to find. No item to click. Just exploration rewarded with progression.
This opens up entirely new quest patterns:
- Investigation quests where you piece together a mystery by visiting crime scenes
- Discovery quests where finding hidden locations reveals story elements
- Surveillance quests where you observe specific areas at the right time
You’re not following a GPS marker. You’re exploring Night City and watching your quest objectives update as you uncover the truth. It feels like detective work, not checklist completion.
The Dialogue System: NPCs That Converse
Behind every quest is the dialogue system - a YAML-based framework that gives NPCs personality and depth.
NPCs respond to keywords and context. Greet Ratz at the Chatsubo Bar with “hello” and he’ll respond in character. Ask about “work” or “quest” and he might have something for you. Each NPC has their own conversation tree, their own personality, their own secrets.
The system supports:
- Keyword-based responses - NPCs react to what you say
- Contextual dialogue - Conversations change based on quest state
- Quest integration - Dialogue naturally leads to quest acceptance and completion
- Multiple personalities - Each NPC feels distinct, not generic
It’s the foundation for richer storytelling. Right now, two quests use this system. By January, we’ll have quest chains with branching dialogue, moral choices, and consequences that matter.
The Player Experience: How Quests Feel
Let me walk you through a typical quest experience:
- You’re exploring Night City and wander into Cheap Electronics
- You
talkto the shop owner - They mention a package that needs delivery - risky stuff, corporate zones
- You
say yesto accept - The quest appears in your
questlog - You receive a protected tech package in your inventory
- You navigate to the destination using exploration (no fast travel cheat)
- You find the recipient and deliver the package
- The quest completes, you receive credits and experience
- The shop owner might have more work later (cooldown system)
It feels organic. The package is in your inventory - a real object you’re carrying. The destination is a place you have to find. The completion happens through gameplay, not through clicking “Complete Quest” buttons.
Quests aren’t checklists. They’re stories you experience by exploring the world.
Loot Cleanup: Keeping the Streets Clean
Here’s a problem every MUD faces: loot accumulation. Players defeat enemies, loot drops, and eventually the world is littered with rusted knives and damaged credsticks. It breaks immersion and bloats the database.
Traditional solutions feel punishing. Despawn items too quickly and players lose loot they intended to pick up. Don’t despawn them and the world becomes a junkyard.
The Solution: Smart, Invisible Cleanup
Chatsubo’s loot cleanup system runs silently in the background, cleaning up the world without punishing legitimate gameplay.
Tiered Expiration Timers:
- NPC loot: 15 minutes before expiration
- Player-dropped items: 30 minutes (extra forgiveness for accidental drops)
- Quest items: 30 minutes (protected longer)
Warning System: At 80% of an item’s lifetime, you see a message: “The rusted knife is deteriorating.” At 95%, a final warning: “The rusted knife is about to disintegrate.” Then it vanishes. You’re never surprised. You always have time to act.
Combat Protection: Items in rooms with active combat won’t expire. Finish your fight, loot the bodies, move on. The system waits for you.
Inventory Safety: Items in your inventory never expire, regardless of their dropped timer. Pick it up, it’s yours forever. The system only cleans up what’s sitting on the ground.
The Impact: Immersion and Performance
The streets of Night City now clean themselves. You’re not wading through piles of discarded loot. The world feels alive, not abandoned.
Database performance improves measurably. Fewer objects means faster queries, better scalability, smoother gameplay.
And most importantly: you don’t think about it. The system is invisible until it matters. That’s good design.
For admins, there’s comprehensive monitoring. The @loot_cleanup command provides stats, lists items approaching expiration, tests cleanup cycles, and displays configuration. Full visibility when you need it, automatic operation when you don’t.
Combat Rewards Fixed: Boss Fights That Matter
Let’s talk about the bug that shaped this entire release.
The Problem: 1 XP for Everything
During testing, we discovered something wrong. Defeating a Tier 3 boss - a brutal fight, high difficulty encounter - awarded 1 XP. Not 1,000. Not 100. One.
Testing a street-level Tier 1 enemy showed the same problem. Defeated in two hits, XP reward: 1 XP.
Same reward for the boss as the trash mob. Something was very, very wrong with the XP calculation.
The Investigation: Legacy Storage Patterns
The codebase is mid-migration. We’re moving from old-style direct database attribute storage (db.level, db.health, db.credits) to a new AttributeProperty system that’s cleaner and more efficient.
The problem: legacy NPCs in production had the old storage pattern. Boss NPCs with db.level = 6 and db.health = 999 in the database. But the new code only checked the AttributeProperty storage. When it didn’t find level data there, it defaulted to level 1.
Every NPC in the game was being treated as level 1 for XP calculations.
Additionally, boss HP was displaying incorrectly. A boss with 999 HP in the database showed only 100 HP in combat because the health manager didn’t check the legacy storage pattern.
The Fix: Comprehensive Fallback System
We added legacy storage pattern support to 23 methods across 4 managers:
- HealthManager (8 methods): health, max_health, damage, healing, edge
- EconomicManager (4 methods): credits, spending, earning
- ProgressionManager (8 methods): level, XP, cyberware tier
- CyberwareManager (1 method): attribute bonuses
Every method follows the same pattern:
- Check new AttributeProperty storage first (modern format)
- Fall back to legacy
db.*attributes (old format) - Use safe defaults if neither exists
No manual migration required. The system handles both formats gracefully. Legacy NPCs work. New NPCs work. The transition is invisible.
The Results: Rewarding Boss Encounters
Let’s revisit that boss fight:
Before the fix:
- Level 7 character defeats Level 6 Tier 3 boss (but boss detected as level 1)
- XP reward: 1 XP
- Boss displays: 100 HP (wrong)
- Impact: Boss encounters felt unrewarding
After the fix:
- Level 7 character defeats Level 6 Tier 3 boss (correctly detected)
- XP reward: 1,910 XP (appropriate for the challenge)
- Boss displays: 999 HP (accurate health value)
- Impact: Boss encounters now reward appropriately for difficulty
Boss encounters are finally as rewarding as they should be. The XP curve works. The difficulty scaling works. The entire progression system works as designed.
Combat Balance & Exploit Fixes
While we were fixing XP, we tackled several combat exploits that testing uncovered.
No More Running from Fights
The Exploit: During testing, we found you could simply walk away from combat. Use directional commands (north, south, east, west) to move between rooms and combat would… just end. No consequences. No defeat. Free escape.
The Fix: Added combat state checking to Exit.at_traverse(). If you’re in combat, movement is blocked with a clear message: “[BLOCKED] You cannot move while in combat!”
The Balance: The flee command still works for tactical retreats. Fleeing has consequences (movement to a random direction, potential for new encounters), but it’s there when you need it. We’re not removing escape options - we’re removing free escapes that trivialize combat.
Fair fights. No cheese tactics. Tactical depth preserved.
NPC Confusion Fixed
The Problem: NPCs encountering players with 0 HP would enter an infinite loop displaying “looks around confusedly.” Combat stalemate. Players stuck. NPCs stuck. Everyone confused.
The Cause: Multiple edge cases - race conditions in damage calculation, players waking from unconsciousness without proper healing, admin health manipulation, movement between combats before healing completes.
The Solution - Three-Layer Defense:
-
Combat Round Validation - Every round starts by checking combatant health. 0 HP detected? Trigger defeat handler automatically. Log warnings for debugging.
-
Movement Prevention - Players at 0 HP can’t traverse exits (except to clinic/limbo/respawn). This prevents entering new combat areas while unconscious.
-
Wake Command Validation - The
wakecommand validates health after healing but before removing the unconscious tag. No more waking at 0 HP.
The Result: NPCs properly engage healthy targets or trigger defeat handlers for unconscious ones. No more combat stalemates. 26 comprehensive tests verify all edge cases.
Quality of Life: The Polish That Matters
Sometimes the best features are the ones you don’t notice until they’re missing.
AFK System: Communication and Expectations
Real life happens. You’re in the middle of a conversation when your door rings. You step away from the keyboard. Other players send you messages. They wait. They wonder if you’re ignoring them.
Auto-Detection: After 30 minutes of inactivity, Chatsubo automatically marks you AFK. Your status in the who command updates. Other players know you’re away.
Auto-Reply: Set a custom AFK message with afk <message>. When someone sends you a tell, they receive your auto-reply. “AFK - dinner, back in 20” is so much better than silence.
Manual Control: Don’t want to wait 30 minutes? Use afk to toggle your status immediately. Need to mark yourself as back? afk again to clear.
Better communication. Clearer expectations. Fewer “are you there?” messages.
Tutorial Improvements: Never Stuck Again
The tutorial is the first impression for new players. It needs to always work, regardless of edge cases.
The Bug: Recent combat fixes added health and combat state restrictions to exit traversal. Smart for gameplay. Problematic for tutorial.
Tutorial participants could get stuck with 0 HP or in combat state. The CONTINUE command wouldn’t work. New players couldn’t progress. First impression: broken.
The Fix: Created TutorialExit class that bypasses health/combat restrictions. The tutorial is a safe learning environment. Game mechanics don’t block progression here.
The Result: Tutorial always works. New players can always progress. First impressions remain smooth.
Attribute Display: See Your Real Power
The Confusion: After installing cyberware, players would check their sheet command. Their attributes looked… the same? Did the cyberware even work?
The Problem: The sheet displayed base_attributes (stats without cyberware) instead of attributes (total stats with bonuses).
The Fix: Updated get_progression_summary() to return total attributes including all cyberware bonuses.
The Result: Install cyberware, check sheet, see your boosted stats. Visual feedback that your augmentations are working. No more confusion.
Web Portal & Admin Tools
For staff managing the game, v0.3.0 brings comprehensive web-based administration.
Player Management Dashboard
Visit the admin portal and see everything:
- All accounts with character counts and last login times
- Character details including level, role, online status, progression stats
- Online status real-time visibility into who’s playing
- Orphaned characters unowned characters flagged for cleanup
No more SSH required for basic player management. View everything from a browser.
System Diagnostics
The admin dashboard includes:
- Script health monitoring - Detect zombie scripts, view heartbeat status
- Performance metrics - See persistent script health and resource usage
- Loot cleanup stats - Monitor automatic cleanup cycles and performance
- Issue tracking status - Circuit breaker state, rate limits, sync health
Full visibility into system health from a web interface.
Content Management
Create and edit content without SSH:
- Help entry editor - Create, modify, delete help entries via web forms
- Announcement system - Post announcements visible in-game and on website
- Interactive tools - Manage game content without command-line access
Security Improvements
The Vulnerability: Anonymous users visiting /commands/ could see admin and builder commands. Not a critical security issue (commands still required permissions), but exposed internal capabilities to unauthenticated users.
The Fix:
- Updated
get_default_player_character()to exclude privileged accounts from command access checks - Anonymous users now see only ~71 player-level commands
- Admin/builder/debug commands properly hidden
- Added informative banner for anonymous users explaining what they’re seeing
Proper security. Clean public interface. Admin tools remain private.
Infrastructure & Performance
Behind the scenes, v0.3.0 includes significant performance and reliability improvements.
Database Optimization: Faster Queries
N+1 Query Elimination:
Added select_related() and prefetch_related() to character and account queries. Instead of N separate queries for N characters, one query fetches everything. Web pages load faster. API responses are snappier.
Database Indexes:
Created indexes for is_npc attribute filtering. Common queries (find all players, find all NPCs) run orders of magnitude faster.
Bulk Query Helpers: The cyberware command now loads all installed cyberware in a single query instead of individual queries per item. Eliminated the N+1 problem for inventory display.
The Impact: Significant performance improvement for web views and NPC systems. Queries that took N database round-trips now take 1. Faster, more scalable, better player experience.
Issue Tracking Integration Resilience
When external APIs fail, they shouldn’t take down your game. v0.3.0 implements comprehensive resilience patterns for issue tracking integration.
Circuit Breaker Pattern:
- CLOSED state: Normal operation, API calls succeed
- OPEN state: After 5 consecutive failures, stop calling the API to prevent cascading failures
- HALF_OPEN state: After 5-minute timeout, test recovery with a single request
- Auto-recovery when service comes back online
Error Categorization:
- TRANSIENT errors (network issues): Exponential backoff (1s, 2s, 4s), max 3 retries
- RATE_LIMIT errors: Wait for reset time, don’t retry
- AUTH errors: No retry, requires configuration fix
- PERMANENT errors: No retry, requires manual intervention
Graceful Degradation: After 10 consecutive failures, enter degraded mode:
- Sync interval increases from 15 minutes to 1 hour (reduce load)
- Auto-recovery on first successful sync
- Online admins notified of state changes
The Impact: External API failures don’t crash the game. System continues operating with reduced sync frequency. Automatic recovery when issues resolve. No manual intervention required.
Persistent Script Management
Scripts that survive server restarts are critical for reliability.
Combat Handler Fix:
Added at_start() method to properly re-initialize CombatHandler scripts after container restarts. Clears stale combatant tuples, re-registers active combatants from database. Combat survives server restarts without errors.
NPC Respawn System:
Replaced temporary delay() callbacks with persistent TickerHandler scripts. NPC respawn timers survive server restarts. No more lost respawn schedules after maintenance.
Loot Cleanup System: Global ticker script automatically recreates on server start. Item expiration timers preserved across restarts. No manual script management required.
The Impact: All game systems resilient to server restarts. No manual intervention. No player-visible disruption. Professional-grade reliability.
The Numbers: What We Built
v0.3.0 represents one month of intense development driven by player feedback.
Release Metrics:
- 25 incremental releases (v0.2.1 through v0.2.25)
- 1,200+ commits from the development team
- 12 major features across quest, combat, and infrastructure systems
- 9 critical bug fixes including the XP calculation issue
- Two flagship systems: Quest framework and automatic loot cleanup
Technical Achievements:
- Database query optimization eliminating N+1 problems
- Circuit breaker pattern for external API resilience
- Persistent script management for restart resilience
- Legacy storage pattern support for graceful migration
Player Impact:
- Boss encounters finally rewarding (1 XP → 1,910 XP)
- Quest system enabling structured storytelling
- Automatic loot cleanup keeping world clean
- Combat exploits fixed for fair gameplay
- Tutorial always works for smooth onboarding
One month. Foundation to living world. Driven by your feedback.
What’s Next: Expanding the World
The quest system foundation is live. The loot cleanup system works. Combat rewards properly. Now we build on this foundation.
Immediate (v0.3.x Patches)
Quest Content Expansion:
- More delivery and information quests using existing framework
- Additional NPCs with quest-giving capabilities
- Expanded dialogue trees for existing characters
- Quest chains with sequential objectives
Balance Adjustments:
- Monitor XP progression rates post-fix
- Adjust loot cleanup timers based on player feedback
- Fine-tune combat difficulty curves
Milestone 3 Planning (v0.4.0 - January 2026)
Branching Quest Lines:
- Player choices affect quest outcomes
- Multiple solutions to quest objectives
- Moral decisions with consequences
- Quest branches based on character role/reputation
Investigation Quests:
- Multi-stage mysteries to solve
- Clue-gathering mechanics
- Evidence analysis and deduction
- Discovery-driven progression
Enhanced Equipment:
- Weapons with damage types and special effects
- Armor with damage reduction and slot system
- Modification and upgrade mechanics
- Equipment tied to character level and role
New Districts:
- Industrial zones with factory combat areas
- Additional corporate sectors with higher-tier enemies
- Expanded slums with survival-focused content
- Waterfront areas with smuggling and pirate themes
Crafting System:
- Collect components from defeated enemies
- Craft consumables, equipment, upgrades
- Role-specific crafting specializations
- Economy integration for materials and recipes
Long-Term Vision
Dynamic World Events:
- Scheduled events affecting entire districts
- Player-triggered storyline changes
- Faction wars with territory control
- Live GM-driven narrative moments
Player Housing:
- Personal apartments for storage and customization
- Safe logout locations
- Crafting stations and workshop areas
- Display cases for trophies and achievements
Guild/Syndicate Systems:
- Player organizations with shared resources
- Territory control mechanics
- Faction-based objectives and rewards
- Internal rank structures and permissions
Cyberspace Implementation:
- True hacking gameplay in virtual reality
- Netrunning combat and infiltration
- Data fortress exploration
- ICE encounters and countermeasures
AI-Powered NPCs:
- Dynamic conversations using large language models
- Emergent behaviors based on player interactions
- Memory of past conversations and relationships
- Adaptive quest generation
These represent directions we’re exploring, not firm commitments. Player feedback continues to prioritize what gets built next. The roadmap adapts based on what you find most valuable.
Join the Development
Chatsubo is in active development and approaching alpha testing. The quest system is built. The streets clean themselves. The bosses reward appropriately. Night City is taking shape - and we need testers to help refine it.
How to Get Involved
For Alpha Testers:
-
Join Discord - Connect with the development team at Discord to request alpha testing access.
-
Get Testing Credentials - Once approved, you’ll receive registration details for the alpha server.
-
Connect to the Alpha - Use the web client at https://chatsubo.io or connect via telnet to
chatsubo.io:4000. -
Test the Systems - Run through the tutorial, create characters, test quests, find bugs, provide feedback.
-
Report Issues - Use the in-game
bugcommand to report what you find (automatically tracked).
Alpha testing is active development, not finished gameplay. Expect bugs, expect wipes, expect systems to change. Your feedback shapes what we build.
Connect With Us
- Discord: https://discord.gg/aD3eRKpb6h - Active community, development updates, direct access to the dev team
- Blog: https://blog.chatsubo.io - Regular posts about features, technical deep-dives, and development philosophy
- In-Game: Use
gossip <message>for game-wide chat andnewbie <message>for help from experienced players
We Need Alpha Testers
We’re actively recruiting alpha testers to help refine systems before broader release.
What alpha testing means:
- Testing incomplete features and finding edge cases
- Providing detailed feedback on game balance and mechanics
- Reporting bugs and helping validate fixes
- Understanding that progress may be wiped during development
- Direct communication with developers to shape the game
What you get:
- Influence over the game’s direction before it launches
- Recognition as an alpha contributor
- Direct access to developers via Discord
- The satisfaction of building something from the ground up
Interested? Join our Discord at https://discord.gg/aD3eRKpb6h and introduce yourself in #general.
Thank You
This release represents one month of focused development building toward something bigger.
To the early testers who’ve been running through systems and finding edge cases: thank you. The XP bug, the combat exploits, the dialogue flows - your testing uncovered issues we missed and shaped how systems work.
To the community members providing feedback on design decisions: thank you. Questions about loot cleanup timers, quest progression mechanics, and balance helped refine what we’re building.
To everyone engaging in Discord discussions and ticket feedback: thank you. Your input influences priorities and shapes what gets built next.
This is still early alpha. We’re building toward something compelling, testing systems, iterating on feedback. The world isn’t alive yet - but it’s taking shape.
This is what open development looks like. Keep the feedback coming. We’re listening and building.
Command Reference: Quest & December Features
Quest Commands
quest- View active quests and current objectivesquest log- See complete quest historytalk <npc>- Initiate dialogue with NPCssay <message>- Speak in room (greet NPCs with “hello”, “hi”, etc.)
Loot & Inventory Commands
inventory(ori) - Check your itemsloot- Pick up items from defeated enemiesloot all- Pick up all items in roomdrop <item>- Drop item (30 minute expiration timer)destroy <item>- Permanently destroy an item
AFK Commands
afk- Toggle AFK status on/offafk <message>- Set AFK with custom auto-reply message
Combat Commands (Updated)
attack <target>- Initiate combat (no more escaping via movement!)flee- Tactical retreat from combat (proper escape method)stop- Disengage from combat if possible
Character Progression
status- View character stats (now shows cyberware bonuses correctly!)sheet- Alternative to statuscyberware- View and manage installed augmentations
Essential Commands
look- Examine your surroundingsn,s,e,w- Move in cardinal directions (blocked during combat)who- See who’s online (shows AFK status)help <topic>- Get help on any commandquit- Leave the game safely
Social Commands
say <message>- Speak in current roomwhisper <player> = <message>- Private messagegossip <message>- Game-wide chat channelnewbie <message>- Help channel for questions
Fast Travel
taxi- Call a HoverTaxitaxi list- View unlocked destinationstaxi go <destination>- Fast travel to locationhome- Return to Chatsubo Bar
Support & Feedback
tutorial- Start or continue the tutorial (now never gets stuck!)hint- Get context-aware helpbug <description>- Report a bug (like that XP issue!)feature <description>- Request a featurehelpdesk <description>- Get staff supportmytickets- View your submitted tickets
The quests are live. The streets are clean. The bosses pay out. Night City grows.
Welcome back to the sprawl, choomba. The stories are waiting in the shadows. The foundation is solid. Now let’s build a world together.
December milestone complete. January expansion begins now.