The Problem
Online multiplayer is massive today. There are so many games that have multiplayer now, and they all handle it slightly differently. Some use p2p, others use client-server. The question is, which is better suited for the task and what are the pros and cons of using them. This question is important as the protocol used has massive ramifications, positive and negative, for the cost of setting up and maintaining the online multiplayer, and the enjoyment of those playing the game. With massive costs associated with either option, picking correctly is really important.
Previous Work
Many games have been released with all kinds of implementations of online multiplayer. Some utilize client-server, and others utilize p2p. Within p2p, there are a number of ways games can handle it. They can have each player sending data to each other, with no ‘host’. They can have a host player which everyone connects and receives data from, but when the host disconnects, the game ends; and they can have a host player but when the host disconnects the host role switches to someone else. With so many unique ways to handle this problem, there isn’t a clear answer on what is best.
There are many great papers on the subject of p2p in online games. ‘P2P matchmaking solution for online games’ discusses p2p vs client-server solutions, but mostly focuses on how to build a sophisticated p2p solution for a game, and not the base problem [1]. We plan to focus on the real world differences and the associated costs of those differences and answer if finding a great p2p solution is even worth attempting.
Method
Our approach is to build a small online game using a client-server implementation and a couple of p2p implementations including pure p2p and a host p2p as mentioned above. The difference here compared to other research is that we are able to compare network and gameplay performance for the same game using these solutions. This allows us to create a direct comparison as to what are the tangible benefits or disadvantages to this solution.
Deliverables
Oct 24th: Create a small game with networking capabilities using JavaScript
Nov 7: Continue researching the topic for a better understanding of previous work
Nov 21st: Research and experiment using the small game and different solutions
Dec 5th: Final paper/presentation