Implement player stats HUD and mechanics
- Replace stats icon with new StatsHud UI component.
- Bind HP, mana, hunger, thirst, and energy percentage callbacks to StatsHud.
- Return 0.0 for mana percentage if the player uses a weapon requiring more mana than available.
- Halve character movement velocity when hunger or thirst is depleted.
- Make walk footstep SFX less often when hunger or thirst is depleted.
- Regenerate player HP slowly over time.
- Implement StatsHud class rendering five radial stat indicator arcs.
- Define stats-hud-ui.frag fragment shader to color code status indicators and handle blinking at zero values.
- Register stats-hud-ui.frag shader in assets.
- Update TODO list for survival stats framework, mechanics, and UI.
Wire up mana stat
- Implement subtracting mana on weapon usage.
- Implement mana recovery over time.
- Add SFX when mana is low.
- Add a visual indicator with a crossed drop symbol when mana is low.
Highlight hovered interactable object
Add activation SFX to the crystals
- Add activation SFX to the crystals.
- Add quotes around the assets path in the log message.
- Update OST 4 at the end by dropping the chorus melody one octave down to give the sense that the track is ending.
Finalize pedestal and lock in Crystal Sanctuary
- Texture pedestal.
- Texture lock.
- Update lock button icons.
- Make target assets opaque and drive transparency from the code.
- Fix the bug where selecting the opening combination twice was triggering the open door SFX even when the door is already opened.
Add lock SFX, update door opening SFX
It is 10:20PM; clearly, I do not have any time to build UE5.8. Doing it anyways.
Lumen-light might be an Unreal Engine savior.
Implement Crystal Sanctuary combination lock
- Add CrystalSanctuaryLock and CrystalSanctuaryLockBtn classes for the combination lock puzzle.
- Check for combination 3 and 7 on the lock rings to trigger opening the door.
- Update player shelter logic to only grant shelter if the sanctuary door is open.
- Remove automatic door opening from the guardian’s death trigger.
- Replace static lock meshes in gameplay.json with the new CrystalSanctuaryLock node.
- Register CrystalSanctuaryLock node type in assets.cpp.
- Add btn-ico.xcf texture asset for the interaction button.
- Expose isOpen member in CrystalSanctuaryBaseDoor to check door status.
WIP: Crystal Sanctuary Lock
Today I woke up to the SpongeBob song. Then I slowly came to reality — there were small birds twittering, and then crows: “Caw, caw, caw, caw,” which my sleeping brain interpreted as “SPONGEBOB SCAREPANTS!”
Crystal Sanctuary Puzzle
- Create three more door types: red, blue, and purple.
- Refactor doors with a base door to avoid code duplication.
- Move music from guardian death into unlocking 3 crystals.
- Implement cast to interactable to walk node hierarchy instead of a singular cast.
- Unlocking crystals opens the respective doors.
- Guard door position update with
isEditorMode. - Fix typo: s/desiered/desired/.
- Move hierarchical nodes invalidate from
PhysicsBodyto node. - Add assert to the dynamic cast in the
Ticker.
WIP Crystal Sanctuary Puzzle
- Add temporary meshes in the Crystal Sanctuary to get an idea if the room is readable from the player’s perspective.
- Implement music playback.
- Trigger OST 4 “Crystal Sanctuary” on the final boss death (that is temporary).
OST-4 Crystal Sanctuary, Spider receives damage SFX
SFX as a scene node, registry-based lookup
- Remove
PlaySfx3dandPlaySfxUi, usemakeOwnedChildinstead. - Remove
PlayerfromScene, use registry-based lookup instead. - Bump C++ standard to 26.
- Script to calculate game completion percentage.
- Helper function
regto register a node in the registry. - Move
shadowCastersfromSceneintoRender.
Finalize Crystal Sanctuary door, make door opening SFX
WIP Crystal Sanctuary sheltered area and boss arena
- Add CrystalSanctuary node type and register it in gameplay.json.
- Treat CrystalSanctuary like RespawnArea for sheltered state and weapon restriction.
- Register CrystalSanctuaryDoor in scene registry and open all doors on guardian death.
- Split CrystalSanctuary into FinalBossArena and CrystalSanctuary mesh.
- Use SM_Wall_2x6_NoColl for a non-colliding wall segment.
- Make no-weapons UI indicator opaque.
- Apply semi-transparent tint to no-weapons UI indicator.
- Extend player shelter raycast range to 350 units.
WIP crystal sanctuary door
- Make a WIP mesh of the door
- Trigger opening of the door on the boss death
- Correct spider position so they don’t clip through the floor
- Add accidentally removed AA checkbox in the debug panel
- Script for the 113 dev vlog YouTube video
🌸 Tue, Jun 9, 2026 🌸
Implement weapons-free respawn areas and restore player stats on level up
- Add a sheltered state to Player when standing in a RespawnArea.
- Disarm player, play SFX, and display NoWeaponsUi indicator when entering a sheltered area.
- Prevent Spider, CrystalSanctuaryGuardian, and LiveRock from attacking a sheltered player.
- Restore player health, mana, hunger, thirst, and energy to max values upon leveling up.
- Filter out player’s own body during raycasts to prevent self-collision.
- Increase volume of loot pickup SFX and update starting staff level to 27.
- Reset mob health to max when loading JSON in editor mode.
- Decrease spider walk SFX interval and register new crawl sound assets.
I’m trying to make mobs stop attacking the player when the player is in the respawn area, but with the right timing, you can lure them inside and essentially trap yourself.
I’m wondering if building a buffer zone before the door would help?
🌸 Mon, Jun 8, 2026 🌸
nwm, Parsec is still broken.
🌸 Mon, Jun 8, 2026 🌸
I do not know if it is an update from Pop!_OS to CachyOS or if Parsec made some updates, but Parsec is usable now with the drawing tablet. Most likely the April Parsec update.
🌸 Sun, Jun 7, 2026 🌸
Implement Spider mob and improve pie menu dead zone rendering
The pie menu can be a bit confusing when the mouse cursor is in the dead zone, so I added a small arrow in the center to give the player a hint.
🌸 Sun, Jun 7, 2026 🌸
Rename shaders and improve Wayland support
- Rename shader files to use .vert, .frag, and .comp extensions.
- Update shader compiler to handle new extensions and varying definitions.
- Implement proper Wayland detection and native handle retrieval in get-natives.cpp.
- Update asset loading paths across the codebase to match new shader filenames.
- Pass correct NativeWindowHandleType to bgfx during initialization.
- Mark several respawn point and crafting table tasks as completed in todo.md.
🌸 Sat, Jun 6, 2026 🌸
Implement level up visual effects and add pie menu dead zone
- Add level up animation and mesh to Player.
- Define PIE_MENU_DEAD_ZONE in cpu-gpu-shared.hpp.
- Implement dead zone in pie menu shader and C++ logic.
- Register new level up assets in process-assets.hpp.
- Mark leveling tasks as completed in todo.md.
🌸 Sat, Jun 6, 2026 🌸
Implement XP and leveling system and refactor loot dropping
- Add XP field to items and implement XP gain and leveling in Player.
- Introduce LvlUpUi for visual feedback on level up.
- Refactor loot dropping logic into Mob::dropLoot base method.
- Update Entropy, Essence, Harmony, and weapons with XP values.
- Add level-up SFX and Bitwig project assets.
- Fix JSON parsing in Respawner and update journal with progress.
1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 40 - 41 - 42 - 43 - 44 - 45 - 46 - 47 - 48 - 49 - 50 - 51 - 52 - 53 - 54 - 55 - 56 - 57 - 58 - 59 - 60 - 61 - 62 - Next