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