https://medium.com/@captaintechnicality/game-engine-architecture-in-c-part-1-principles-object-structure-81aa6cdd630d