Persistent vs. session-based entities

When we connect to a Game World with a Game Client, the traditional approach is that all Entities originating on our Client are session-based. This means that when the Client disconnects, they will disappear from the network World for all players.
A persistent object, however, will remain on the Replication Server even when the Client or Simulator that created or last simulated it, is gone.
This allows us to create a living world where player actions leave lasting effects.
In a virtual world, examples of persistent objects are:
  • A door anyone can open, close or lock
  • User-generated or user-configured objects left in the world to be found by others
  • Game progress objects (e.g. in PvE games)
  • Voice or video messages left by users
  • NPC's wandering around the world using an AI logic
  • Player characters on "auto pilot" that continue affecting the world when the player is offline
  • And many, many more
A persistent object with no Simulator is called an orphan. Orphans can be configured to be auto-adopted by Clients or Simulators on a FCFS basis.