So lets start this off by talking about the first major issue that arises from our game. Space is big, very big, so big in fact that the processing power and storage space required to generate it are astronomical. Not to mention the millions of potential planets, asteroids and other objects that may be floating around each system we have in the game. Keeping this in mind here is my theoretical solution to creating and running such a large dynamic world. I call it a Cluster-based game world.
I will ask anyone out there reading this not to laugh, my current knowledge of game development technologies is pretty limited. Technically I may be talking about something already achieved or well out of current scope, anyway moving on swiftly..
For this idea to be feasible (at least on a basic level, without fail-safes involved) we need to make some assumptions about the game.
- The network the game is played on is fast, stable, secure and reliable.
- The computers the game is played on have strict minimum specification.
When we think about an MMO we think of a game world generated and managed server-side. A known world of finite size populated by finite players. Strangely enough however other types of games often have online capability which allow for a world of infinite size and infinite players. Essentially any game that works using servers online is of random size at any one point. Servers are often run by individuals so processing can be distributed to players instead of requiring vast amounts of space and power.
Following this idea in theory we can imagine an MMOG that equally distributed required processing power per region to people within said region. This would require on the developers part a few components to be stored centrally.
- A secure form of allowing clients to participate in running the game.
- A storage unit holding references to all previously generated systems (along with their current states) in as compressed a format as possible.
- A dynamic star map of the known(generated) universe
Player x entering a previously unknown region of space is responsible for generating all the content in that region, after generation a reference to this system is stored centrally. Player y is sent the current state of the system upon entering, from this point onward players x and y are sharing the responsibility of running this system (Their systems cooperate to process anything that may happen within the system). If both players leave the system the current state is saved in central storage until further players enter. This allows for processing power to be focused where it is needed, known but empty systems are essentially frozen until called into use by a player. If we wish to take into account the movement of objects over time while players are not present we can still simply pass this onto the player entering and allow them to process the time lapse. Centralized servers may exist for ensuring a more fluid experience in zones of heavy congestion, the possibilities are limitless.
Possibly an under-thought solution but with tweaking may allow for an infinite universe to exist with no shortage of resources to keep it running.