Since Contextualizing Artificial Intelligence and Psychology, I've been designing a drawing that aims to represent the current architecture I have for creating real-time 2D simulations. This can be considered a blueprint for each game simulation.
The design goal is to provide a means that allows the most common or otherwise reusable components, which make up almost all simulations (considered as separate games), to be reused in each simulation/game.
An example would be providing a means for each simulation to load settings or resources, so that each game does not need to reinvent this ability within itself each time, meaning this ability would be isolated to the game/simulation in which it was invented/used. Another example would be the event system that can be used in each simulation to track real-time events.
The system I've designed so far reduces each simulation/game to implementing/using a common design blueprint.
Here is an illustration of the design: Single Simulation Architecture.

In this design, the game objects can range from the Player, NPCs, Pickups, Rooms and simulation-specific objects such as the environment, the HUD and other visual elements.
Fundamentally, each simulation would centre around re-using the common event system, settings, resource, graphics, network and scene managers. Each simulation would also likely reuse the FixedStepGameLoop to generate a fixed frequency of change to the simulation. Each simulation would, however, implement its own Level and Input manager, which would load the simulation-specific content and handle various inputs.
With this design, it is now possible to rapidly create simulations that are isolated in their specific functionality and decluttered from the common functionality that all simulations should contain.