Today's Focus

Refactoring the Behavior Tree system to clean up the Blackboard, kill off God Objects, and lay the foundation for DOTS/ECS migration.

What Went Right

  • Finally carved out time after 10 days of academic chaos to dive back into the project.
  • Clarified the end goal: not a full architecture rewrite, but a staged transition toward DOTS/ECS.
  • Had an oddly productive day thanks to a philosophical AI cage match between GPT, Claude, and Gemini that ended with a hybrid plan: Claude's pragmatism + GPT's ultimate performance goal.
  • Bought Hot Reload and Odin Inspector (even if they're currently sitting in the "future power-ups" pile).

What Sucked

  • BtController turned out to be an unholy God Object — tight coupling everywhere. I thought it was decoupled, turns out I was just lying to myself.
  • Technical debt mountain looms large: GC.Alloc spikes, messy blackboard usage, and weird indirection.
  • The GPT-4o vibe is gone with the subscription change. GPT-5 is competent but about as fun as tax season.

Key Decisions

  • Proceed to continue with our own Stimuli-Driven Behavior Switching in Modular BTs.
  • Try to finish zero-alloc blackboard and integer ID refactor before touching ECS.
  • Keep hybrid C#/MonoBehaviour for now — DOTS migration comes after core cleanup.

Personal / Meta

My girlfriend's dealing with work anxiety — she's the only one earning right now, so pressure's on to land a job after my semester ends (Aug 20, 2025). As much as I'd love to go full-time indie, this project is still a side hustle. It's ambitious — probably above a junior's pay grade — but maybe with enough community support (and AI sparring partners) we can make it happen.

Visuals

None. Pure code and architecture work today. But I made a picture of my dog back in my home country using GPT-5. Miss her so much.

AI-modified stylized illustration of Fifi
AI-stylized version using GPT-5 - turned Fifi into beautiful artwork!
Original picture of Fifi
Original picture of Fifi back home

Next Up

  • Finish the blackboard refactor
  • Remove GC.Alloc offenders
  • Split BtController into smaller, focused executors
  • Start building the first DOTS-compatible components without breaking hybrid runtime

Long-Form Thoughts

Today was a strange but satisfying return to development after ten days buried in assessment work. My focus wasn't on flashy features — it was on the project's bones. The aim isn't to throw everything away and rebuild in DOTS/ECS from scratch; it's to get our existing architecture lean and healthy enough to make that jump without imploding.

I got clarity on direction thanks to an unexpected three-way "AI debate." GPT leaned toward going all-in on pure ECS, Claude argued for a safer phased approach, and Gemini acted as the voice of reason: both were right, but for different timelines. The winning path blends them — finish the zero-alloc blackboard, kill God Objects, and modularize BtController before chasing raw ECS performance.

Key Architectural Rule

One blackboard per entity, wired once at spawn. No duplicates. No silent desyncs. Just a clean, shared runtime state for behavior switching.

I won't pretend this work is glamorous. It's deep refactoring, long-term payoff stuff. But it's necessary. And maybe — with enough discipline, supporters, and stubbornness — this "side hustle" can grow into something worth building full-time. For now, it's back to the grind.