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.
3.5 KiB
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) acceptground_rowparameter — platforms, enemies, and hazards are placed relative to the zone's ground level SEG_CLIMBconnector segment type: vertical shaft with alternating platforms, wall openings, optional moving platform and enemies, bridges height zoneslevelgen_generate()assigns zones per theme: Surface → LOW (row 43), Base → HIGH (row 17), Station → alternates.SEG_CLIMBauto-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.