Add README
This commit is contained in:
@@ -0,0 +1,136 @@
|
|||||||
|
# SIEGE PROTOCOL
|
||||||
|
|
||||||
|
An inverted tower-defense game. You control the enemies — your tower kills them automatically. Every kill pays out more than it costs. Spend the profit on weapons, upgrades, and armor. Keep the tower alive as long as possible.
|
||||||
|
|
||||||
|
**Play online:** [siege-protocol on Gitea](https://git.44r0n.cc/44r0n7/siege-protocol)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## How to Play
|
||||||
|
|
||||||
|
Open `index.html` in a browser, or serve locally:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 -m http.server 8080
|
||||||
|
# → http://localhost:8080
|
||||||
|
```
|
||||||
|
|
||||||
|
No build step. No dependencies.
|
||||||
|
|
||||||
|
### Controls
|
||||||
|
|
||||||
|
| Input | Action |
|
||||||
|
|-------|--------|
|
||||||
|
| `1` – `0` | Deploy enemy type 1–10 |
|
||||||
|
| Mouse scroll | Adjust send quantity |
|
||||||
|
| `Space` | Open/close shop |
|
||||||
|
| `I` | Open/close inventory |
|
||||||
|
| `Esc` / `P` | Pause / unpause |
|
||||||
|
|
||||||
|
### The Loop
|
||||||
|
|
||||||
|
1. Deploy enemies using credits — each deployment costs credits
|
||||||
|
2. Your tower auto-tracks and kills them
|
||||||
|
3. Each kill pays a reward (always higher than the deploy cost)
|
||||||
|
4. Spend profit in the shop: more weapons, more weapon slots, tower armor/HP, shields
|
||||||
|
5. Survive until the tower dies or you go **bankrupt** (no credits, no enemies, can't afford anything)
|
||||||
|
|
||||||
|
**Reserve:** A minimum credit floor you set yourself. Keeps you from accidentally spending down to zero with no way back.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Enemies
|
||||||
|
|
||||||
|
| # | Name | Cost | Reward | Notes |
|
||||||
|
|---|------|------|--------|-------|
|
||||||
|
| 1 | GRUNT | 20 | 30 | Baseline. Weak to poison. |
|
||||||
|
| 2 | RUNNER | 30 | 44 | Very fast, low HP. Weak to lightning and poison. |
|
||||||
|
| 3 | BRUTE | 80 | 112 | High HP, 3 armor. Weak to void/fire/poison. Physical resistant. |
|
||||||
|
| 4 | SWARM | 60 | 84 | Spawns 6 tiny units at once. Weak to fire/lightning. |
|
||||||
|
| 5 | PHANTOM | 100 | 138 | 30% dodge. Void-touched. Weak to fire. |
|
||||||
|
| 6 | ICELING | 90 | 125 | Ice elemental. Immune to ice, weak to fire/lightning. |
|
||||||
|
| 7 | SPARKLING | 110 | 148 | Lightning elemental. Immune to lightning, weak to ice/void. |
|
||||||
|
| 8 | VENOM | 120 | 160 | Poison immune. Weak to ice/arcane. |
|
||||||
|
| 9 | WRAITH | 200 | 265 | Ignores 80% of armor. Weak to arcane (2×). |
|
||||||
|
| 10 | TITAN | 350 | 465 | 120 HP, 8 armor. Void weakness (2×). Extremely slow. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Weapons
|
||||||
|
|
||||||
|
| Weapon | Cost | Type | Notes |
|
||||||
|
|--------|------|------|-------|
|
||||||
|
| CANNON | free | Projectile | Starting weapon. Upgradeable piercing and crit. |
|
||||||
|
| FLAMETHROWER | 800 | Cone | Continuous fire cone. Applies burn DoT. |
|
||||||
|
| CHAIN LIGHTNING | 1,200 | Chain | Arcs between up to 3 enemies. |
|
||||||
|
| MORTAR | 1,500 | AoE | Lobbed shell, group-targeted. Slow reload. |
|
||||||
|
| POISON CLOUD | 1,600 | AoE | Lingering gas cloud with DoT. |
|
||||||
|
| FREEZE BOMB | 1,800 | AoE | Freezes enemies solid. |
|
||||||
|
| VOID CANNON | 2,000 | Projectile | Massive slow shot. Shreds armor. |
|
||||||
|
| LASER | 2,000 | Beam | Pierces all enemies in a line. |
|
||||||
|
| ARCANE TURRET | 2,200 | Projectile | Rapid bolts. Applies Amplify debuff (+25% damage taken). |
|
||||||
|
| MISSILE POD | 2,400 | Homing AoE | Fires at 3 targets simultaneously. |
|
||||||
|
|
||||||
|
Up to 8 weapon slots can be unlocked via the shop. Each weapon has its own upgrade tree (damage, fire rate, special stats, element infusion).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Elements
|
||||||
|
|
||||||
|
Seven elements with per-enemy resistances and weaknesses:
|
||||||
|
|
||||||
|
| Element | Color |
|
||||||
|
|---------|-------|
|
||||||
|
| 🔥 Fire | Damage over time, strong vs ice/void enemies |
|
||||||
|
| ❄️ Ice | Freeze, strong vs lightning/poison |
|
||||||
|
| ⚡ Lightning | Arc damage, strong vs fast/swarm enemies |
|
||||||
|
| ☠️ Poison | DoT, weak to most elemental enemies |
|
||||||
|
| 🌀 Void | Armor bypass, strong vs armored/phantom |
|
||||||
|
| ✨ Arcane | Amplify debuff, strong vs void and poison |
|
||||||
|
| 💢 Physical | Default element |
|
||||||
|
|
||||||
|
Weapons start with a default element. Purchase **Infuse slots** in a weapon's upgrade tree to add up to 3 additional elements.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tower Upgrades
|
||||||
|
|
||||||
|
- **Hull** — max HP (5 tiers, up to +130 HP total)
|
||||||
|
- **Plating** — armor (5 tiers, up to +16 armor total)
|
||||||
|
- **Servo Motors** — aim speed (6 tiers, near-instant at max)
|
||||||
|
- **Scanner** — targeting range (4 tiers)
|
||||||
|
- **Weapon Slots** — unlock slots 2–8
|
||||||
|
- **Field Repair** — one-time HP restore (repeatable)
|
||||||
|
- **Shields** — choose Dome Shield (all-direction) or Directional Shield (rotates to track threats), each with their own upgrade tree
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tech
|
||||||
|
|
||||||
|
- HTML5 Canvas, CSS, vanilla JS — no frameworks, no bundler
|
||||||
|
- 1600×900 logical resolution, CSS-scaled to fit any viewport
|
||||||
|
- High score persisted in `localStorage` (`siegeprotocol_best`)
|
||||||
|
- JS modules share globals; script load order in `index.html` is intentional
|
||||||
|
|
||||||
|
```
|
||||||
|
siege-protocol/
|
||||||
|
├── index.html # entry point
|
||||||
|
├── css/
|
||||||
|
│ ├── main.css # game UI
|
||||||
|
│ └── dev-console.css
|
||||||
|
└── js/
|
||||||
|
├── defs.js # enemy/weapon/upgrade definitions
|
||||||
|
├── state.js # game state and entity factories
|
||||||
|
├── main.js # game loop, init, high score
|
||||||
|
├── enemies.js # enemy AI and combat
|
||||||
|
├── weapons.js # weapon firing logic
|
||||||
|
├── shop.js # shop and upgrade system
|
||||||
|
├── renderer*.js # canvas rendering (split by concern)
|
||||||
|
└── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
||||||
Reference in New Issue
Block a user