Opinion: Designing a 'Single Server' MMORPG
May 14, 2009 4:00 PM | Simon Carless
[In a new opinion piece, designer and Divide by Zero Games founder James Portnow looks at design approaches to unsharding MMOs, in order to create more immersive, integrated game worlds.]
We won’t be able to provide meaningful stories in MMOs until we can allow the players to affect the world they play in. Currently, this is impossible because of the nature of “shards”, “mirrored worlds”, or, as they are best known, “servers” (though this last term is somewhat inaccurate).
The reason for this is: If players on Server A can make choices that differ from those made by players on Server B and those choices actually impact the game world, on the development side you soon end up with a fracturing storyline and so much content to develop that you’ll be fast on your way to learning a lot about bankruptcy court.
There are many ways to solve this problem, my favorite of which is a largely instantiated world tied together with an overarching story structure (I know that’s a dense sentence – come to one of my talks, you’ll find out exactly what I mean by it – but, as it doesn’t really affect the rest of the article, I’m not going to steal more of your valuable time by parsing it).
But I’ve been asked time and again by major companies and interested designers how to build an unsharded MMORPG with a single, vast world space that all the players can play in (for some reason people seem to like to do things the hard way). Well today you’ll all get to hear my answer.
Just to be absolutely clear about what we’re discussing, imagine a game like World of Warcraft, but instead of all the players on different servers they all play on one server. I’m sure your designer brain is reeling at all the problems this presents. You’ve probably already spat out this list of issues, but here’s what I see as the major hurdles to overcome if you are to build such a world.
1. Population Density:
a. Getting enough physical space for all of your players to play in.
b. Making sure towns/areas of interest aren’t over populated.
c. Allowing players to traverse quickly enough between areas of interest.
2. Varied Content:
a. Providing all the players something compelling to do.
b. Having a world that feels cohesive to the players.
3. Production
a. Creating the game economically.
b. Ensuring scalability and cost-effective ongoing content creation.
So now that we’ve identified some of the problems, what will you need to make your Unsharded MMORPG? Well first you’re going to need about 100 million dollars. You’re going to be technology heavy, because you’re going to need a robust backend plus some sophisticated world building systems... What can I say, big world MMORPGs aren’t cheap (and building infinitely extensible ones are even more ‘not cheap’, we’ll be doing a lot of tricks to get it down to 100 mil).
Assuming you’ve got that 100 million. What will you need to do with it? Well, first off, you’re going to need an infinitely extensible world. Clearly you can’t build such a thing by hand without going bankrupt, so what can we leverage to help us create this world? Procedural Content and User Generated Content.
World Enough and Time
In order to create the incredibly immense world you’ll be building you need to create a procedural terrain generation system. This system has to be able to create a varied environment on a large but limited set of assets. How varied? Well remember that we’re talking a world that is potentially unending.
At its very least this world should be about one hundred times bigger than the current World of Warcraft world (this calculation was done with some very rough back of a napkin estimates on how much “space” an MMO player needs to thrive in a virtual world -- which were in turn based on the fact that the peak concurrent on a heavily populated WoW server is about 4000 and that a game of this nature would have to be design for peaks of at least 80k, accounting for differing nature of this type of game).
Your system also has to allow you to scale your world and push the edges of the world out as your populous continues to migrate and explore. Additionally it has to generate a cohesive and traversable world.
There are lots of articles out there on how to procedurally generate terrain, so I’ll skip the specifics. Let’s see what else we need to do.
Works of Days and Hands
Okay, so now we have a world. Now we need to put some stuff in it. Let’s talk about what ends up in an MMO world, because really there isn’t that much, there’s:
1. Cities and Settlements
2. Monsters
3. Natural Resources
4. Dungeons (instances)
Town Building:
Well, first let’s discuss cities and settlements. For the most part we aren’t going to want to build these either…so let’s let the players do it. This leads to a more dynamic world with more player ownership. It also means that the towns will naturally sift out to be where the players need them in your procedurally generated world. Of course this means building a robust and, more importantly, fun, town building/management system. It also means giving players a reason to build and manage towns. Looking at EVE Online’s station management system here is a good guide.
EVE has taught us that player built locations can encourage social interaction, drive player conflict and take some of the burden off developers. How did they do it? By properly incentivizing station building. Rather than being an afterthought – as it is in most MMOs that even include it – ‘town’ building in EVE is an integral part of the design. Player who build stations get economic resources otherwise unavailable, thus highly encouraging structure creation (and defense). This is essential if we are to rely on player created towns in our game.
Additionally this sort of town building gives us one further benefit: it broadens our audience and allows for a new form of play. There will be players who do nothing but manage towns and help build the world. Some of these players will end up being some of your best evangelists, rather than simply washing out of an ‘all grind’ game.
So what sort of system should town creation be? Sadly it is going to require building a totally different interface than your standard MMO controls. This is expensive, yes, but not as expensive as building all the towns of the world. The key to this system is that it be simple to use.
I recommend going with a top down “gods eye view” perspective for your town building, this allows players to see all the buildings in an area in relation to one another and allows you to do basic usability enhancements like outlining buildable plots of land. Building buildings should be as simple as having the resources, clicking on what you’d like to build and where you’d like to build it.
For the most part players should be able to build a single building in a town, let it auto-manage itself and receive income based on the usage of that building (with occasional trips back to upgrade it) if so desired.
This should be completely separate from town management (which we’ll talk about below). On the art side, buildings should be based off simple templates with modular segments for player customization (obviously simple re-colorizing is the cheapest and goes a long way but, if you’ve got extra cash in grip, building finishes will really make your world more vibrant).
Now about town management. There should be a system where certain players can manage an entire town or section of larger cities in order to keep things cohesive. For doing so those players should receive income based off the use of all the buildings in their town (can even be a tax system with a neat slider!) which can only be used to upgrade the town and some sort of personal incentive based off the success of their town.
If you really want to mix things up and incentivize player politics, which we’ll talk about below, allow a “graft” system where players controlling towns or areas can skim some of those funds for their personal use.
How players get to control towns is up to you. Depending on your game you might want it to be a conquest system, or democratic elections, or both.
This system will give your MMO a much needed ‘elders game’ and will allow you to have meaningful player interactions at the high end. This is important since in an unsharded world standard high end raid content becomes much less vibrant as it will be much more diffuse, so anything we can do to create interesting high end gameplay without having to handcraft raids will help a great deal.
But before we can examine that we need to give player’s a reason to congregate in certain areas.
Socially Designed Procedural Resource System
Just because much of our game is procedural doesn’t mean that it isn’t a directed experience. We want players to have the best experience possible, so this means creating “smart” procedural systems that take into account more than just mathematics; we need to build systems that account for human behavior. We’ve just talked about the town creation system. Now we have to consider why people build towns.
For the most part humans build towns around trade routes or natural resources with some minor consideration for defensible terrain. In pre-industrial societies, towns located around natural resources tended to grow until slightly past the point where the per capita access to resources was less in the town and surrounding area than it was in the wilderness.
Trade route cities obviously grow and die with the trade routes they exist along. Major economic centers tend to occur at the confluence of multiple trade routes, so long as that location has some access to independent resources and some natural defenses.
So now the question becomes: how do we allow for this behavior with our resource system? Well first off I’d encourage you to have a designer who has a lot more background in how humans choose to congregate than the above paragraph (fascinating topic, I could go on about it for hours, luckily for you, I won’t…), but just using the above brief information, there are several keys:
1. Remember that monsters ARE resources.
2. Have a weighted distribution system that makes "resource lanes" and "resource nodes"
3. Allow for resource thinning over time
First and foremost, I’ve met a few MMO designers who seem to forget that monsters are their number one resource. Players will tend to congregate in good spawn areas. It’s amazing how quickly even marginally advantageous spawn areas get discovered and exploited. This means your spawn placement and natural resource placement systems should be viewed as one holistic system rather than two disparate entities.
Once you’ve got that overarching view of what your resource system should be, how should you implement it in order to best take advantage of natural human grouping instincts?
Well, first off, you’re going to need to view your world as a grid. You’re going to start off with a group of “resource nodes” - heavy resource concentrations - that will form your starting towns. These towns will have to be built by you, the developer, to give the players a place to start from; luckily the town building system you’ve already implemented should make this cheap.
Once you have these nodes, you’ll have to set the content around them. You will basically be creating "newb zones". This will serve as a seed for your procedural system. Your system will take into account the difficulty of the content in the neighboring grid squares in order to place similar content next to it, getting more difficult as it moves away from the initial nodes.
It will also have to take into account the amount of content in neighboring grid squares in order to algorithmically generate channels of resources that guide players to further resource nodes (where you can expect players to create cities).
It’s important to remember that resource spawning takes place over the lifecycle of your game rather than simply being established when you launch the server, so your spawning mechanic should be able to adjust dynamically as your gameworld/player distribution changes.
It needs to be able to factor in social elements such as what the average level of players in the area and how long an area has been player dominated (so that long held territories become more peaceful, encouraging players to explore and disperse).
I won’t take the time here to go into the specific algorithms to do this, but consider your system to be a cellular automata in the vein of Conway’s Game of Life (if you don’t know what I’m talking about you should immediately stop reading this and Wikipedia Conway’s). This should help contextualize your thinking on how to distribute natural resources, monsters and instances.
Monsters and Instances:
Ok, so far we’ve created the world, we have resources distributed around the terrain so as to direct the players to congregate in specific areas and we have a town building system to facilitate their doing so... now we have to contemplate how to make the actual game fun.
Combat in Fantasy MMOs is well established and many cleverer individuals than I have opined on how to improve it, but it’s not unique to an unsharded world, so let’s skip past that part and talk directly monsters and instances. In an unsharded environment we have to look at monsters and instances fundamentally differently than we do now.
Right now the paradigm is to spawn individual ‘mobs’. To keep things feeling fresh in an environment of this size you should instead be spawning encounters. Some simple scripting will allow your battles to feel more vibrant and get more millage out of a limited amount of content so:
Instead of spawing some orcs, spawn “some orcs fighting some elves” or “some orcs attacking a wagon train” or “some orcs attacking a wagon train with some elves defending it”. In these sentences the terms “orcs”, “elves” and “wagon train” are all variables: they can be plugged in with any monster, humanoid or ‘stuff’. This allows you to create more interesting encounters for your players to stumble upon and while repurposing content to keep costs down.
To re-illustrate: running into orcs sitting around a campfire or elves sitting around a campfire is more interesting than running into a randomly spawned pile of orcs or elves, moreover in both of these scenarios we can reuse the campfire without creating any new assets.
This is important because it will give your world the feel of a vibrant, living environment without handcrafting specific encounters for specific zones (which you won’t be able to afford to do in a world of this magnitude). If you layer on top of this a function in your resource system which tries to deploy a similar set of creatures in any specific geographic region (with these creature sets blending into one another on the boarders) you will have created a cohesive world.
Instances will also have to be largely randomly generated. Handcrafted instances will provide too much incentive for players to group in any specific area, so instead you can distribute entrance points to random instances across your world as it is being created.
Each of these “random” instances should be pseudo-random. They should have attributes such as: difficulty (expected level range), environment/theme, monster types encountered, loot types dropped, etc. Most of these attributes should be set by your procedural spawning system.
What Man Has Made of Man
It is growing late and I grow weary (as probably do you, this is like six pages... of reading... words…), so I’ll try to keep the rest of this brief. There are two major boons that unsharding provides
1. Player interactions can have real meaning.
2. Players can affect the world they play in.
These things may at first seem similar, but I assure you, their distinction is important. Player interactions range from political interactions to the economy of the world where as when I say, “Players can affect the world they play in” I mean that you can give player’s real agency over what occurs in your MMO. There is a vital interplay between the two, but they are separate ideas.
It’s important to focus on both of these things because otherwise, why unshard?
This means that:
A. You should focus on the strength of your MMO: the number of players.
B. Create opportunities for your players to affect the world.
Normally I talk about these two points in great detail whenever I discuss unsharding MMOs, but as that would meander into another several pages of text which would not be directly relate to the practical problem of building a single world, shared story space, fantasy MMORPG I’ll leave you to think on these two points and offer simply this:
In a game of this nature you are not going to have the high end raid content a person might expect from a standard MMORPG, so you have to find other ways to encourage top tier player retention. The two ways to do this are to allow for a thriving player society, where player empires rise and fall, trade monopolies are gained and fortunes are made then lost and to allow player deeds to have a permanent effect on story and game play.
The first way mentioned is sort of the high end PVP aspect of your game, and, if I’m going to give you any advice here on it, it’s to write it into your story. Let player guilds and player wars become part of the lore of your land. Let player factions ally with your NPC groups and influence the future of your game. Patch for things they do and let them engrave their names on part of your world. You’ll get higher retention from this than from a thousand well built instances.
The second is your sort of your PVE. It is events, crafted by you the developer, which take in the whole scope of your world and allow players to decide how they want their world to grow. This can be anything from upping the rates on Goblins spawning and having players fight off the “goblin horde” until finally they unlock the power behind it, to turning in medical supplies to stave off a horrible plague.
Of course, to do this well you have to let people ally with the goblins or the dark forces secretly spreading the plague…and those forces can’t be de facto evil. And you have to be willing to patch differently depending on whether the goblins win or forces opposing them. If you do that you give players a chance to say “I was there”. When they pass by the town ruined in the goblin invasion or the plain haunted by those dead of the plague, they’ll have an unprecedented sense of ownership of the world they are in.
If you want a longer diatribe on how to do this, feel free to email me (my email address is at the end), but simply put, if you are going to do this, remember why you went to all this trouble in the first place.
Flights of Angels
Take this, run with it. I hope it does some of you some good. More importantly I hope it gets us a little closer to delivering the kinds of worlds and the kinds of stories that our medium has long promised. If you use it, I would simply ask that you find the time to share something you learn.
[James Portnow is a game designer, formerly of Activision, and now at Divide by Zero Games, where he is also the founder and CCO. He received his master's degree in Entertainment Technology from Carnegie Mellon University.]
Categories:








19 Comments
This is a great write up on theoretical MMO design in general, and contains a lot of (what I consider) valuable input that could, and should, influence the next round of games and/or updates to existing games in this genre...
...however, I have to chime in and strongly disagree, as usual, with the obligatory price tag.
You're advocating procedural generation of content, yet you insist on $100 million as a comically unattainable goal? I'm a software guy, but in the last few years I've gotten into high-throughput server architectures... this just is not the barrier it used to be.
As a former C/C++ guy who's getting into Python, I have to point out that the 'multiprocessing' library provides what amounts to inter-server load balancing within a single game world -- that's multiple servers hosting a single world. Yes, it comes with some overhead, but if you've designed a server app that can handle the kind of traffic you're talking about for a monolithic game server, this should not be a significant issue.
I can't believe this is unique to Python... but even if it is, given the progress that the Unladen Swallow guys are making (read: Google is rebuilding Python with the goal of execution faster than native C without the GIL -- and not only are they succeeding, part of YouTube is already running on it) and the already-powerful multiprocessing library... running a single game world with the resources of multiple servers is not just feasible, it's an important design consideration for anyone planning such an architecture.
Coupled with the low cost of running multiple virtual machines and spawning new ones at run time to scale (another plug for one of my favorite tech toys, Amazon EC2), this becomes an incredibly powerful set of tools for people looking to scale their game worlds arbitrarily. The barrier to entry is little more than research.
phu@ | May 15, 2009 12:40 AM
Great write up for the most part. I have to take issue with one thing:
Instances.
If you are going to all this trouble to create one big seamless world for your entire player base, why are you ruining that with instances?
Instances turn an otherwise limited resource (dungeons filled with special encounters) into an unlimited one (now every group gets their own copy) and destroy player interaction and serendipity in the process. You'll never meet a new friend inside an instance.
Chong Li | May 15, 2009 12:56 AM
I just have to comment on what Chong Li si saying - Instances are VERY important because it enables an undisturbed team-play - and atleast for me it's the only reason to why wow is even worth playing
Mattias | May 15, 2009 1:09 AM
@phu@:
I think yr comment above is a valid one and that some combination of a task-/actor-based paradigm running over a scalable virtual machine is the model that single-shard MMOs (and lots of other massively parallel applications) will coalesce around in the next few years.
However, I think you are missing the point about the economic vs. the technical challenge here. As the article points out, the real costs involved are in changing the nature of the game and the interfaces, asset creation tools, playtest, QA, etc. that goes along with each of the changes you make. Right now we have the tech to just take WOW and make it really big so you never wander off the edge of azeroth and every new area you enter has more dungeons and more things to do. But if all these new areas are just repeating tiles of the same stuff you've seen before, this MMO would be, basically, shit.
With persistence comes the need for scale, but also the need for meaning in terms of the changes players make. Eve has got this spot on in terms of the motivation to create content (player-owned-stations + alliances) but it is also designed from the ground up in order to support this. The world of new eden is divided in to a static graph of systems which do not interact in real time, with each system being a large, largely empty, box with a few statically placed features in it.
Eve's design for persistence is exactly the right template, but porting it in to domains (i.e. fantasy/FPS) that don't naturally support segmentation, gradual changes in AoI and gradual changes to persistent content present a massive creates a massive production challenge. It also presents a relatively large technical challenge, but, as you say, the basic techniques exist, they just need to be pulled together.
robbb | May 15, 2009 1:34 AM
A google sized text game world is being designed at Medievia. It does pretty much everything stated here plus quite a bit more. It is now open for testing.
Mike Krause | May 15, 2009 1:39 AM
It is ABSOLUTE Horse rubbish. complete and utter balderdash. There are Sooo many examples of how this is completely false. $100,000,000? Get a superdome. Duh! It has a OC-48 plug on the back, and enough backend communication hardware ( at System bus speeds ) to get a lot of syncing of the shards.
Perfect example is Dungeon Siege. Seamless, can possibly have a lot of users, and developed for a lot less than $100,000,000.
This guy is just complaining about EVE. Get a LIFE!
But finally, what is your world going to look like, either they are going to trash the place like PYST, or they are going to be so far apart, it will be like walking in the desert.
"The team is hard at work building our first release..." Ahh this guy is just looking for venture capitol. Buy NCSoft and start with the code base for Tabula Rasa. Geez...seems like this guy has a petulance for NIH!# Not invented Here # and MMR # Make Me Rich! #
Hmmm... I would like to get a look at the world he creates. ( Space Siege is a TOTAL FAILURE! )
Killmo Fasta | May 15, 2009 1:45 AM
The reason a single server works for EVE Online isn't just their hardware infrastructure and the specialized software.
The world design also helps a lot. Instead of just instancing, they have a clever solution that effectively instances, but allows any player to find such an instance and the players in it. So, there's interaction from the 'outside world' with the instance, but very limited interaction.
Since space is uniform, this works very well in EVE. You can have the 'same dungeon' in a dozen locations in a single area, simply because these locations are just points in space a player can 'warp' to.
This solution won't be as easy to implement in a fantasy MMO, unless you figure out a way to instance a 'dungeon' on a procedurally generated part of the world. So, a randomly selected part of the map can suddenly serve as the setting for some 'mission' or 'dungeon' and anyone getting close effectively enters this particular instance. From a distance, all you might be able to tell is who is there, but more information is only available to the players in the instance.
This type of solution still breaks if a very large number of players enters the same area or location, as it regularly does in EVE Online. But that's where the hardware and software solutions come in and where you need to start thinking about in-game mechanics to prevent too many people from entering, that make sense from the world perspective.
Grismar | May 15, 2009 2:06 AM
I can't believe no mention of Star Wars Galaxies has been made in reference to the city/house building section. WOW. I played that game for 5 yrs, and it is BY FAR the most intricately built MMO out there, still. The only thing thtat has a hope or a prayer of touching it would be Star Wars The Old Republic, due in a few yrs (BioWare + Lucasarts = high hopes)... TwoPheat
TwoPheat | May 15, 2009 4:56 AM
Uhh....you just described SecondLife, except they have a single world with a distributed server architecture. Plenty of MMORPGs have been written inside it.
Lynne Wu | May 15, 2009 7:19 AM
@Mattias:
I kind of got off on my technical tangent and failed to address what you're talking about, i.e. the design challenges inherent in making the game behave differently.
However, I still don't believe they amount to the kind of investment that's being suggested here. To make such a significant shift in the way the game is created and the way interaction happens requires a whole lot of rethinking and broadening of scope... but to do it in a largely procedurally-generated manner requires intelligent design (haha, see what I did there?) a great deal more than brute-force monetary investment.
It has an associated cost in terms of design and development time, yes... but I believe in the end, as long as you're depending on those flexible tools to generate and handle your world, their creation will not approach the costs incurred by current MMO's where new content is hand-generated out of necessity.
I do believe this is a greater hurdle than the technical side; I just think it entails far more research and critical thinking than grunt work. Also, the magnitude of costs like QA depend heavily on your development model; for something like an MMO, a closed beta after programmer testing can cut down a great deal on the need to pay testers, for instance.
phu | May 15, 2009 10:49 AM
Erlang is able to handle concurrency and fault-tolerance in ways that Python never will. So, for the next generation of single-server MMOGs, Erlang is a better choice for core logic. Erlang can integrate with Python or C++ for gameplay logic, so it only needs to be a backbone for the system.
Michael | May 15, 2009 6:17 PM
Strikes me that a distributed server architecture would let you create a shardless system for a lot less money. Each area of the world is given it's own server; when you pass through the gate/portal/mountain pass into the new server you leave the old server and enter the new one. You just pass around the "character sheet" of the player, closing an old transaction and entering a new one.
If advanced users are allowed to add their own servers, create encounters, and geometry, edit the game rules (within limits) on that server... for example, on this server magic works poorly, and swords are limited to +8...
Well, since actually each server is an entirely seperate game that can be programmed seperately, you could do crossover stuff like taking your fantasy orc into a space game (provided the character sheet can be properly translated).
Encryption, security, and auditing of game balance now become the major technical challenges.
gil | May 17, 2009 12:13 PM
@Michael:
While really excellent and well done, Erlang's concurrency model may not lend itself to game server programming, particularly given the impossibility of shared objects. It may be possible to work around this by writing manual resource management, but asynchronous message passing could potentially pose other problems.
@gil:
I have to disagree with this. By simply moving game areas to their own servers, you have not solved the problem of scalability; you've simply distributed the same bottleneck to multiple servers.
Without a way to let the game arbitrarily delegate connection handling to a machine that can accept it, the problem is just delayed.
phu | May 18, 2009 11:29 AM
Vanguard:SoH did their world system very well. Instead of predefined zone lines the world was completely open and the server would pass around the charater sheet betwwn nodes as the charater crossed node lines.
jasonD | May 18, 2009 5:35 PM
A very interesting read - I really hope we will see some future projects (what about Blizzards new one...?) thinking about it.
One remark to the generated world: The geographical data of the whole world is available today - depending on the resolution for free (e.g. the US with a resolution of 15 m) - so there ARE all data you need to build worlds.
You can condense them to be not that large in the game reality - but you will have the advantage of a "real" world to settle, to explore... I myself would love to explore the well known areas of my hometown again - stuffed with new adventures and the monsters I imagined in the forest when I was young now become real :-)
Nemo | May 19, 2009 12:16 AM
Actually, writing single-word MMO-servers that scale is not that hard if you choose the right language (for example Erlang instead of C/C++).
Check out my site www.next-gen.cc.
Christian | July 21, 2009 1:06 AM
I am currently creating a game (still at design and logic creation) and it will requires a 'single' server technology supporting multiple players, up to a few millions. And all in the same city. There is no world outside the city.
Eve online have a few very good elements, such as the station management, the economic system, the contract system, the education system, etc. That game was nicely engineered.
Once the design of my game will be complete I will be looking for a major video game company and capital venture up to 200 millions (easily). That game will wipe out the market, so strongly that WOW would look like a gay-game. I cannot tell you more before patenting a few concepts. :)
Raistx | January 16, 2010 2:03 AM
Ok, this is a completely idiotic idea. Its more than just creating the details. We all know what you need to make a successful MMO.
The biggest problem is lag. A single sharded MMO is just asking to crash and burn. If its all text, you'll be fine, but no one wants all text.
Instead the lag is going to be horrific. Server crashes will be constant.
The very idea is completely insane. Even the most powerful computers in the world can't handle 300,000 people accessing it all at once.
Melissa | April 22, 2010 11:55 AM
Melissa, have you heard of horizontal scaling? You can look it up on Google/Wikipedia.
It means many servers working as one, in that case you can have 30 servers handling 300 000 players (but still in a single world).
Christian | September 13, 2010 4:43 AM