Shaft Sentries
Release Notes
The 0.2 release line currently ships as 0.2.4, with earlier 0.2.x notes preserved below.
0.2.4
UI/UX
- Options menu is now properly centered on all platforms, including HTML5 builds.
- Options menu panel no longer exceeds the game window; content area is capped and scrollable.
- Added vertical scrolling to the Options menu so all settings remain accessible on small screens.
- Debug HUD is now off by default; can be enabled via Options or the F7 hotkey.
- Fixed debug HUD toggle (Options and F7) not working after performance overlay refactor.
PERFORMANCE_OVERLAY_ENABLEDis now defaulted to disabled.- Consolidated monster and FPS counter settings under the main performance overlay toggle.
- Monster and FPS counters are now enabled and disabled by
PERFORMANCE_OVERLAY_ENABLEDand individualPERFORMANCE_OVERLAY_SHOW_*flags for consistency. - Renamed internal counter constants for consistency with the performance overlay naming scheme.
0.2.3
UI/UX
- Added an Options menu to the main menu and pause menu.
- Added an FPS cap slider in Options with three choices: 30, 60, and 120 FPS.
- FPS cap now defaults to 60 FPS and is saved between sessions.
- Added visual polish to the Options panel, including refined styling and a dedicated options icon.
- Added an optional FPS display in the HUD next to the monster counter (toggle via Settings HUD flags).
- Added an optional performance overlay in the HUD (entity counts, frame time, and path/cache hit stats), with per-section enable/disable flags in Settings.
- Added a Debug HUD toggle in the Options menu to turn runtime debug counters and overlay on or off.
- Added an in-game hotkey (F7) to cycle debug HUD states (Minimal, Standard, Full, Off).
- Added Performance Assist options in the Options menu for automatic render-load handling.
- Added a runtime toggle to hide unit health bars and an automatic mode that hides monster and dwarf bars when counts are high.
Performance
- The game now enforces the selected FPS cap at runtime.
- Improved FPS cap reliability by ensuring the selected cap is the active frame limiter.
- Refactored runtime FPS logic into a dedicated runtime settings singleton, keeping Settings constants-only.
- Optimized dwarf bolt hit detection to use physics-space sweep checks instead of per-frame global target scans.
- Added time-sliced heavy monster AI updates to smooth frame-time spikes at larger enemy counts.
- Added event-driven navigation invalidation and cache resets when world topology changes.
- Added wall-target score caching to reduce repeated expensive wall-path scoring.
- Added spatial partitioning queries for monsters, dwarves, and spawners to reduce broad group scans.
- Added a house flow-field routing layer so monsters can follow shared gradient paths instead of repeated full path recomputation.
- Added a centralized runtime performance telemetry singleton with rolling-window metrics for cache rates, path pressure and failure, AI workload, LOS and collision query load, spatial query efficiency, frame-time split, and spike tracking.
- Expanded the HUD performance overlay with per-category toggles for all advanced telemetry sections.
- Added automatic unit visual scaling under high load (reduced animation speed and reduced damage flash effects).
- Added camera-distance render culling under render-load mode to hide off-screen monsters, dwarves, spawners, and bolts while keeping gameplay simulation active.
Bugfixes
- Fixed a spatial query crash caused by stale freed entity references in world spatial buckets.
- Restored sharpshooter reliability for targeting active monster spawners when spatial index results are temporarily empty.
- Sharpshooters now prioritize active monster spawners when in range with clear line-of-sight.
- Sharpshooter line-of-sight now treats placed stone walls as blockers, preventing shots through walls.
- Sharpshooters now prioritize the weakest in-range monster (lowest HP), with distance as a tie-breaker.
- Fixed dwarf bolt impact handling so assigned spawner targets take damage reliably even when they are not physics bodies.
0.2.2
- Archer monsters now spawn visible bolt projectiles when attacking.
- Improved monster AI performance by caching house-path blockage checks and reducing spawn-time scene loading overhead.
0.2.1
- Fixed monster wall targeting so monsters refocus the house when a walkable route to the house exists.
- Changed default difficulty to normal.
- Reduced both melee and archer monster base damage by 25% (rounded down).
0.2.0
Gameplay
- Added difficulty presets that scale monster health, monster damage, and monster spawn timing.
- Added stone as a new resource.
- Mining any breakable block now grants +1 stone.
- Added placeable stone walls that cost 2 stone and have 60 HP.
- Stone walls now block monster pathing until destroyed.
- Stone walls now show damage sprite states at 75%, 50%, and 25% health.
- Monsters can now target and attack stone walls when walls block their route.
- Monster wall targeting now prioritizes thinner breach points closer to the house.
- Guard posts now convert into towers when connected to at least two adjacent stone walls.
- Two adjacent guard posts each touching a wall both upgrade to towers automatically.
- Dwarves stationed in towers now receive doubled maximum health.
- Dwarves stationed in towers now gain 50% increased shooting range.
- Houses now upgrade to a keep when surrounded by 8 walls and 4 towers.
- Keep upgrades double house maximum and current health.
- Guard posts can now be placed directly on stone walls.
- Placing a guard post on a wall removes that wall and refunds 1 stone.
- Monsters can now attack dwarves if dwarves are in their path to the house.
- If a dwarf dies, their assigned outpost is destroyed.
- Outpost destruction now includes a brief burn effect.
- Dwarf deaths now leave a bloodstain effect for 5 seconds.
- Dwarves can now target and damage revealed and active monster spawners.
- Dwarves can no longer shoot through unmined stones.
- Added a dwarf class system with three hireable roles:
- Sharpshooter dwarves defend guard posts.
- Engineer dwarves repair damaged walls and outposts.
- Melee dwarves roam caves and hunt monsters.
- Updated dwarf hire pricing to be class-specific, with independent scaling for sharpshooter, engineer, and fighter hires.
UI/UX
- Added a new game difficulty slider in the main menu with a live difficulty name label.
- Added an in-game pause menu with Resume, Restart Level, and Main Menu actions.
- Pause can be toggled with Space or Escape.
- Health bars are now color-coded: green above 50%, yellow at or below 50%, and red below 25%.
- Added a new title screen that displays title art on startup and waits for any key or mouse click before opening the main menu.
- Updated HUD hiring controls with separate class-specific dwarf hire buttons.
- Added new class sprite assets for engineer and melee movement, repair, and attack states.
- Added top-right speed controls with 1x, 2x, and 3x buttons to adjust game speed.