Change log
Every build, newest first. v0.93 through v1.31.
v1.31
June 2026
Current
canStomp reads from type table; unique stage backgrounds; portal 20 tiles from shard; all enemy shields active.
- FixcanStomp now reads EnemyDefs table — previously hardcoded to type 2 only; all 29 immune types now correctly show the cyan shield and block stomps at runtime.
- ChangeStage backgrounds — each stage now uses a genuinely different theme: 1-1 Infernal Caverns (BG 0), 1-2 Bone Cathedral (BG 8), 1-3 Plague Marshes (BG 20), 1-4 Void Abyss (BG 32).
- ChangePortal placement — exit portal now appears exactly 20 tiles (200 px) to the right of the first shard, landing on the nearest solid tile. Replaces the previous halfway-point calculation.
- ChangeAll 80 enemy sprite cases verified detailed (scores 20–37 draw calls each).
v1.30
June 2026
Critical fix
Pattern switch was never closed — collision code was unreachable dead code for all enemies.
- Fixswitch (e.pattern) missing closing brace — the entire player collision block (stomping + damage) was inside the switch statement as unreachable code after the last case. No enemy could be stomped or deal damage. Fixed by adding the missing
}after case 9.
v1.29
June 2026
Stable
Portals overhauled with spinning vortex animations; shield much more visible; main menu save info improved.
Portals
- ChangeDeath portal (purple) — radial fill glow, 6 spinning spokes that accelerate with death timer, double concentric outer rings, white core flash at 70% complete, enemy shrinks into vortex.
- ChangeDespawn portal (orange/red) — fire-coloured radial glow, 5 spokes spinning in reverse, outer gold ring + inner red ring, enemy sprite shrinks to zero as portal opens.
- ChangeSpawn portal (teal/green) — counter-rotating spoke pattern, dual concentric rings, enemy grows from centre as portal closes. T15 Shadow also shows fading orange residue at old position during teleport.
Shield
- ChangeNon-stompable shield — three concentric anatomy-matched rings (120–220 alpha), white core flash on pulse peak, four rotating corner sparks orbiting the sprite perimeter with trailing dots. Much more visible than previous single-outline version.
Main menu
- ChangeSave info moved into CONTINUE label as
(L:S)— e.g.CONTINUE (1:2). Play time removed. - ChangeCopyright and version text rendered at half-size using new scale=0 pixel font mode.
v1.28
June 2026
Stable
T15 Shadow portal movement; T1 Shell patrol-around-player; scale-0 font mode.
- ChangeT15 Shadow — teleportation now uses proper green spawn portal at new position + orange residue ring at old position. After 5 snaps, opens permanent despawn portal (chaseExhausted).
- ChangeT1 Shell — on reaching the player, switches to patrol mode ±5 tiles around player's position. Resumes chase if player moves more than 6 tiles away.
- Newscale=0 mode added to renderText — draws every other pixel of the 5×7 bitmap font for a half-size appearance.
- FixsnapCount field added to EnemyRuntime for T15 snap tracking.
v1.27
June 2026
Stable
Enemy sprites T11–T19 fully upgraded; changelog document updated.
- ChangeRoller (T11) — warm amber gradient ball, hot-spot highlight, cos/sin spinning cross, directional speed blur trail.
- ChangeShooter (T12) — layered robe, hooded shadow, red glowing eyes, pulsing animated staff orb.
- ChangeLava Blob (T13) — heat glow aura, multi-layer interior, animated surface bubble, twin drip columns.
- ChangeSkull (T14) — 3-shade dome, specular catch-light, recessed eye sockets with ember glow, individual teeth, jaw crack, directional speed blur.
- ChangeShadow (T15) — multi-layer blend-mode body, dark trailing tendrils, bright magenta glowing eyes with glint.
- ChangeSpike Ball (T16) — chain links with alternating offset, 4-shade ball, hot-spot, 8 spikes with bright tips.
- ChangeDemon Imp (T17) — 3-shade body, curved horns with tip shine, detailed stub wings, yellow eyes, animated tail.
- ChangeIce Golem (T18) — 4-shade ice body, fracture lines, shoulder plates, cold blue glowing eyes, extending giant hand.
- ChangeHell Hound (T19) — very low wide stance, 4 spine ridges, open jaw with teeth, orange glowing eyes, 4 alternating running legs with compression animation.
- NewChangelog document updated: Escape_Changelog_v126.docx covering v1.00 through v1.26.
v1.26
June 2026
T19 and T15 state machines rewritten; brace bug fix in updateEnemies; swoop floor fix.
- ChangeT19 Hell Hound — full rewrite: waits until player is 20 tiles away, spawns 20 tiles behind; approach at 90 px/s; turns at 5 tiles, retreats 5 tiles; despawn portal decrements cycle; chaseExhausted flag prevents re-activation. Default 2 cycles.
- ChangeT15 Shadow — new stalk behaviour: walks toward player until 3 tiles away, holds; teleports 4 tiles behind player every 5s; never lands on top of player.
- FixupdateEnemies() was missing one closing brace — all function definitions after it were inside its scope. Player collision and physics were unreachable.
- FixPattern 5 Swoop: return phase now uses spawnY as ceiling target, preventing floor dive-through.
- FixINPUT per-frame spam removed from log — KEY events only.
v1.25
June 2026
- FixT19 re-activating after exhaustion — chaseExhausted flag added.
- FixT19 spawn clamping to left wall (x=10) — minimum raised to 2 tiles.
- FixT15 teleporting on top of player — patrolOriX reset after each teleport.
- FixSwoop (pattern 5) diving through map floor — player Y threshold check added.
- FixKill log missing enemy index prefix.
v1.24
June 2026
Enemy debug logging overhauled — events from all source files now captured.
- NewStage load: full enemy roster — pos, pattern, hp, speed, stomp immunity, fireball flag.
- NewSpawn/despawn portal start and completion logged with enemy index.
- NewPatrol reversal, fireball spawn (with velocity and pool count), stomp (HP before/after, distance from spawn), kill, player-hit (overlap vector) all logged.
- New10-second periodic snapshot: all enemies — state, pos, HP, pattern, vx, dist to player.
- NewT19 full cycle trace: activation, each cycle, approach, turn, retreat, despawn.
v1.23
June 2026
Enemy sprites T0–T10 fully redrawn with 16-bit pixel-art detail.
Sprite upgrades (T0–T10)
- ChangeGoomba — 3-shade mushroom cap, spots, highlighted belly, distinct boots, eye glint.
- ChangeShell — shell with highlight quad, ridge cross, pecking head animation.
- ChangeSpiky — multi-tone armour, chest plate, rivets, metallic spikes with white tip sheen.
- ChangeJumper — deep blue body, belly stripe, oversized round eyes, spring legs.
- ChangeFlyer — blended wing membranes with vein detail, segmented thorax, compound orange eyes.
- ChangeBat — dark membrane wings, vein highlights, flap animation, pointed ears.
- ChangeCrab — highlighted red shell, eye-stalk reflections, extending claws, 6-leg crawl.
- ChangeStalker — layered coat, collar, reaching arm with claw tips, pale yellow eyes.
- ChangeBouncer — highlight quad, cos/sin spinning cross, cardinal spikes with bright tips.
- ChangeGhost — multi-layer blend-mode body, outer wisp, trailing wisps, purple glowing eyes.
- ChangeArmour — full plate, chest panel, visor slit, crest, shield with gold boss, spear.
Shield system
- ChangeAnatomy-matched sprite-outline shield replaces flat bounding-box glow. Each immune type has custom segments (e.g. T33 Rib Crawler — 4 individual segment outlines; T34 Bone Drake — body + both wings).
Log
- FixLog path: OpenLog now tries %USERPROFILE%\Desktop\escape_debug.log on Windows, with fallback chain and SDL_Log diagnostics at each attempt.
v1.22
June 2026
Critical fix
Log shared file pointer bug — all GameLog() calls outside GameState.cpp were silently discarded.
- Fix
g_logFiledeclaredstaticin GameLog.h — each translation unit had its own copy. OpenLog() set one copy; all other TUs sawnullptrand discarded output. Fixed:externdeclaration in header, single definition in GameState.cpp.
v1.20–21
June 2026
- ChangeLog: append mode (sessions preserved), session header with version + timestamp, "Session ended" on close.
- NewInvincibility glow: sprite-shaped additive blend at ±1/±2px offsets; 8 Hz pulse fading to 4 Hz over last second; 3-second duration.
- NewNon-stompable shield: anatomy-matched pulsing cyan outline (first pass).
- FixT19 portal states now run before generic despawn/spawn checks.
- FixPattern 9 teleport: orbitAngle used as dedicated timer; patrolOriX reset after each teleport.
v1.18–19
June 2026
- ChangeMap rebuilt: 20 platforms in 7 clusters (x=400–4280); no enemy within 280px of spawn.
- ChangeEnemy distribution: floor walkers in gaps, flyers on upper platforms, pattern matched to platform height.
- NewSpawn portal green/teal; despawn portal orange/red; despawnPortalX/Y stored at fall position.
- NewDebug overlay: yellow T# labels above each enemy head; SP/DS/CHASE/RETREAT state labels.
- FixPortal cull bypass — portals now render even when off-screen.
v1.15–17
June 2026
- NewT19 Hell Hound first implementation: 10-tile behind spawn, approach, turn, retreat, despawn portal cycle.
- NewT15 Shadow pattern 9: dedicated timer, patrolOriX reset on teleport.
- FixSettings BACK: ESC now works; uses MainMenuItem::SETTINGS enum not hardcoded index.
- ChangePortal appears at halfway point of each stage on shard collection.
- NewCountdown protection: player fully invincible during 3-2-1-GO sequence.
v1.08–14
June 2026
- New80 enemy types across 10 themes (6 per theme + 20 generics); enemies distributed across stages 1-1 to 1-3 by group; boss warmup on 1-4.
- NewThree portal types: green spawn (stompable, no damage), orange despawn (fall-off, shows at last valid position), purple death (stomped, permanent removal).
- NewLog system: extern g_logFile, Windows Desktop path, append mode, session header, toggleable in Settings (default OFF).
- ChangeInvincibility: 3 seconds; glow fades over last second.
- ChangeBackground system: 40 presets (10 themes × 4 variants), each with 3 parallax layers.
v1.08
June 2026
- NewBackground system: 40 presets (10 hell themes × 4 variants) replacing 20 presets. New draw functions: Bone Architecture, Chain Curtain, Fire Pillars, Crystal Spires.
- NewBG_NAMES[40] in EditorConstants.h; editor BG dropdown cycles all 40 presets with theme/variant names.
- NewGDD, User Guide, and Changelog documents created.
v1.00–1.07
June 2026
First stable release. Core game loop, all four stages, demon system, audio, and installer.
- NewDemon scan: positional/timer triggers, 5 sweep speeds, per-trigger settings in editor, chained d3→d4 audio, perspective eye-beam cones.
- NewEnemy tile collision: tileAt()-based ground and edge checks; reverseAtEdge behaviour; fireball system (updateFireballs, renderFireballs).
- New40 background presets with 3 parallax layers each; lava flow system; moving platforms.
- NewBoss system: variant 0 (The Gatekeeper) with 5 HP, fall-from-sky entrance.
- NewAll four stages complete: 1-1 Gates of Hell, 1-2 Ember Tunnels, 1-3 The Abyss (with demon), 1-4 Demon's Keep (boss).
- NewWindows installer (NSIS) and build_release.bat.
- FixBeam yBottom changed from LOGICAL_H (180) to MAP_H × TILE_SIZE (2180) — beams now span full world height.
- FixBeam world-space collision: worldBeamX = beam.xPos + camOffX; player correctly takes damage in beam path.
- FixStomp detection: tolerance widened to 45% of enemy height; velocity.y ≥ 0 (was >0); 2px X inset prevents edge-grazing.
v0.99–v0.99c
Early 2026
Pre-release
- NewDemonTriggerDef struct; DTRIG save/load; multi-trigger update loop (positional box + timer countdown); sweep speed per trigger; Demon Trigger editor item; trigger boxes in debug overlay.
- NewDemonAudio.h: d1–d6 stinger filenames; demon SFX overlay stream separate from stage music; music duck to 25% during demon with 8s restore.
- Newrock / rock_large decorations; m_playerHiding: crouching near rock blocks beam damage. rock_large front layer (behindPlayer=0).
- FixPlay button two-click bug: OPEN MUSIC deferred via m_pendingOpenMusic; SDL event queue flushed after native dialog.
- FixMusic field blank on editor open / new file; play button shows NO FILE when field empty.
- FixDemon idle timer set to 99999s when dat triggers present (was auto-firing after 18–30s).
- FixOPEN MUSIC click zone corrected to WIN_W-202.
v0.95–v0.98
Early 2026
Pre-release
- NewEnemy system: 20 types, 10 movement patterns, EnemyDefs.h, EnemyRuntime.h, 12×12 ARGB pixel-art icons in editor.
- NewPortal death effect: purple ring expansion with enemy shrink animation.
- NewBackground system: 20 presets with 3 parallax layers each.
- NewLogo splash screen (LOGO phase); intro cut-scene (TomIntro namespace).
- NewDifficulty system: EASY / MEDIUM / HARD with configurable demon timing and sweep speed.
- NewLevel editor modularised: EditorRender.cpp, EditorEvent.cpp. Enemy rendering in editor map view.
- FixPlayer spawn scans downward from row 10 col 5 (was upward, hitting ceiling stalactites).
- FixContext menu dismiss clears m_ldown/m_rdown (prevented accidental tile painting).
- FixStage props dialog dh corrected 490→600; boss/BG click zones added.
v0.93
Early 2026
First build
Initial codebase. Everything that makes it a game and not a blank window.
- NewSDL2 / C++17 project structure, CMakeLists.txt, game loop.
- NewTile map: 448×218, solid / platform / air tile types.
- NewPlayer sprite: procedural pixel-art with walk, jump, crouch, sprint animations.
- NewCamera: follows player with world-space clamping.
- NewDemon system: phase state machine (IDLE → WARNING → ARRIVAL → SCANNING → DEPARTING → FADEOUT); silhouette sprite with wings, horns, skull head, eye glow; perspective beam sweep.
- NewAudio: dr_mp3 for MP3 playback; shard SFX, portal SFX, creak SFX.
- NewCrystal shard collectibles with sparkle animation.
- NewMoving platforms with configurable path and speed.
- NewLava flow system with trigger zones.
- NewBoss enemy system (BossPhase state machine).
- NewLevel editor: tile painting, palette, zoom levels, mini-map.
- NewNSIS installer script and build_release.bat.
- NoteEditor music play button requires two clicks to register — click-zone fix scheduled.

