Period: September 13, 2025 Total Commits: 12
Quick Summary of Commits:
- 20:35: Display ‘Game not found’ and other server errors on loading screen
Daily Dev Update: Color Counters, Spawn Stars, and Safer Loading
Hey all — today was about making matchups deeper, economy choices clearer, and the loading flow less mysterious. We also cleaned up a handful of UI rough edges that were causing confusion at match start.
What’s New
MTG-style Color Identity + Resistances
We put in a Magic-inspired color system (White, Blue, Black, Red, Green) across towers and minions. Units now show color borders in the UI, and that identity actually matters in combat.
- Each minion now has resistances based on color relationships
- Baseline: 20% resistance to its “prey” and -10% vs its “predator”
- Practically, that means some clean counter-picks and a reason to diversify
In combat terms: high resistance means your bullets hit softer; negative resistance means they chunk harder. It’s not flashy, but it makes positioning and composition matter more in PvP.
[screenshot: unit cards with MTG-style color borders at 26a394b]
Spawn Upgrades (Levels 0–4) with Real Income Scaling
Spawns can now be upgraded up to level 4, with clear visual stars under the icon (gold for 1–3, red at 4). We tightened the economy math so upgrades feel predictable and fair.
- Costs double per tier: base → 2x → 4x → 8x
- Income scales at 1.8x per level with proper replacement (no rounding loss)
- Only the owner can upgrade their spawns; server validates gold/ownership
- Resistances for minions scale additively with level (+20% strengths, -10% weaknesses)
This pushes a real macro choice: commit gold to bigger waves now, or stockpile for tech elsewhere. It’s getting closer to the push-and-punish rhythm we want.
[screenshot: spawn point with star level indicators at be4c209]
A Loading Screen That Talks Back
The loading overlay now tells you what it’s doing and what went wrong when it breaks.
- Dynamic messages: Connecting → Loading history → Resyncing
- Animated spinner with a clearer text hierarchy
- If something fails, it shows a friendly-but-direct error and a refresh button
It’s not glamorous, but it means less guesswork when reconnecting to ongoing games.
[screenshot: loading overlay with spinner and dynamic messages at 73c558e]
HUD: “Waiting…” Level-Up State
The level-up button now reflects match readiness. If not everyone has selected their units yet, you’ll see a disabled “Waiting…” state with a tooltip explaining why.
- “Waiting… • All players must select units” during selection
- “Level Up • X Gold” when conditions are met
This avoids the “why can’t I click this” dance at the start.
[screenshot: level up button in Waiting state with tooltip at 7a0966a]
How to Play Page + Lobby Link
We added a How to Play page and hooked it into the lobby. It covers boards, units/towers, leveling, and the color wheel. If you’re onboarding a friend, this should cut down on back-and-forth.
What Got Fixed
- Fixed income math for spawn upgrades to preserve decimals (no silent rounding), plus a preview that shows next-level total and increase
- “Game not found” and invalid token errors now show on the loading overlay with clear language and a refresh action
- The level-up button no longer looks clickable when the match isn’t ready; tooltips explain the block
- Timestamp issues during replay/resync now surface user-friendly errors instead of failing silently
- Cleaned up server action types and timestamps so the client uses actual server times (less drift, fewer edge-case desyncs)
- Right-click clears spawn selection like the other panels for consistency
- Various TypeScript and import nits resolved; build is clean
Under the Hood
- Error handling got a dedicated callback in the server reader; instead of a vague “tick -1,” we pass real messages and still support the old signals for compatibility
- Added detection and messaging for missing timestamps during history replay, with better cleanup and restart behavior
- Server now supports spawn upgrades end-to-end with validation for owner, level cap, and gold checks
- Client action payloads standardized around server timestamps and player identifiers to reduce ambiguity
- General tuning: level cost progression adjusted for pacing; minion health scaling reduced to ease early snowballs
- Loading overlay styling for error states: accessible reds, big warning icon, and a clear retry path
What’s Next
- More PvP balance iterations on color matchups and income thresholds
- Better spectating/rejoining flows for long matches
- HUD clarity passes on blocked actions and economy changes
- Early work on tower synergies so color identity plays with abilities, not just damage taken
Thanks for the reports and the patience while we sand the rough edges. Keep the feedback coming — counter-pick stories and “this felt unfair” moments are especially useful right now.