Add new level BT_level1.json featuring guards, enemies, and interactive elements.
Introduce "cell" and "wsmi" overlay configurations in src/config/overlays.json.
Update overlay textures (overlays.png, overlays.psd) to support the new overlay frames.
Replace hitscan shooting with flying projectiles and introduce a
data-driven weapons.json supporting 8 weapons (melee through double
shotgun) with per-weapon stats for damage, spread, cooldown, ammo,
and explosions.
Enemies patrol authored waypoint loops and engage on sight using
line-of-sight checks, firing skill-based weapon shots with reaction
delays and accuracy scaling (skill 1–10). Each enemy now uses a
13-frame animation sheet (front/left/right/back, walk variants,
aim, fire, pain, dying, dead) with procedural placeholder art per
pose.
Player gains per-weapon ammo pools, number-key weapon switching,
melee combat, and death/restart with score carry-forward. HUD shows
weapon viewmodels, kill notifications, hurt flash, and "YOU DIED"
overlay. Explosive weapons spawn expanding fireball VFX.
New assets: per-enemy sprite sheets, expanded pickups sheet (16
frames), nerf gun HUD images.
- 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
- Move walls, overlays, items, enemies, and campaigns to JSON registries in
src/config/ (with offline fallbacks baked into registry.js)
- Upgrade level format to v2: add `overlays` and `items` arrays; migrate
v1 `"enemy"` types to the default from enemies.json
- Raycaster: full texture mapping via baked canvas textures, overlay compositing,
and distance/side shading
- SpriteRenderer: texture-based billboards for enemies, pickups, and decorative
items with per-def scale and flash textures
- Editor: palette with dropdowns populated from config JSONs (wall/overlay/item/
enemy/start/pickup/erase); paint overlays on walls, items on floors; show
overlay triangles, item squares, enemy circles in the grid
- GameMap: overlay tracking, blocking-item collision via isBlocked, overlayAt/
setOverlay helpers
- Player: use isBlocked so blocking items stop movement like walls
- Add MenuScene for campaign selection from campaigns.json; victory screen
gains "Return to Menu" button
- Bump RENDER_* to 960×600 (1:1 with display canvas)
- Update levels to v2 format with specific enemy types, overlays, and items