I have started thinking about having some sort of scene describing objects in the game such as the player, enemies, pick ups, etc, and where the live in a scene that is bigger than just the screen.
So I’ve created a GameObject class and a Camera class. Both of them are purely runtime data for now.
A GameObject describe where in the scene an object should live. It also describe how the object should be visualized, with for example an image or an animation. A game object can also have custom data and function pointers so different game objects can have different meaning and logic applied.
On a high level the camera describe where in the world the screen should visualize the scene. If there are two objects too far apart to be seen on the screen at the same time the camera can pan between them.
On a lower level the camera simply describe a transform that is applied on each game object when it is time to render to the screen.