๐ŸŒธ 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.

๐ŸŒธ Sat, Jun 6, 2026 ๐ŸŒธ

Refactor rendering pipeline and update pie menu shader

  • Split Render::render into render and finalPass to better manage multiple scenes.
  • Move post-processing and frame flushing into Render::finalPass.
  • Update pie menu shader to rotate center icon based on mouse angle.
  • Enable VSync by default in ResetFlags.
  • Change screen pass clear color to black.
  • Mark axe and bow SFX tasks as completed in todo.md.

๐ŸŒธ Fri, Jun 5, 2026 ๐ŸŒธ

Implement mob respawning and refactor splash screen

  • Introduce Respawner class to handle delayed mob and boss respawns.
  • Store initial JSON data in Mob instances for use during respawning.
  • Extract splash screen logic into a dedicated Splash class.
  • Simplify Node::loadJsonInternal by removing the Assets parameter.
  • Update gameplay.json with initial mob states for respawn support.
  • Patch geometry in the respawn area and update door icons.

Timed how long it takes to clear the mobs in the final boss areaโ€”clocked in at 2:30. Thinking of setting the respawn timers to 3x that for regular mobs and 6x for the boss. That’d be 7:30 for the mobs and 15 minutes for the boss.

Finally patched that crack in the respawn area.


๐ŸŒธ Thu, Jun 4, 2026 ๐ŸŒธ

Migrate from SDL2 to SDL3

  • Replace sdlpp with a custom SDL3 C++ wrapper in sdl3.hpp.
  • Update Makefile and dependencies to use SDL3.
  • Refactor Render and Deferred classes to use glm::ivec2 for screen size.
  • Update event handling in SceneEditor and Gameplay for SDL3 API changes.
  • Transition audio handling to SDL3’s new audio stream API.
  • Introduce GameMode to distinguish between game and editor modes.

No stream today, not feeling well.


๐ŸŒธ Tue, Jun 2, 2026 ๐ŸŒธ

Add animated loading screen during asset loading

  • Introduce SpriteSheetPlayer for sprite-sheet UI textures.
  • Render a logo splash while assets load via a progress callback.
  • Skip deferred post-processing when the scene has no 3D geometry.
  • Update GIMP batch export for newer Script-Fu.
  • Remove the coddle local repository override.

๐ŸŒธ Tue, Jun 2, 2026 ๐ŸŒธ

Finalize node ownership refactor and extract debug panel

  • Replace Node::add with makeOwnedChild and makeChild for explicit ownership.
  • Update all node registrators and scene spawners to use the new ownership API.
  • Move SceneEditor debug checkboxes into a standalone DebugPanel.
  • Add close button to InvUi and refactor its member ownership.
  • Clean up Player and Scene node management using OwnPtr.

2026-06-01

Got a weird bug in my system. In my made-out-of-flesh system, I meanโ€”got chills and a huge headache. Took the rest of the day as a health day and stayed in bed. Had the weirdest dreams, like being in a loop trying to fix some bug that felt almost fixed but just kept persisting.

2026-06-02

Feeling a bit better, but the headache is still there. Taking today as a health day too.


๐ŸŒธ Sun, May 31, 2026 ๐ŸŒธ

Prepare Node hierarchy for ownership and hierarchy separation

  • Update Node and subclass constructors to accept oup::control_block.
  • Inherit Node from oup::enable_observer_from_this_sealed for safer observer management.

So issues with CachyOS. Some were in the system enforcing VSync. I can see the timing in the GPU wait and it goes to 0 and then goes up to 5 ms and switching back and forth. I tried to set __GL_SYNC_TO_VBLANK=0 system wide it is not helping. For some reason, nvidia-settings is missing the VSync check box. I have that on Pop!_OS.

Also, the right and middle buttons are swapped on my Wacom stylus somehow in my game, but not in the system. That is weird.

I run the game through Valgrind and Valgrind flagged some issues with the observable pointer, how I use it. I am suspecting my previous attempts to separate node graph and ownership failed because of the issue.

The input lag on CachyOS is killing me, I need to find the solution ASAP.


๐ŸŒธ Sat, May 30, 2026 ๐ŸŒธ

The problem with CachyOS is not the OS by itself. I tuned Pop!_OS 6โ€“8 years ago. Honestly, I do not remember when I got my System76 laptop. And I remember nothing about how I did it.


๐ŸŒธ Fri, May 29, 2026 ๐ŸŒธ

If you think about it, the “main character,” “normie,” and “NPC” labels cover all of humanity. And if you think you are none of that, you’re actually having main character syndrome. If you think you are a normie, you are one. And if you think you are the main character, you are an NPC handing out quests. You think you’re an NPC? Nobody thinks that.


๐ŸŒธ Fri, May 29, 2026 ๐ŸŒธ

There is an inconvenience in C++ where you have to mark everything as const. This is a remnant of the requirement to be compatible with C โ€” C++ already proves a better model works, since lambdas default captured variables to const and require an explicit mutable keyword to opt out. Without the C compatibility constraint, this could be applied globally: drop the const keyword entirely, make everything immutable by default, and use mutable to opt into mutability.


๐ŸŒธ Thu, May 28, 2026 ๐ŸŒธ

Refine bed interaction and restrict player input during cutscenes

  • Implement isBusy flag for Bed to prevent multiple interactions.
  • Extend bed animation duration and hide UI/HUD during sequence.
  • Disable player movement, rotation, and triggers when camera is detached.
  • Add getCam getter to Scene class.
  • Update world and player assets and add new wood floor textures.

