western-shooter/data/stage1.json
Developer b070bab2e3 Initial commit: Western Shooter - Complete implementation
Retro western vertical shooter inspired by Gun.Smoke, built with
TypeScript and WebGL2. Features 3-direction shooting, vertical
scrolling, economy/shop loop, boss fights, and CRT shader effects.

Phases implemented:
- Phase 1: Engine skeleton (WebGL2 renderer, fixed timestep loop, input)
- Phase 2: Shooting identity (3-dir shooting, bullet pools, collision)
- Phase 3: Enemies & patterns (JSON waves, 4 enemy types, parallax bg)
- Phase 4: Economy loop (pickups, shop, upgrades, HUD)
- Phase 5: Boss system (3 bosses, wanted posters, multi-phase attacks)
- Phase 6: Shader layer (CRT effects, bloom, scanlines, screen shake)
- Phase 7: Performance (VAO batching, O(1) allocation, stress testing)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 19:28:35 -06:00

66 lines
2.0 KiB
JSON

{
"id": "stage1",
"name": "Dusty Trail",
"scrollSpeed": 20,
"waves": [
{
"id": "wave1",
"duration": 5,
"spawns": [
{ "type": "bandit", "x": "center", "delay": 0 },
{ "type": "bandit", "x": "left", "delay": 0.5 },
{ "type": "bandit", "x": "right", "delay": 0.5 }
]
},
{
"id": "wave2",
"duration": 6,
"spawns": [
{ "type": "gunman", "x": "left", "delay": 0 },
{ "type": "gunman", "x": "right", "delay": 0 },
{ "type": "bandit", "x": "center", "delay": 1 },
{ "type": "bandit", "x": "random", "delay": 2 },
{ "type": "bandit", "x": "random", "delay": 2.5 }
]
},
{
"id": "wave3",
"duration": 7,
"spawns": [
{ "type": "rifleman", "x": "center", "delay": 0 },
{ "type": "bandit", "x": "left", "delay": 0.5 },
{ "type": "bandit", "x": "right", "delay": 0.5 },
{ "type": "gunman", "x": "random", "delay": 2 },
{ "type": "gunman", "x": "random", "delay": 3 }
]
},
{
"id": "wave4",
"duration": 8,
"spawns": [
{ "type": "dynamite", "x": "center", "delay": 0 },
{ "type": "bandit", "x": "left", "delay": 0 },
{ "type": "bandit", "x": "right", "delay": 0 },
{ "type": "rifleman", "x": "left", "delay": 2 },
{ "type": "rifleman", "x": "right", "delay": 2 },
{ "type": "gunman", "x": "center", "delay": 4 }
]
},
{
"id": "wave5",
"duration": 10,
"spawns": [
{ "type": "gunman", "x": "left", "delay": 0 },
{ "type": "gunman", "x": "right", "delay": 0 },
{ "type": "gunman", "x": "center", "delay": 0 },
{ "type": "rifleman", "x": "random", "delay": 2 },
{ "type": "rifleman", "x": "random", "delay": 2.5 },
{ "type": "dynamite", "x": "random", "delay": 4 },
{ "type": "bandit", "x": "random", "delay": 5 },
{ "type": "bandit", "x": "random", "delay": 5.5 },
{ "type": "bandit", "x": "random", "delay": 6 }
]
}
]
}