diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..7ece9f0 --- /dev/null +++ b/TODO.md @@ -0,0 +1,35 @@ +# TODO + +## Distance-based sound effects +Sounds (explosions, impacts, etc.) should attenuate based on distance from the +player. Offscreen events far away should be inaudible. Add a helper that takes +a world position and scales volume by proximity to the camera/player. + +## 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 art and entity +Create placeholder pixel art for the player's spacecraft (fits the 16x16 grid +aesthetic but spans multiple cells, roughly 4-5 tiles wide by 2-3 tiles tall). +Needs at minimum: +- Landed/idle frame (visible near spawn on planet surface levels) +- Landing animation (descending + touchdown, 3-4 frames) +- Takeoff animation (liftoff + ascending, reuse landing in reverse) +Used in two contexts: +- **Level start**: ship flies in, lands at spawn, player exits, ship takes off + and leaves — serves as the level intro sequence +- **Level exit**: ship flies in and lands when player nears the exit zone, + player enters, ship takes off — triggers level transition + +## Asteroid refinement +- Reduce asteroid count significantly — occasional hazard, not a barrage +- Add slight horizontal drift so they fall at an angle rather than straight down +- Increase fall speed for more impact +- Stagger spawns more widely across the level