🌸 Mon, Mar 30, 2026 🌸

Player stats mechanics, level scaling, HUD polish

  • Move crosshair target to Player from Gameplay
  • Add level label to HUD, centered on stats icon
  • Replace static min/max/val on RadialProgress with callbacks
  • Wire gauge callbacks to Player stat getters
  • Add stat decay over time: hunger, thirst, energy
  • Add level-scaled max stat formulas (exponential for HP/mana/XP)
  • Add getNextLevelXp with exponential level curve
  • Fix Guardian applyDamage: play death immediately if HP hits zero
  • Remove unused hp-ico and mana-ico assets
  • Add target-ico intermediate blend asset
  • Update player default stats to full in gameplay.json
  • Change xp field from int64 to double

🌸 Mon, Mar 30, 2026 🌸

Radial progress bar, ProgAsset, ref alias, render refactor

  • Add RadialProgress node with custom fragment shader
  • Add ProgAsset to manage shader programs as cached assets
  • Add ref alias for std::reference_wrapper to reduce verbosity
  • Refactor renderer: pass prog handle via ImgIn and LightIn structs
  • Merge PointLightIn and SpotlightIn into unified LightIn struct
  • Move shader programs out of Render into Material and light nodes
  • PointLight and Spotlight now load their own shader programs
  • Remove pre-initialized named asset members from Assets class
  • Fix double free in MeshAsset by removing Part destructor
  • Rename load-program to load-prog
  • Rename nodeId to nodeIdTex in shaders to avoid name collision
  • Add stat gauge background and foreground texture assets
  • Wire survival stats gauges to Player HUD
  • Enable sequential view mode for UI render pass

🌸 Sun, Mar 29, 2026 🌸

Survival stats, HUD mockup, Guardian retexture, build opts

  • Skip DDS conversion if texture has not changed
  • Add survival stats to Player: HP, mana, hunger, thirst, energy
  • Serialize/deserialize Player survival stats to/from JSON
  • Add HUD mockup with survival stats icon
  • Add HP, mana, and stats icon assets
  • Add ProgressBar node stub
  • Retexture and re-rig Crystal Sanctuary Guardian
  • Make backward movement speed 2x slower
  • Fix Node3d saveJson to call Node::saveJson
  • Fix rsync target path for Windows build

🌸 Sun, Mar 29, 2026 🌸

Mock-up for HUD survival stats.


🌸 Sat, Mar 28, 2026 🌸

Assets, scene, skeleton, add projectile and timer

  • Expose all assets as named members on Assets class
  • Create Scene class from Node with cleanup, remove, getById
  • Separate Skeleton into standalone asset (skeleton.cpp/hpp)
  • Separate Joint struct into joint.hpp
  • Add Mob base class with applyDamage interface
  • Add BlackHoleSingularityProjectile node with collision
  • Add Timer singleton for deferred callbacks
  • Move animation update from tick to geomPass
  • Add looping flag to setAnim; support non-looping animations
  • Add inner body shape and user data to character physics
  • Set user data on static mesh bodies for collision lookup
  • Replace getRoot with getScene returning typed Scene pointer
  • Add getCam to Render
  • Add border sampler flags to fix artifacts on the edges of the screen
  • Use double precision for dt and animation time
  • Remove anim-test asset; clean up gameplay scene setup
  • Move export-gltf.py to project root
  • Guardian: add HP, applyDamage, death and receive-hit logic

Just was working on my game the whole day — today is Saturday, so…


🌸 Sat, Mar 28, 2026 🌸

That is a bit annoying — shared_from_this is not available in the constructor, understandable, but still annoying.


🌸 Fri, Mar 27, 2026 🌸

Copy levels to data dir, load from data dir, fix emission strength

  • Copy levels to data directory
  • Load levels from data directory
  • Make emission strength have effect
  • Add temporary skeleton logging

Felt tired the whole day. I think I need longer rest. Will try to go to bed early.


🌸 Fri, Mar 27, 2026 🌸

Check that code:

if (something bad)
      return;

It is good you are doing the early returns; it is bad you are failing silently. Return an error code.

if (something bad)
  return ESomethingBad;

Throw an exception.

if (something bad)
  throw ESomethingBad;

Assert:

assert(!something bad);

Log it:

if (something bad)
{
   std::clog << "something bad\n";
   return;
}

🌸 Thu, Mar 26, 2026 🌸

WIP Black Hole Singularity projectila mesh and animations

I need to figure out how to do attachments in a more robust way.

Brain is not working. Should take longer breaks.


🌸 Wed, Mar 25, 2026 🌸

Finalize 1st person Alara’s mesh

Worked in the office. Kind of tired. Blood sugar was on the high side at 117 — still in the green. The motivational pop-ups are kind of funny because they’re a bit tone-deaf. If your blood sugar has been in the green for a long time, you get a pop-up: “Keep it up.” LUL


🌸 Wed, Mar 25, 2026 🌸

“Modern C++ Design” book is a quarter century old, time to write “Contemporary C++ Design”.


🌸 Tue, Mar 24, 2026 🌸

Black Hole Singularity anim, redo jump animation

  • Add Black Hole Singularity spell animation
  • Redo jump animation
  • Hide weapon mesh by default
  • Improve glTF animation export settings
  • Add paper doll art and ground fog to todo list

Nothing spectacular happened today. Just working my day work and working on the game. Weight 158 lb, blood sugar 103.


🌸 Tue, Mar 24, 2026 🌸

