Friday, August 12, 2011

How many machines do you need to develop a multiplayer game?

Assumption : You're working on internet PC game.
  • As long as you can run multiple instances of your application, then you can do all the network multiplayer testing you need.
This would be fine if you didn't want to test if your game grinds to a halt due to network traffic not being 100% reliable (like it is if you use local loopback).
  • You can run the game on two machines to do your testing, that would be indicative of network traffic in reality.
Except it's not, as you're testing on a Lan, which is about a thousand times more reliable than any real world internet connection.
  • You can run the game on two machines, but make sure they are located on different ISPs.
Much better, and would work for almost all cases of network errors such as NAT tunnelling.

But, what if you're working on action game? They normally have match-making, and no dedicated servers any more apart from login and match-making. Most games are actually host-client, but have more state information held in the clients so they can reliably survive a host drop. This P2P network gaming has it's own problems.
  • Two machines, one is virtual host, one is client.
Great, what about client vs client interaction?
  • Three machines, one is virtual host, two are clients, do most of your testing on a client vs client basis as host would probably know enough to be right anyway.
Good, but what about buggy situations where there are three clients involved in a dispute (such as when you get shot by two people, both client, you're a client, and you don't know who shot first and who shot second.)
  • Three or more machines depending on how many people are involved in each of the logical gameplay elements. (#involved + 1host == needed machines)
But what about network throughput, connection dropping and net-splits?
  • As many machines as you have decided maximum players in the game, and some funky network-switches/hubs you can pull plugs on.
Which is impossible for MMOs... no-one could get that machine machines together, let alone pay all the testers to operate the game.

Well, here's what I think you should probably do:
  • For initial development, three is a must.
  • Once the basic game is done, make sure you have some form of bot, and get as many computers as you can afford.
This works for everything but human error and tunnelling problems. You must have real humans play the game in their homes, so you must do an alpha/beta before release. If you don't there will be game breaking issues. This isn't just likely, it's a guarantee on all but the simplest multiplayer games.

1 comment:

Funcan said...

Could you steal a tactic from the open-source world and beta early and often?