Walking the coastline: why adding multiplayer to No Man’s Sky is no stroll on the beach.
In case you missed it while it was making the rounds on “games twitter”, there was a widely circulated screen cap from a player asserting that Hello Games could have added multiplayer to No Man’s Sky in (no more than) 3 to 4 weeks.
This sparked plenty of discussion from game devs, and honestly some cringe-worthy pretension too.
I’m not here to smack down the person who wrote that comment. I’m here to use this potential feature as an example of why things that seem easy can be hard in reality. I think it is in game devs’ best interests to communicate this.
Let’s get this out of the way: it takes longer than 3 to 4 weeks to do multiplayer for any major game. Ben Kuchera gathered plenty of quotes from developers confirming this.
But why?
What we have here is a software engineering coastline paradox. The coastline paradox is that the length of the coast of an island seems to get longer as you use progressively shorter measuring tools. Using large-scale tools, you skip over a lot of the little bays and jetties that contribute to the coast’s length. On the other hand, with a 1 foot ruler, you can more accurately capture the fine details of the coastline.
A lot of problems in software (and game) development are like this. The more closely you study a feature, the most complex and costly you realize it is.
“Just” sending player position and equipment information to other players seems simple enough from a high level. But there are plenty of little bays and inlets to consider. Here are a few:
Would multiplayer make No Man’s Sky better?
To me, the biggest question is whether multiplayer would make No Man’s Sky better. Thematically, NMS is a game about how vast and lonely space is. To me, the feeling of being a lone pioneer is one of the most effective parts of the game. I think giving the player companionship would undermine this feeling.
The universe is colossal. If you don’t make it easy for players to meet up with friends, they’ll never see the multiplayer elements. If the game makes it easy to warp to your friends, you undermine the core loop of the game — gathering resources and upgrading your ship to travel from star to star.
How would players interact? If they are just ghosts with no effect on each other’s world, is that satisfying? If you can’t mine, trade, fight, and fly together, would that be enough for players who want multiplayer? I think they would not be any more happy with that than with the solo gameplay.
Sharing the world
Once players affect each other’s worlds, you need to keep and synchronize a lot more information. If I mine a rock, the game needs to tell your copy of the game. If not, when I walk where the rock used to be, you would see me pass through it like a phantom. It isn’t just minerals. The game would need to synchronize (un)looted status of containers, who is talking to which NPCs, which ships are in the hanger, position and status of sentinels, etc between players in real time to create a sensible experience.
This also leads to gameplay questions. What happens if one player loots a container or activates a transmission tower? Is that action not available to any future players? You have to balance this for both solo and group play.
Multiplayer isn’t just code — it is art
Also: you don’t have a body in NMS. Notice that you never see yourself. In fact, did you notice that NPCs only have idle and conversation animations? There aren’t any walking, running, jumping, climbing, swimming, or jet-packing animations in the game.
You might assume that first person games work by simply attaching a camera to the head of the type of player model you see in multiplayer or third person games. You can’t do this. If you do, the arms look weirdly distorted because the camera is too close to them. Shadows looks wrong.
For fun, here’s what the player model for Firewatch (a first person game) looks like in third person:
Notice how the artists inflated the model’s arms to make the inventory animation look good in first person. This makes the model unusable in third person. Also notice: no head!
Since NMS is a first person, single player game, there was no need for the team to make a third person player model or animations. Multiplayer would need them and they would take a lot of time to create.
Oh, and you’ll need to do inverse kinematics in a curvy procedural world.
A few more considerations
That’s just three areas of consideration, treated superficially. Here’s a longer, but still incomplete list:
- Was the engine designed to handle more than one character with their own controller? Or did the team assume early in development that anything that was not the single player would be AI controlled? How deeply is that assumption woven into the engine?
- How do players find each other? How do we make your friends’ locations discoverable?
- Should we expose the friend list in the game? Can you add people you meet in the game to your friend list?
- How do you handle trade between players? Can players pick up items that other players have discarded?
- Can players fight each other? If so, how do we handle death at the hands of another player? Corpse runs? Are players lootable?
- How can players communicate? Text chat? How would that fit into the UI? Voice chat?
- How do you do deal with spam, trolls, and griefers?
- Can players block other players who have a negative impact on their experience? How do you maintain a consistent world state if half of the players have blocked someone but the other half have not?
- Can players report bad actors to moderators? What tools do moderators need to investigate player behavior?
- Do you create “safe zones” for players that don’t want PvP combat? Does “penning in” pacifist players penalize them for their preference?
- How do you handle “instancing”? If players are in a fixed “match”, even with 32 players, the odds of meeting anyone across a quintillion worlds is low. If everyone is together in one instance, how do you handle a thousand players landing on the same world at the same time? If it is somewhere in the middle, how do you “split up” the universe so that it is seamless to the player?
- How does the QA plan change since the QA team needs to test everything in single and multiplayer scenarios?
- How do you support the ongoing cost of many beefy servers since players buy the game once and don’t pay a subscription or do micro-transactions? You also need to include cost for a team to keep the servers running — probably three or four people since you need someone paying attention 24/7.
When you consider these dimensions, you can see why the industry rule of thumb is that multiplayer adds 50 to 100% to your project budget. You can see why a studio of 15 people would be hesitant to take this on.