That’s an interesting coincidence. I worked last week on the Crystal Sanctuary Guardian boss. Which is a mob made out of stone. And today I discovered Epic gives away Stone Golem asset for free on Fab. And the quality, of course, is a million times better than mine.


🌸 Mon, Mar 23, 2026 🌸

Do not self-illuminate, staff attack anim, fix stair collision

  • Prevent mesh from being lit by its own attached point light
  • Add staff attack and staff attack from idle animations
  • Add staff mesh with convex hull collision
  • Trigger primary attack on left mouse button click
  • Make Guardian glow red
  • Enable mold linker for faster linking

Just a normal Monday — work my work, work on the game. Weight 158.7 lb, blood sugar 105.


🌸 Sat, Mar 21, 2026 🌸

WIP Crystal Sanctuary Guardian

  • Move physics initialization into Assets class
  • Put Jolt configuration classes in separate jolt-cfg.hpp/cpp files
  • Rename Character class to Player class
  • Load player from the gameplay.json scene file
  • Implement basic Guardian AI: follow the player, attack
  • Texture painting
  • WIP player hands
  • Add global variable isEditorMode
  • Add flag serializable to nodes
  • Dismiss menu on click away
  • Increase sensitivity on panning and movement

Woke up in the morning and worked on the game until now. Weight 159 lb. Blood sugar 104. My daughter asked me to bring her to a friend’s place. So will need to run some errands.


🌸 Fri, Mar 20, 2026 🌸

Crystal Sanctuary Guardian’s damage and death animations


🌸 Thu, Mar 19, 2026 🌸

Crystal Sanctuary Guardian walk and attack animation

Nothing interesting happened. Just a normal day. Blood sugar is around 105, weight was 161 lb. For lunch had chicken and broccoli, and for dinner had 3 eggs and broccoli.


🌸 Wed, Mar 18, 2026 🌸

Guardian idle anim, debanding

  • Polish up the Crystal Sanctuary Guardian model and add idle animation
  • Implement simple debanding/dithering algorithm

Today I worked in the office. For some reason it was hard to wake up. Figured out how to fix a bug. Used Claude Opus 4.6 for that. I am kind of getting ideas on how I can use AI. I am not giving the prompt “fix the bug,” but it is more like a conversation — I am asking it to find details in the code, give me high level details, and we just brainstorm different ways to tackle the issue. And at the end it is a one line fix. Instead of AI just littering the code with all different attempts, and me being QA bouncing back without understanding, saying “no it didn’t, no it didn’t work.” And finally it worked, but I did not take into account edge cases, and then QA is bouncing back. Here, hopefully, I fixed the bug for good. Had for the first time, after I started my weight loss, a lunch out. Understandably, blood sugar in the evening was a bit higher at 110, but still in the green.


🌸 Wed, Mar 18, 2026 🌸

Crystal Sanctuary Guardian Idle animation


🌸 Tue, Mar 17, 2026 🌸

Crystal Sanctuary Guardian, aspirations, target, mixamo animtest

  • Make a 1st pass of Crystal Sanctuary Guardian
  • Write game design aspiration bullets
  • Put the circular target in the middle of the screen
  • Add Mixamo animation test

I safely arrived home yesterday. Felt a bit tired, so the rest of the day I did nothing. Today was kind of dull — at work, the VM I was working with stopped working in the middle of a session and I needed it to debug some issues. Blood sugar level getting closer to 100. Probably my theory about dry hands has some basis. Weight in the morning was 157.


🌸 Tue, Mar 17, 2026 🌸

The productivity of a software engineer is inversely proportional to the number of monitors they use. Therefore, to achieve maximum productivity, an engineer needs zero screens. With zero screens, the engineer’s productivity will reach a singularity. Be careful, though; they may fall into the black hole.


🌸 Mon, Mar 16, 2026 🌸

Spent the last 2-3 days working on implementing an animation system in my game without the engine. On the left, the animation I downloaded from Mixamo; on the right, the model and the animation I quickly modeled in Blender using the mouse and keyboard.


🌸 Mon, Mar 16, 2026 🌸

More polish to anim system

  • Fix typo s/deferrd/deferred/
  • Encapsulate Skeleton inside sk-mesh-asset.cpp
  • Remove unneeded LOG lines
  • Small improvement for uniform for std::array — upload to GPU only the updated part of the array
  • Refactor skeleton loading to ensure correct matrix calculation when joints are missing

I drove from the motel to a rest area on the way home. Finished the remaining 3 mozzarella cheese sticks. Still hungry. Battery on the car at 33%. I was wondering if my high blood sugar levels were because I was in the desert — the skin gets dry, and also the towels in the motel are a bit thicker, so they dry the skin better. And my blood just does not dilute with the moisture and sweat on the skin.


🌸 Mon, Mar 16, 2026 🌸

Finalize animation implementation

  • Make it work
  • Clean up the code

I woke up around 6 AM and just could not sleep, but was still sleepy. Blood sugar is high but still in the green zone. Packed everything and ready to go home. Did not eat anything yet, do not feel hungry. Yesterday 2 beef patties and 2 bags of broccoli did good. Had a can of Monster. I think it has a bit more caffeine than what I need. But on the other side, I was going strong yesterday until 11 PM. Feels nice and exciting to make the animation work. I would call this motel room game dev jam a success. A very nice bonus — the WiFi in the motel is quite strong.


🌸 Mon, Mar 16, 2026 🌸

Don’t be a smart ass — std::optional<std::reference_wrapper<const AnimAsset>> just return a pointer: const AnimAsset*.


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 - Next