Add height zones, jetpack boost particles, and TigerStyle guidelines

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.
This commit is contained in:
Thomas
2026-03-01 14:57:53 +00:00
parent 9d828c47b1
commit ad2d68a8b4
8 changed files with 813 additions and 192 deletions

44
TODO.md
View File

@@ -41,29 +41,23 @@ Implemented: 3 moon levels connected by spacecraft takeoff/landing sequences.
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)
Add vertical variety to generated levels using a "height zones" approach:
- Double tilemap height from 23 to ~46 tiles (two screens tall)
- Define two elevation bands: HIGH (ground ~row 17) and LOW (ground ~row 40)
- Existing segment generators get a `y_offset` parameter so internal logic
barely changes — platforms, enemies, corridors all shift by offset
- New vertical connector segments (ramps/climbs) bridge between zones
- Theme decides zone usage: Surface stays LOW, Station uses both, Base uses HIGH
- Camera needs vertical look-ahead when player has vertical velocity
## ~~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)
### Implementation steps
1. Add vertical camera look-ahead (small Y lead when player moves vertically)
2. Create a handcrafted tall test level (~40x46) to validate camera, physics,
rendering, and entities all work with vertical scrolling
3. Refactor `set_tile()` / `fill_ground()` to accept a height parameter instead
of hardcoded `SEG_HEIGHT`
4. Add `y_offset` parameter to all segment generators
5. Add `SEG_CLIMB` connector segment type (shaft/platforms between zones)
6. Update `levelgen_generate()` to assign zones per segment and insert climbs
7. The station generator stays at 23 tiles (corridor envelope already constrains)
## Jetpack boost blue flame effects
- Add continuous blue flame particles trailing from the player during jetpack
boost (while boost is active, not just on burst)
- Add blue accents to the jetpack burst effect itself — mix blue flame particles
into the existing yellow/orange exhaust plume
## ~~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.