Fizzkrieg
Category: Tactical Warfare / Tower Defense
Stack: Vanilla JS (browser), flat-top hex grid
Play it: Itch.io
Premise
Waves of attackers advance across a hex grid toward your defense line. You fire soda cans at them. Different soda types have different stickiness, splash radius, and pest attraction, and the cheapest ammo (HFCS) gets more expensive the more you rely on it.
The design question was: can ammunition economics alone create meaningful tactical depth without traditional upgrade trees?
Hex Grid
10x8 flat-top axial grid. Coordinates are (q, r) with six neighbors per hex. The defense line is r <= 1. If three or more attackers reach it, the game ends.
Terrain is procedurally generated per row band:
| Terrain | Blocks Movement | Provides Cover | Notes |
|---|---|---|---|
| Hot Pavement | No | No | Common in defense zone |
| Bare Lawn | No | No | Neutral ground |
| Lush Lawn | No | No | Units stuck on even rounds |
| Rock | Yes | Yes | Impassable obstacle |
| Building (Intact) | Yes | Yes | Impassable |
| Building (Collapsed) | No | Yes | Traversable cover |
| Debris | No | No | Traversable, no cover |
Row distribution shifts from pavement-heavy near the defense line to obstacle-heavy in the back rows, funneling attackers through predictable corridors.
Soda Ammunition
Three ammo types with fundamentally different risk profiles:
| Soda | Price (12-pack) | Stickiness | Fizz Radius | Pest Chance | Cap |
|---|---|---|---|---|---|
| HFCS | $12 (base) | 1.5 | 3 | 70% | 4 packs/wave |
| Cane | $50 | 1.2 | 5 | 45% | None |
| Unsweetened | $5 | 0.5 | 0 | 10% | None |
HFCS is the workhorse: highest stickiness, cheap, but capped at 4 packs per wave and its price inflates if you keep buying it. Cane is the premium option with the widest splash. Unsweetened is the safe fallback with no splash and minimal pest risk.
Splash Mechanics
HFCS and Cane splash to adjacent hexes. Splash count is min(ceil(fizzRadius / 2), adjacentCount). HFCS hits 2 neighbors, Cane hits 3. Splash applies a base 0.5 debuff with a 25% stack multiplier per additional unit on the same hex.
HFCS Scarcity Economics
The core economic tension. HFCS markup works on a 3-wave memory:
- Max out HFCS purchases this wave: markup increases by 120% for next wave
- Skip HFCS for 3 consecutive waves: markup resets to 0
This creates a boom-bust cycle. Heavy HFCS use in early waves makes it prohibitively expensive later, forcing a pivot to Cane (expensive but reliable) or Unsweetened (cheap but weak). The optimal strategy is rationing HFCS across waves rather than front-loading it.
Pest Ecology
Every hit (not dodge) rolls a per-unit pest check against the soda pest chance. Pests escalate through an aggro system tied to each hex:
| Aggro Level | Tier | Examples | Effect |
|---|---|---|---|
| 1-5 | Low/Dangerous (by soda) | Ants, wasps, flies | -2 to -4 AP |
| 6-7 | Dangerous | Skunks, raccoons | -4 AP |
| 8+ | Boss | Bear, wild boar, honey badger | AOE: 1 MP damage + -4 AP to all on hex and neighbors, sets stuck |
HFCS at 70% pest chance means heavy use on a single hex will eventually summon a boss pest that damages everything in the area, including units you were not targeting. This is the hidden cost of HFCS beyond its price inflation.
Dodge and Pity
Dodge chance scales with remaining AP: 0.15 + 0.60 * (ap / maxAp). Units at full AP dodge up to 75% of the time; debilitated units barely dodge at all.
The pity system prevents infinite dodge streaks. Each consecutive dodge reduces the next dodge chance by 10%, flooring at 10% of the original value. Recruits get a special best-2-of-3 roll: they are hard to hit but fragile when you do connect.
Cover terrain adds +15% dodge (capped at 95%). Stuck units on even rounds have their dodge halved.
Unit Types
| Type | MP | AP | Movement Pattern |
|---|---|---|---|
| Hero | 8 | 6 | Any adjacent hex |
| Elite | 5 | 4 | Left, right, or forward |
| Standard | 2 | 2 | Two front diagonals only |
| Recruit | 1 | 1 | Straight forward only |
Units are demoralized (killed) when accumulated debuffs reach their MP. Money drops on kill: 40% chance, 5-25% of base value (Hero: $100, Elite: $50, Standard: $20, Recruit: $5).
Win/Loss
- Victory: All attackers demoralized
- Defeat: 3+ attackers in defense zone, or out of all ammo with attackers alive
- Stalemate: If exactly 1 unit remains and no breach for 5 movement phases, it auto-withdraws
The ammo-based defeat condition is what makes the economics matter. You cannot just spam. You need to budget across the entire wave.