A8 - Multiplayer Game

1000 points

Online games have evolved over the past decades from simple multiplayer games such as Counter Strike 1.6 to entire metaverse environments such as GTA V Online . Multiplayer games have forever revolutionized entertainment and stand today as one of the most significant areas of distributed system innovation.

Designing a multiplayer game requires several areas of expertise, ranging from graphics design to physics realism. In this course, we focus on the networking challenges encountered in developing an online game.


Assignment

Your task is to develop a multiplayer game, focusing on the networking challenges of game development. For this, you must use Python with the regular lab environment. However, you may use third-party libraries such as PyGame for handling the graphical user interface and keyboard input.

After you are done implementing your game, you must write a game documentation in a README.md file, describing the implementation details of each requirement, challenges encountered, and trade-offs considered. Additionally, your document must include installation instructions for the game. We expect you to use tools such as Python Build or Conda Build to create a release of the game.

Finally, we expect you to demo the game with a 2-5 minute video. Upload your video to a media sharing platform and include the link in your README.md documentation.

Live game demos


Requirements

To qualify as a sufficiently complex game, your assignment must follow a list of strict networking and algorithmic requirements. We identify three classes of requirements your game must follow: protocol, connection handling, and algorithmic considerations. Carefully examine the requirements below when designing your idea and ensure that your game specification satisfies all criteria.

Generally, real-time games are better suited for the list of requirements below compared to turn-based games. We recommend designing the first; however, turn-based games may be allowed under certain circumstances. Please consult a teaching assistant about the implications of this model.

We recognize that the list of requirements might be limiting in terms of the variety of games that would be considered complex enough. If you have a game idea that does not meet some of the presented requirements, but introduces other advanced networking features, consider consulting one of our teaching assistants and submitting a game plan.

Online games are a class of networking applications that prioritize latency over reliable transmission. To fulfill this, most online games utilize UDP as the transport layer protocol.

Several approaches to handling connections exist; however, for the purposes of this assignment, we define a clear pathway for you to follow. Your game implementation must follow all of the following requirements for handling connections.

  1. Transport Layer Protocol The game must utilize UDP as the transport layer protocol for handling connections.

  2. Peer-to-Peer Connections The game must be fully peer-to-peer, with the ability to recover from one of the clients disconnecting. Specifically, you are not allowed to use a central server for dispatching packets to connected players for synchronization.

  3. Local Area Discovery Your game should present an interface that scans the local area network for players ready to play and provide a method to invite the players to a party. We do not require your game to handle connections outside the LAN. Hint: It might be useful to look into netcat and port scanning.

  4. Party Size Your game design should facilitate more than two connections at the same time. Namely, party size3\text{party size} \ge 3 is a hard requirement for your game. You will need to choose a game idea that benefits from larger party sizes; games that are designed for two players only will not suffice. Counter-examples: Pong, chess, checkers, tic-tac-toe, and Connect 4.

VU-Campusnet LAN issues

The VU-Campusnet network will usually block UDP connections and place different devices on completely different LANs. Therefore, we recommend using a mobile hotspot to serve your different devices with a common LAN.

Note: If you decide to use a mobile hotspot, make sure you take the necessary precautions to prevent excessive bandwidth usage. Your game should not require access to the outside network, but rather just the LAN that the hotspot provides.


Game plan

Before getting started with your game, you are encouraged to consult a teaching assistant regarding your game idea; you do so through a game plan. A game plan is a PDF document describing the following:

  • A general description of your game idea.

  • The game mechanics and their network applicability.

  • A list of requirements the game will follow, usually larger than or equal to the requirements set provided.

  • An intuition of the implementation details in regard to the system requirements.

If you decide to include only a subset of the mandatory requirements, having your game plan approved by a teaching assistant is mandatory.

Last updated