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:
44
TODO.md
44
TODO.md
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user