- 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 |
||
|---|---|---|
| .. | ||
| textures | ||
| RAW-Gun.png | ||
| README.md | ||
| gun1.png | ||
| gun2.png | ||
| gun3.png | ||
| gun4.png | ||
| gun5.png | ||
README.md
Spritesheets
Full art brief — every sheet with dimensions, frame maps, and drawing notes — lives in
sprites.mdat 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.