all things end is intended to be a zombie survival simulator. It may run as standalone for singleplayer, peer-to-peer or dedicated-server for multiplayer support.
To support these modes, the engine should run as 2 distinct components, a client (responsible for visualization) and a server (responsible for actually running the simulation). Each component may be run in any number of topologies to support the aforementioned modes, and it should even be possible to switch between topologies (say, from standalone, to peer-to-peer with drop-in-and-play semantics, to dedicated as load increases).
Each mode has distinct advantages, but the underlying framework should be flexible enough accommodate them.