To shard, or not to shard?

Posted by | Posted in Game Development, Pioneer | Posted on 01-07-2013

To shard, or not to shard? Is the wrong question.

I came across a bit hard on sharding in my last and have rightly been called on it a couple of times so I’m just going to quickly clarify.

When You Should Have a Shard:

You will be have various “shard“s your game at least two in fact.

Development Reasons:

Imagine your MMO is up and running but you have a new feature that you want to release, do you:

  1. Unleash this feature direct onto your live servers and unsuspecting player base?
  2. Setup a parallel universe of servers that you let a limited number of volunteer players onto to try and shake out any kinks?

If you chose #1 then you are a brave, some might say foolish, individual… I’d call you batshit fucking mental but there you go.

However if you chose #2 then you now have your first two shards. One is where you test new features before deployment, the other is a stable shard where people go to play and romp through your world/galaxy/post-apocalyptic-troll-smasher.

Typically you’ll have been doing this and not thinking of it as shards just as stages during development. It’s a waterfall of releasing from the raw and wonky development end, internal alpha, QA, external beta and finally onto stable.

I like this kind of shard ;)

Gameplay Reasons:

Brian Green posted this comment on my Google+ so I’ll repost it here to respond:

+Andrew Copland Well, I think sharding is underutilized.  One big benefit of shards is that you can have different rulesets on different shards.  Most of the time MMO developers whine about how hard it is to maintain different rulesets, but I think that if you plan for it you can deal with it easier.  While I didn’t think it was as fun, the non-PvP community of Meridian 59 was very different than the main servers, not something you can have in a “shardless” design.  And, different servers in M59 had very different communities, which would have been lost without the separate servers.

It’s something I’d love to explore further, personally.

Now this is yet another valid reason for having shards. The important thing to realise is that it’d be like having a space game where in one universe gravity pulls, and in another it pushes. They’re kind of the same game, but not really. You’ve used the same engine, assets, scripted events, blah blah blah, but fundamentally these are actually different games. The change to the rules means that they couldn’t cross over within the same volume of space be it literally in physical space or down to gameplay. You can’t mix PvP and non-PvP players in the same area for example… well you could but how fair would it be to have one player attacking another who can’t/won’t respond?

So these are different games due to their different rules, they’re very similar, like twins but with important unique difference that mean you have to treat them as totally separate environments.

I like this kind of shard too :)

When I Don’t Think You Should Shard:

This one comes with the caveat at the end but lets plow onwards…

Because Your Server Can’t Cope:

In all of the other cases we had reasons for creating separate shards of the game, for stability or testing during ongoing development, and for gameplay reasons that largely preclude the intermixing of players either spatially or for technical reasons.

When I think you’ve let yourself down, and the players, is when you split the player population simply because the servers themselves can’t cope with having that many players. In my opinion this should be avoided because it often means that you missed an opportunity somewhere.

I talked about having your servers tiered before to divide up the load, similar to how you would divide the world into various spatial structures to collision/rendering/searching. Attempting to atomise the environment, often spatially, into sets of players so you can move the process that manages them around without interrupting their gameplay to balance both processing and networking load across your available hardware. If you’re finding that your servers are being overloaded then perhaps you’ve not gone far enough in this, admittedly very difficult, process.

CCP has documented their efforts to keep EVE-online a single (gigantic) shard experience. I view that as taking it to the extreme which a noble goal.

This is the kind of shard that I don’t like :(

Which brings me to…

The Caveat:

Yes the get out clause and the reason that I said you will almost inevitably end up having shards.

Go and read that EVE-online single shard article, it’s fascinating and you won’t regret it if you’re into this stuff. Then realise just how much effort has gone into it. Effort, money, time, resources, hardware engineering and some of the finest most experienced software developers in the world.

You probably don’t have all of that.

I don’t have access to all of that, almost no hobbyist imaginable does.

This is why you’ll have shards: because you can’t afford not to.

Game development is expensive to do on the large scale, getting an MMO up and running isn’t cheap due to hosting, co-location, hardware, customers services etc ad infinitum. So you’ll look at the market and try to guess where you’ll be, how many paying players you’ll have and thus how much you can afford to spend on hardware and developing that super efficient tiered server architecture. Because software developers aren’t free y’know! Their time for a team for a couple of years or work will run into several hundred thousands just for the server architecture team, nevermind the game itself, or the building you’re in, or the machines licenses and everything else.

So you budget, and you scale things back to where you think you can make your money back. So lets say you’ve assumed (hoped) that you’ll reach between 50,000 and 100,000 paying players within your first year. Launch day goes smoothly, your beta shook out most of the issues and there’s a real buzz about the game, and everyone logs in. All 2 million of them over that first 24 hours and everything falls over, the game cannot scale to those numbers, it’s trying to support maybe 300,000 to 400,000 players at once and people will be getting timed out, disconnected, lag and everything else.

In time you might figure out how to solve this, where that extremely rare disconnect bug is that now shows up continuously, where you need to instance more heavily, you might figure out how to scale, or what to rebalance to get people away from congregating. Right now though you’re going to add some shards because it’s the right thing to do. You’ve got player numbers you only dreamed of during development and you’ve got to get them a good gameplay experience immediately. So you rent some more servers from the co-location facility (you had them on short notice ready for this right?) and you spread the load across parallel shards of your gaming universe.

This is when it’s ok to do this, because it saves your game, and it improves your players experience.

Try to be good about it and allow people to transfer their player/character/ship/aardvark/wtfever across shards when the numbers allow though reasonably easily. In this case it should be simpler because you’re not moving them across changes in rules or features and it helps to keep friends playing with things that they’ve invested in and want to show off to friends.

Then I’m ok with this kind of shard.





Comments are closed.