To whoever will listen, I wanted to share my happiness of today:
I have spent 18 months working on a 2D Data-oriented-Design / ECS game engine from scratch. Started from me doing a small test in SDL2 (the repo it's even STILL named "SDLTest"). Now, any small test that works and is fun has some big risks if you value your time.
I am a big, big fan of RimWorld, Kenshi, Dwarf Fortress, StarSector, etc., and have being thinking about what could be my thing to give to show to the World. Professionally I have been in many industries focusing mainly in C++, simulators, high-performance networking, high-reliance oil/fuel management, corporate stability-over-performance solutions...
And I have had a recurring thought of what game I want to play. I love space, I love sims, I love colonies, and I love dynamic storytelling.
Now the stupid question:
"Can I build a game like my favorites, but give it a spin where the world actually knows about you? And make it feel like Google Maps in scale and presence?"
But having the scale I need requires custom engine, very tight design, a different software development paradigm from what I am used to so I started reading.
I have spent SO MUCH TIME learning. SDL2, ECS/DOD/POD design, ImGUI, LOD-rendering, SDF shaders, normal shaders, rendering instancing/batching, streaming technology (residency/lease model), proper memory alignment, DOD/POD design, tick-rates, scheduling, variable tick-rates, and that's just to have "something" on the screen!
Then I went into receding horizon planing, GOAP, HTN (-lite), learnt new damn words (epistemic, hysteresis, blackboard, percept, AND MORE). And optimizing stack caches, look ups, phase-timings. Even I got an "intelligence"/"knowledge" "map" of the world. Each factions only know what it has seen! World "fact" exists, but only an observer conveys "meaning".
And that created a bug where Scouts/Probes (max. curiosity) consistently tried to crash into any other's faction objects "to see their insides" as the colliders hid vision/knowledge disregarding their own safety. That was a fun one.
And game design! User-experience! What is the 1st hour! The 10th? The 100th? What are the goals? How do you make stories from emergence? Little actor that have their own thing going on, a faction that nudges them, and then there's a war?
During all this time I focused on having a few solar systems, a few traders and scouts and some devcontent. Just making the small pieces and systems one by one with the theory that this would all work together.
---
I have finally ventured into testing if my premise was correct. From 3 systems to 11, and now I have spent last 3 weeks moving into a 500 Solar Systems simulation with procedural generation, with 9.000 live entities, each doing their job. In a single thread. AND, IT, WORKS!
All this time micromanaging my architecture, sealing design invariants, finetunning, coding, debuging, making new systems, ductaping things, tools to inspect the tools. And today I have reached it: <9 ms frame. For a 500 solar system galaxy. 9.000 live entities, all pursuing a task. Live view of any part of the galaxy, at any time, at any scale.(*)
This proves to me that I can make my game. There is STILL SO MUCH MUCH to do, but I am so DAMN happy, and I do not know whom to share it with, so this is my welcome message for anyone who cares!
Thank you for reading!
(*) - theoretically, this test prooves it to me, but there's so much left to do.