With the groundwork laid for dual inventories and switchable characters, we’re now encountering the real complexity: managing party state in a persistent world where both Ava and Gabriel are treated as living, autonomous entities.
This isn't just a UI-level feature.
Once you allow multiple characters to:
- Own separate inventories
- Participate in missions
- Be active or resting independently
You introduce systemic ripple effects across:
- Mission logic
- Combat logic
- Navigation
- Busy state tracking
- UI state and sync
Ava and Gabriel aren't just cosmetic variants or equipment carriers—they’re concurrent actors with persistent state. That makes seemingly simple decisions—like “switch character” or “start mission”—a web of coordinated system updates.
🧩 Mission Concurrency & Restrictions
Only the primary character can accept missions. But some missions are clearly centered on one character’s narrative—while requiring the other for gameplay execution.
This is already the case in early story arcs where Gabriel is the combatant, but the mission is Ava’s.
We now validate both narrative ownership and combat suitability before allowing a mission to begin.
🧠 Busy State Management
We’ve introduced a partyBusy
flag to indicate when a character is affected by another’s mission.
But we’re still refining how and when to apply it.
Questions we're working through:
- Should we mark the whole party as busy?
- Should only combatants be affected?
- What happens if you switch characters mid-mission?
This is less about technical correctness and more about maintaining narrative cohesion.
⚔️ Combat Entry & Participation
Combat readiness now respects each character’s BusyType
. If a character is resting, they’re excluded. If already in a mission or mid-combat, they’re locked out.
This maintains internal consistency, but adds significant validation complexity—especially when combat initiates dynamically from world events or story triggers.
📦 Inventory & Equipment Sync
Character switching in the UI isn’t just cosmetic—it reloads the backend state:
- Gear
- Inventory
- Available missions
- Mission progress
Everything is recalculated in real time. This was essential to ensure each character remains a functional entity—rather than a passive follower.
🎯 Why This Is Challenging—and Why We're Committing to It
Many games simplify this problem by treating the party as a single unit:
Everyone rests. Everyone fights. Everyone levels together.
Sporelight handles things a bit differently—not to be more complex, but to reflect the way its story is told.
Ava is always the emotional center. But Gabriel isn’t just a background character. He has his own state—his own logic for combat readiness, rest, and equipment.
That means switching characters isn’t just cosmetic—it’s part of the player’s planning and immersion.
“Gabriel may lead in the field—but Ava is the one you walk the world through.”
The goal isn’t to simulate a fully parallel system, but to make choices feel meaningful—even in a turn-based, text-driven world.
We’re not trying to be advanced for the sake of it—we’re trying to stay true to the story’s pacing, tone, and emotional structure.
💡 In Summary
This system isn’t just technical. It’s narrative infrastructure.
We’re walking a thin line between player flexibility and story coherence—ensuring Ava and Gabriel feel real, alive, and consequential in the world.
We’ll continue to refine this based on feedback and future mechanics, but this was a critical step toward deeper immersion and meaningful dual-character play.