A game is just a real-time database with a pretty graphical front end

No I get to know the needs of a Game Developer just fine, it all comes to how you architect your software

Let me tell you a story of the “evolution” of our Particle System Manager

Version 1 was very simple, it could emit particles at a direction with some color and alpha blending - this worked for a while untill the Games Programmer wanted to make nice looking weather effects such as snow and rain.

Version 2 was an improvement, it provided “states” as you call them to control a particle effect, for example, a SPREAD_XY state and some parameters would spread the particle effect across the screen in its dimensions. This worked great for a while untill i began getting requests for all sorts of states which needed to be implemented engine side onto the Particle Manager itself.

Version 3 was a complete cleanup, and incorporated a design of a state-driven particle system that could make almost any effect possible. It incorporated a programmable interface that allowed the Game Programmer to “Script” particle effects much like he would script game logic, without exposing any Engine source code or functionality. The old states from version 2 were re-programmed into pre-written states that could be used if needed.

Version 4 was a natural improvement over version 3, it added the capability to store and retrieve particle-specific data in a state, this gave the power for example, for the Game Programmer to add collidable particle effects, effects that could react to game world conditions such as wind, hurricane, or even effects that could react to user input. All this done via the new programmable interface and a state driven particle system.

Moral of the story? now i’m free to spend my time implementing other things, I return once in a while to do optimization as the engine side renderer gets better, however the Game Programmer got what he wanted, and I got what I wanted. Version 1 - 4 was about 4000 lines of code with end result being about 1300 lines. Besides the effort to write the manager from version 1-4, the effort it took me to add them into the engine was about 10 lines of code, and the engine is still compatible with versions 1-3 if needed.

So no, guesswork has nothing to do with Engine Programming. But I did not have to bulldoze an entire engine just to add a particle system to it.

I do Business application and software architecture all with J2EE since 10 years…
and unfortunally most of the time you are right

To me seems a good experiment, you are near concept of Entity/Component system (see here), like Artemis

my 2 cents