Greetings Everyone,
I went back to the basics. My game engine is not quite as simple as the one I am discussing here. It is not as much an engine as much as a library. But we have to get past that, as you can still make an editor, with tools, and progress from there. The basic architecture is as follows.
Layered Structure
Core
Domain
System
Then you will have the namespaces global, and project.
Everything including global and project would be in a namespace called engine. Each layer would be encapsulated and managed structurally by classed called the same as the layer that contains them. Then in global you would declare the layer classes, and provide a UUID for the project and instance with any other global declarations so that the global scope is clean. Then in project your would have Init, Load, Create, Build (which would call Init / Load / Create in that order), Save, Execute, Release.
Domain would contain all your 3rd party libraries. This includes operating system, graphics, interface, physics, input, sound, and networking. Resolving all API libraries for sure would be a great benefit.
The engine would benefit if you had type definitions with the keyword using or typedef for all primitive types. Also, a result type for a return type for functions for error handling. Serialization would have to be handled of course, and streaming would be built into the Core layer.
This makes construction of an engine much simpler, so I wanted to post to simply it for beginners. What do people think of this simple design.