I played with mobs a bit, luring them into the corridors, and because they are just moving straight to the player and not aware of the level geometry, they got stuck in the corners. I designed the final boss fight area to be open, so they would not get stuck, but I don’t think that is scalable. I probably need to integrate some navmesh solution. AI suggested to use Recast Navigation: https://github.com/recastnavigation/recastnavigation.

Put textures on the walls of the respawn area; it gives such a great feel. Amazing how much adding just a concrete texture adds to the game feel. Trying to figure out what to put on the floor. I don’t think carpet or hardwood is a good choice, but what other type of floor do we have? Maybe tile flooring?

I thought about the way I can implement cooking navmeshes and I think adding to Chef is the wrong way. It would require creating more and more sub-libraries and moving away from a monolithic structure. I feel the monolithic approach is better for this project. It should be implemented similarly to how I did the game and scene editor modes: one binary with three modes (game, scene editor, and chef). But I’ll do that later; today I’ll just work on level design.

For the floor in the respawn area, I went with red wood. It actually matches well with the baseboard.

I felt the go to bed animation cycle should be a bit longer, so I extended it. I also fixed a few things so the player can’t move or look around while the animation is playing, and hid the UI to keep it immersive.


๐ŸŒธ Wed, May 27, 2026 ๐ŸŒธ

Finalize respawn area walls and door


๐ŸŒธ Wed, May 27, 2026 ๐ŸŒธ

Note for future me. Switching to CachyOS, but I want to run Plasma under X11. I tried Wayland โ€” did not like it: laggy and font rendering looks weird. Spent from 4PM until 3AM figuring out why X11 does not work. So this is the note. I think the main culprit is plasmalogin โ€” I switched to SDDM and things are working. What I tried: disable rootless X, auto-run xrandr --auto from different types of scripts, copy/paste x.conf from Pop!_OS setup, set somewhere plasmax11, try to run plasmalogin in X11.


๐ŸŒธ Tue, May 26, 2026 ๐ŸŒธ

Slack can finally be installed from .deb, but the download link! WTF!?


๐ŸŒธ Tue, May 26, 2026 ๐ŸŒธ

Enhance interaction system and add sound effects for doors and bed

  • Update Interactable interface to include player reference and distance in canInteract and interact.
  • Add interaction distance checks to Bed, CraftingTable, and RespawnAreaDoor.
  • Implement sound effects for Bed (light switch) and RespawnAreaDoor (open/close).
  • Add new audio assets for light switch, respawn area door, and go-to-bed sequence.
  • Register new audio assets in process-assets.hpp.
  • Fix Checkbox UI layout and adjust SceneEditor debug panel spacing.

๐ŸŒธ Tue, May 26, 2026 ๐ŸŒธ

Difference in the DNA between humans and chimps is 1%, but between male and female it is 2.2%!? ๐Ÿ˜ฒ

Both of these statements are true, but they are still misleading.


๐ŸŒธ Tue, May 26, 2026 ๐ŸŒธ

Implement player death and respawn mechanics and enhance mob combat

  • Implement player death sequence including death camera, animation, and sound effects.
  • Add player respawn logic to find and teleport to the nearest appropriate respawn area.
  • Add delayed damage application to CrystalSanctuaryGuardian and LiveRock mobs with distance and angle checks.
  • Add new audio assets for player damage grunts and death sound.
  • Register new assets in process-assets.hpp.
  • Fix missing timer cancellation in LiveRock destructor.
  • Update gameplay.json with adjusted player stats.

๐ŸŒธ Sun, May 24, 2026 ๐ŸŒธ

Implement multiple respawn points and refine player and door mechanics

  • Add multiple respawn areas across Singing Garden and Descent paths.
  • Improve player jump logic by clearing request flag immediately and refining animation transitions.
  • Enhance RespawnAreaDoor with timer cancellation to prevent overlapping auto-close events.
  • Increase physics contact constraint limit to 16192.
  • Rename health and mana elixirs to Pills and Earbuds in GDD.
  • Update world.blend asset.

I’ve been working on placing respawn points. I felt like the descent was taking way too long, so I timed some runs (skipping the mobs):

  • Singing Garden -> Worgan’s Place: 50s
  • Singing Garden -> Jeromi’s Workshop: 1m 50s
  • Jeromi’s Workshop -> Old Foundry: 33s
  • Old Foundry -> Spaceship Landing Site: 2m 20s
  • Spaceship Landing Site -> Cornelius’s Junkyard: 1m 31s
  • Cornelius’s Junkyard -> Descent -> Crystal Sanctuary: 4m 49s

The Descent definitely needs a couple of respawn points so the trek back isn’t a total slog. It’s not quite as bad as I feared, though.


๐ŸŒธ Sun, May 24, 2026 ๐ŸŒธ

Unreal Engine 6? WUT!?


๐ŸŒธ Sun, May 24, 2026 ๐ŸŒธ

The advice “never use std::list” is wrong. I measured std::list in multiple synthetic scenarios and found cases where it beats std::vector easily โ€” with a low number of elements and small element sizes. Modern memory allocators are surprisingly good and can place data sequentially. The only overhead in that case is two extra pointers. People referring to Bjarne Stroustrup’s 2012 talk make the dogmatic decision to never use std::list. He tried to correct this in his 2014 blog post, emphasizing the same point I am making: measure first, don’t guess. But the damage was done. TL;DR: if std::list is faster than std::vector in your case, simply use std::list.


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