Skip to content

Network Play Rewrite

friarsol edited this page Apr 10, 2022 · 1 revision

Why Rewrite Network Play?

The current implementation of Network Play relies on Java serialization/deserialization via Netty. While this does work, it is inefficient, transferring large amounts of unnecessary (duplicate) data. The transferring of duplicate data has two negatives:

  1. increased latency
  2. increased bandwidth

The increased latency is very noticeable throughout a network game. The increased bandwidth is a potential concern for mobile players, not everyone has an unlimited data plan.

Testing of the existing Network Play implementation has shown an individual Game transferring over 300MB of data.

The Rewrite

The rewrite will utilize protobuf and be approached in phases:

  1. Lobby
  2. Match
  3. Game

Lobby

The Lobby portion will handle:

  • Handshake
  • Player
    • Name
    • Avatar
  • Game Rules Selection
  • Deck Submission

The Handshake portion of the Lobby will be responsible for ensuring that it is a Forge client that is connecting and that the client is running a compatible Network Play implementation.

Match

Number of Games that comprise a Match, normally first player to win 2 Games. This is important, because it is not technically best of 3. For example if either of the first two games of a Match are a draw, it is entirely possible to play a fourth Game in a Match. (Need a judge ruling reference on this)

Game

This will be broken down in more detail, but the important bits to hand first are:

  • Phases
  • Passing of priority
  • Notification upon receipt of priority
Clone this wiki locally