Disclaimer – I am by no means an expert in the area of MMO hardware architecture, so some of this is just wondering aloud (or in print as the case may be) about the logical way to set up servers for our spy MMO.
Normally in MMOs you have a bunch of servers that each are running a copy of the entire world, or part of a world with several servers grouped together to make an entire copy of the world. Some similar to this:
The blue ball would be the world server that the player is handed off to from the login server (in the upper right) after the player successfully logs in, where he’s handed off to the server(s) where his character resides.
This is a must-have architecture when you have millions of people running around and the people can, at some point, get to every point in the world. What if you want to normally limit players to only a section of the world though? This is probably the way most spy agencies work, TV shows about spies not withstanding.
If there’s an operation that requires agents to go out of the local area, in the game it could be handled by spawning an instance of that area on a server dedicated just to spawn instances, which shouldn’t be too resource intensive so that many instances could be handled at the same time and agents from any area in the world could be handled. The mission areas probably wouldn’t be as large as the area where an agency HQ is located, which would be city sized or slightly larger possibly. I would imagine most missions could be contained to several city blocks and if the mission takes place in several locations, the areas could be loaded into the instance as needed.
The world server (the blue ball) can be used to allow area instances to communicate with each other. This could be represented in game by any UI needed, from a web site on a device that the character can look at that shows what’s going on in the agency in all the areas, to a bulletin board in the HQ break room that shows memos from other area HQs to whatever can be dreamt up.
Obviously this type of hardware setup is going to be out of the means of most indie developers. What do we do then? For test purposes this could be several instances of the server software running on one machine, or a couple of you have a network that’s available to you. Since we’re just in the “here’s what I’d imagine things would look like” stage right now, we can worry about the actual implementation later.
So is this kind of a setup logical from the way our game is going to work? What am I missing? I’m sure I left something out or my ignorance makes what I’m thinking of difficult or impossible.