Game Rules — Spark Nexus
A fast 1v1 card battler built entirely from user-created cards. This document is the rules reference for players and the specification for the game engine in shared/game-engine/.
Design note: rarity has zero effect on in-game power. Card strength is governed by the power budget (02-data-model.md §3), which also sets the energy cost. Rarity only affects scarcity. This keeps games fair for players with few rare cards.
1. Objective and setup
- Two players, each with a 30-card deck (max 3 copies of any card).
- Each player has a hero at 15 HP and two towers (left and right) at 10 HP each.
- You must destroy both towers before you can attack the enemy hero. Reduce the enemy hero to 0 to win.
- Coin flip decides who goes first. The second player draws 1 extra card and starts with 2 hero armor as compensation.
- Opening hands: first player draws 3, second player draws 4. One mulligan: select any cards to shuffle back and redraw that many.
- Board limit: 6 creatures per side. Hand limit: 9 (drawing past it destroys the drawn card, revealed to both players).
- Empty deck: each further "draw" instead deals fatigue damage to your hero (1, then 2, 3, …).
2. Turn structure
- Start of turn: gain your energy for the turn; your creatures each gain 1 Charge; start-of-turn effects (Regenerate, Burn) resolve; draw 1 card.
- Main phase: in any order — play cards (pay energy), attack with creatures, use activated specials (pay Charge), Kindle (see §3).
- End of turn: end-of-turn effects resolve (Poison ticks); unspent energy is lost.
Energy: turn 1 gives 1 energy, growing by 1 per turn to a cap of 10.
Turn timer: 75 seconds. Timing out ends the turn; 3 consecutive timeouts is an auto-concede.
3. Kindle (unique mechanic)
Once per turn, you may Kindle: discard a card from your hand to gain +1 energy this turn. The discarded card is gone for the game (it can trigger nothing). Kindle is the pressure valve that keeps dead cards useful and makes hand size a resource.
4. Towers and combat
A creature may attack once per turn (creatures can't attack the turn they're played unless they have Eager). Attackers choose a target with this priority:
- Guard creatures block everything — if the enemy has any Guard, you must attack a Guard creature (not towers or the hero).
- Otherwise, if any towers remain, you must attack a tower (not the hero).
- Left Guard / Right Guard creatures force attacks onto that specific tower while it still stands.
- Once both towers are down, the hero is a legal combat target.
Damage resolution between creatures:
- If either side has Quick (and the other doesn't), the Quick creature deals its damage first; if the defender dies, no counter-damage comes back. Otherwise damage is simultaneous.
- Damage dealt = attacker's Attack − defender's Armor, minimum 1 ("chip rule": any attack always deals at least 1). Piercing ignores Armor entirely. Bastion grants +1 Armor while both of that creature's towers still stand.
- Attacking a tower or hero: no counter-damage. Siege deals +2 damage when striking a tower. Heroes absorb damage with armor first (if any).
Specials that target the "enemy hero" actually hit the enemy frontline: a living tower first (preferring a damaged one), then the hero once both towers fall. Explicit tower targets (randomEnemyTower, chosenEnemyTower, etc.) always hit towers only.
Creatures at 0 HP die immediately; on-death triggers resolve in play order. Destroyed towers stay at 0 HP and cannot be healed back into play (healing only works on standing towers).
5. Status effects and Resistance (unique mechanic)
Specials and traits can apply four statuses. When a status is applied with potency V, the target actually receives max(0, V − Resistance) stacks — Resistance is a flat shield against all statuses (there is deliberately no elemental type chart).
| Status | Effect per stack | Duration |
|---|---|---|
| Poison | 1 damage at end of its owner's turn (ignores Armor) | Until dead; stacks decay by 1 after each tick |
| Bleed | 1 extra damage taken whenever it attacks or is attacked (ignores Armor) | Permanent, stacks |
| Burn | 2 damage at start of its owner's turn (ignores Armor) | One tick, then expires |
| Stun | Creature skips its next possible attack; can't use activated specials that turn | One turn per stack |
Statuses never affect heroes or towers (they only take direct damage / healing).
6. Traits (keywords)
Fixed list; a card may have up to 3. A card may have at most one of Guard / Left Guard / Right Guard. Budget cost in parentheses feeds the power-budget algorithm.
| Trait | Rules text | Cost |
|---|---|---|
| Guard | Enemies must attack your Guard creatures before towers or your hero | 2 |
| Left Guard | Enemies must attack your left tower before your right tower or hero (unless a Guard creature is present) | 2 |
| Right Guard | Enemies must attack your right tower before your left tower or hero (unless a Guard creature is present) | 2 |
| Eager | Can attack the turn it's played | 3 |
| Quick | Deals combat damage first; takes none back if the defender dies | 3 |
| Piercing | Its attacks ignore Armor | 3 |
| Venomous | Its attacks apply Poison 2 | 4 |
| Leech | Damage it deals also heals your hero for the same amount | 3 |
| Sturdy | The first time it would die each game, it survives at 1 HP | 2 |
| Sneaky | Can't be attacked or targeted by enemy specials the turn it's played | 2 |
| Frenzy | +2 Attack while damaged | 3 |
| Regenerate | Restores 2 HP at the start of your turn | 3 |
| Volatile | When it dies, deal 2 damage to all enemy creatures | 4 |
| Siege | Deals +2 damage when attacking a tower | 3 |
| Bastion | While both of your towers stand, this creature has +1 Armor | 2 |
(Trait list is intentionally small at launch; new traits are a content lever for later seasons.)
7. Specials and Charge
A card's special (structure in 02-data-model.md §2) is one of:
- Triggered (
onPlay,onDeath,onAttack,onDamaged): resolves automatically when the trigger fires. - Activated: costs Charge points. Creatures enter play with 0 Charge and gain 1 at the start of each of your turns (visible as a glowing pip on the board). Activating costs 1–3 Charge per the card's configuration and doesn't consume the creature's attack. Charge is the tempo engine — it lives on the creatures themselves.
Targets include creatures, heroes, and towers (random / chosen / all for each side).
Example cards the system can express:
- "Mudback Tortoise" — 2/9, Armor 3, Guard. When this dies, grant 2 Armor to all allies.
- "Ratfink Arsonist" — 4/3, Eager. Activated (2 Charge): apply Burn 2 to a chosen enemy.
- "Saint Lupa" — 3/6, Leech, Regenerate. When played, heal all allies 2.
- "Tower Warden" — 1/4, Left Guard. When played, restore 2 health to a chosen friendly tower.
8. Winning, records, and rewards
- Win by reducing the enemy hero to 0, or when the opponent concedes/disconnects for over 60 seconds (see 05-realtime-and-matchmaking.md for reconnect rules).
- Results are recorded to
gamesand the players' win/loss tallies (shown on profiles, reserved for future matchmaking ratings). - Rewards: winner +3 Sparks, loser +1 Spark (capped at 15 rewarded games/day to deter farming).
9. Balancing levers
All tunable numbers live in one shared constants module: power-budget coefficients, rarity bands, trait costs, special pricing table, pack odds, status rules. Playtesting in Phase 6 of the roadmap adjusts constants without touching engine logic. Rejected-by-moderation cards are unusable in games from the moment of rejection (validated at deck-lock).
