999 Player FPS

The world record for number of players in a single game shard (and visible to each other!) has been officially broken (official meaning that Guinness World Records has verified it)! Man vs Machine browser-based FPS prototype developed by MuchDifferent supported a one-off event of 999 players.

The event was made possible by their custom server backend, Pikkoserver. The client software was a Unity browser plugin. The server ran on eight server threads on what appears to be a single machine. Clients would have need 256 kbps modem. There are videos to demonstrate that it did function mostly well and certainly showed a lot of action (though the language of the average FPS player hasn't improved much since I gave up playing a certain FPS a few years ago!) I wonder if they'll publish the event logs so that people can analyse the fairness?

Local Area Networking

 

Tom's Hardware has a good round-up of current LAN hardware suitable for home or small office networking. It gives a decent summary of standard wired and wireless networking hardware as well as a few more exotic systems such as power line networking. We should all be laying Cat6a UTP in anticipation of 10G Ethernet becoming cheap in the next few years ...

GDC Vault

Our last couple of posts were about two talks from GDC 2011. The GDC Vault contains hundreds of talks on all aspects of video game development. The talk slides are usually free. Members can access videos of the presentations, though some of those are free too. Here are a few more that are networking related:

GDC2011: Large-scale Messaging at IMVU, Jon Watte, Technical Director

A talk about scaling up a IMVU's messaging systems to millions of connections. Very interesting discussion and links for anyone building a MMO. Nice to see Erlang gaining in popularity.

GDCChina 2010: The Server Technology Of Eve Online: How To Cope With 300,000 Players In One World, Kristján Valur Jónsson

At the time of the talk they had peaked at >60,000 simultaneous users. Talks about a few key parts of their infrastructure: some numbers about their database (2000 transactions/s peak), their use of Stackless Python (also discussed here), and the partitioning of servers and services.

GDCAustin 2010: Scalability for Social Games, Robert Zubek

Zynga's social games (Farmville, etc.) are slow-paced games, so they are very amenable to implementation on standard web technologies. This talk gives some basic outline of how web services are scaled.
We discussed Disney's ToonTown in the book. This talk gives a broader overview of Disney's MMOs including ToonTown. The technology for ToonTown was re-used in Pirates of the Caribbean Online. Its broad-brush; they use zones worlds and try to give a seamless experience; they do network filtering using a channel-based approach.

Networking for the Web

 

There is an interesting article in CSCW2011 this year about the performance of different technologies for communicating with servers from within a web browser:

Carl A. Gutwin, Michael Lippold, and T. C. Nicholas Graham. 2011. Real-time groupware in the browser: testing the performance of web-based networking. In Proceedings of the ACM 2011 conference on Computer supported cooperative work (CSCW '11). ACM, New York, NY, USA, 167-176.

this is available from ACM Digital Library here, or from various other sources (use Google!). Various "hacks" have been proposed in the past to fetch data from servers (long-polling, Flash applets). The article discusses these and others. For me the most important point was the performance that they managed to achieve with Web Sockets in HTML5.

Dead Rising 2

 

1000s of Zombies, 1000s of Problems: The Dead Rising 2 Multiplayer Experience by Dee Jay Randall

 

Another interesting talk from GDC 2011. Dead Rising 2 is excellent fun: you get to mangle zombies in lots of different ways. It supports a two player co-operative mode. Just because of the nature of the game with thousands of potentially moving zombies and other props, this is a game that would be hard to scale compared to an FPS such as Halo (see our previous article).

An assumption made in the networking design was that there would be little contention over objects in the game space. Thus each player's client simulates the state and does the AI of those world objects near by to them (zombies and props). Anything not near a player is idel. Because the game has a mission structure some client-server style overall control needs to be done.

The talk also covers some compression techniques they used including state extrapolation and dead reckoning. The dead reckoning is interesting because it mentions that they implemented it within Havok using soft keyframes - that might be quite generally applicable if it does what the terms suggest!

Another interesting aspect is that the game supports late joins and can thus serialise quite large state changes. This was noted to be an area of current development.

And again, the importance of debugging tools is identified. In particular the problem of logging so that the root cause of de-synchronisation can be determined.