forked from tas/major_tom
Level generator: add vertical variety with tall levels (46 tiles). Segment generators accept ground_row parameter, SEG_CLIMB connects height zones, transitions inherit predecessor ground row to prevent walkability gaps. Climb segments respect traversal direction. Jetpack boost: add blue flame particles during dash (burst + trail) and continuous idle glow from player back while boost timer is active. Camera: add 30px vertical look-ahead when player velocity exceeds 50 px/s. Fix flame vent pedestal in gen_pit to use ground-relative position instead of map bottom (broken in tall HIGH-zone levels). Add TigerStyle coding guidelines to AGENTS.md adapted for C11. Add tall_test.lvl (40x46) for height zone validation.
64 lines
3.5 KiB
Markdown
64 lines
3.5 KiB
Markdown
# TODO
|
|
|
|
## ~~Distance-based sound effects~~ ✓
|
|
Implemented: `audio_set_listener()`, `audio_play_sound_at()` with linear
|
|
attenuation and stereo panning. Used by enemy death, asteroid impact, and
|
|
powerup pickup.
|
|
|
|
## ~~Spacecraft art and entity~~ ✓
|
|
Implemented: spacecraft PNG spritesheet (5 frames, 80x48 each), full entity
|
|
with state machine (FLYING_IN → LANDING → LANDED → TAKEOFF → FLYING_OUT →
|
|
DONE), engine/synth sounds, thruster particles, level intro sequence with
|
|
deferred player spawn.
|
|
|
|
## Large map support (5000x5000)
|
|
Audit the engine for anything that breaks or becomes slow at very large map
|
|
sizes. Key areas to check:
|
|
- Tile layer allocation (`uint16_t *` for 25M tiles)
|
|
- Tilemap rendering culling (already viewport-clipped, verify correctness)
|
|
- Physics / collision queries (should only check nearby tiles)
|
|
- Entity updates (currently iterates full pool regardless of distance)
|
|
- Camera bounds and coordinate overflow (float precision at large coords)
|
|
- Level file parsing (row lines could exceed fgets buffer at 5000+ columns)
|
|
|
|
## ~~Spacecraft at level exit~~ ✓
|
|
Implemented: `spacecraft_spawn_exit()` with `is_exit_ship` flag. Proximity
|
|
trigger in `level.c` spawns exit ship when player is within ~2 screen widths
|
|
of an exit zone. Ship flies in, lands near exit. Player overlaps landed ship →
|
|
player deactivated, ship takes off, camera holds still, level transition fires
|
|
after ship departs (SC_DONE).
|
|
|
|
## ~~Asteroid refinement~~ ✓
|
|
Implemented: base speed 120→200, accel 200→350, respawn 3→6s, stagger 0-3→0-8s,
|
|
random horizontal drift (±60 px/s), moon level reduced from 24 to 8 asteroids.
|
|
|
|
## ~~Moon campaign: 3 levels with spacecraft transitions~~ ✓
|
|
Implemented: 3 moon levels connected by spacecraft takeoff/landing sequences.
|
|
- **moon01.lvl** (1000 tiles) — Exit triggers spacecraft, transitions to moon02.
|
|
- **moon02.lvl** (200 tiles) — Crater fields, tighter platforming. Spacecraft
|
|
intro, 7 asteroids, unarmed. Exit to moon03.
|
|
- **moon03.lvl** (150 tiles) — Dark side, hardest moon terrain. Spacecraft
|
|
intro, 5 asteroids, unarmed until gun powerup near exit. Exit to level01.
|
|
- **level01.lvl** — Space station with spacecraft landing intro (arriving from moon).
|
|
|
|
## ~~Level generator: height zones (verticality)~~ ✓
|
|
Implemented: tall level support (46 tiles, two screens) with height zones.
|
|
- Camera vertical look-ahead (30px lead when player moves vertically > 50 px/s)
|
|
- All segment generators (`gen_flat`, `gen_pit`, `gen_platforms`, `gen_corridor`,
|
|
`gen_arena`, `gen_shaft`, `gen_transition`) accept `ground_row` parameter —
|
|
platforms, enemies, and hazards are placed relative to the zone's ground level
|
|
- `SEG_CLIMB` connector segment type: vertical shaft with alternating platforms,
|
|
wall openings, optional moving platform and enemies, bridges height zones
|
|
- `levelgen_generate()` assigns zones per theme: Surface → LOW (row 43),
|
|
Base → HIGH (row 17), Station → alternates. `SEG_CLIMB` auto-inserted at
|
|
zone boundaries. Single-theme levels stay at standard 23-tile height.
|
|
- Station generator unchanged (23 tiles, corridor envelope constrains)
|
|
- Tall test level: `assets/levels/tall_test.lvl` (40x46)
|
|
|
|
## ~~Jetpack boost blue flame effects~~ ✓
|
|
Implemented: `particle_emit_jetpack_boost_burst()` (electric blue core +
|
|
blue-white flare, 18 particles mixed into regular burst) and
|
|
`particle_emit_jetpack_boost_trail()` (blue sparks + pale blue wisps,
|
|
3 particles/frame). Both activate only when `jetpack_boost_timer > 0`.
|
|
Burst fires on dash start, trail emits each frame during dash.
|