escape/assets
Brian Fertig 1c3bed3beb feat: add door/keys system, patrol paths, and data-driven pickups
- Implement sliding door mechanics (open/close with E key, auto-close, locked doors)
- Add key system (gold/silver keys) with data-driven pickup definitions in pickups.json
- Add enemy patrol path editor in editor.html (click to select, add points, move/remove)
- Implement enemy patrol AI that follows authored paths in a loop
- Migrate pickups from hardcoded to data-driven config (effect, amount, key grants)
- Update raycaster to handle door openness for rendering and collision
- Add HUD key chips display and "door locked" messages
- Add Gold Door and Silver Door wall types with matching key pickups
- Update level1 with patrol paths and gold key pickup placement
2026-07-01 23:08:48 -06:00
..
textures feat: data-driven content with JSON configs, textured walls, and editor overhaul 2026-07-01 22:14:37 -06:00
RAW-Gun.png feat: data-driven content with JSON configs, textured walls, and editor overhaul 2026-07-01 22:14:37 -06:00
README.md feat: add door/keys system, patrol paths, and data-driven pickups 2026-07-01 23:08:48 -06:00
gun1.png feat: data-driven content with JSON configs, textured walls, and editor overhaul 2026-07-01 22:14:37 -06:00
gun2.png feat: data-driven content with JSON configs, textured walls, and editor overhaul 2026-07-01 22:14:37 -06:00
gun3.png feat: data-driven content with JSON configs, textured walls, and editor overhaul 2026-07-01 22:14:37 -06:00
gun4.png feat: data-driven content with JSON configs, textured walls, and editor overhaul 2026-07-01 22:14:37 -06:00
gun5.png feat: data-driven content with JSON configs, textured walls, and editor overhaul 2026-07-01 22:14:37 -06:00

README.md

Spritesheets

Full art brief — every sheet with dimensions, frame maps, and drawing notes — lives in sprites.md at the project root.

Art is optional: any sheet that is missing (or too small for a requested frame) gets a procedurally generated placeholder baked in its entry's color from the config JSON, so the game always runs.

Layout

Every sheet is a horizontal strip of square frames, left to right. The frame field in the config JSON is the 0-based index into the strip. Frames are 192×192 (walls can override via textureSize in walls.json; baked output is always 192×192).

Expected files (paths are what src/config/*.json references — change them there if you prefer a different arrangement):

File Used by Notes
assets/textures/walls.png walls.json Opaque. Frame per wall id (frame 0 = Gray Brick, …)
assets/textures/overlays.png overlays.json Transparent PNG — composited over wall textures
assets/sprites/items.png items.json Transparent PNG — billboard props (plant, lamp, …)
assets/sprites/enemies.png enemies.json Transparent PNG — one frame per enemy type for now
assets/sprites/pickups.png pickups.json Transparent PNG — ammo/health/treasure + keys

A 7-frame walls sheet is therefore 1344×192; a 3-frame enemies sheet 576×192.

You can also point different entries at different files — each unique texture path is loaded once and shared.