This page contains links to videos and packet captures from their respective games. While the overall results of these comparison experiments are inconclusive, observing how various fighting games tackle their netplay architecture is still an interesting endeavour.
Videos were captured using Open Broadcasting Software. The packets used for analysis were captured using Wireshark. To force unfavorable latency where normally unavailable, the tool Clumsy was used.
Clumsy is an open-source tool that uses the WinDivert library to interact with packets. Clumsy can be found here. A demo of Clumsy's interface can be seen in the following GIF.
The primary features used in the following tests were forcing lag and dropping packets. Attempting to use the other features resulted in undesired game crashes.
Equivalents of Clumsy are readily available for other operating systems as well. For similar functionality in OSX, you would want to use Network Link Conditioner. For Linux, netem would be the tool of choice.
Skullgirls uses peer-to-peer for all of its netplay functionality and uses UDP to transmit all packets. This is partially due to the usage of the GGPO middleware for part of its network stack. When playing online, players can participate using Tournament Mode, Local Only (for LAN tournaments/games), Quick Match (random matches against other online players) or Lobby Play. For the purposes of this project, Lobby Play was setup with a peer in Australia for stress testing Skullgirls' usage of GGPO.
Attempts at matches with more than 20% packet loss were made, but the game would crash either on attempts to load or during the game. Attempts above 400ms also resulted in similar crashes.
Attempts at analysing Street Fighter V's traffic were not as successful. Information regarding Street Fighter V's server setup were gathered but analysis from the actual matches is unreliable.
On starting the game, the following server information is sent to the Steam client as a JSON message.
Street Fighter V uses a combination of server/client architecture alongside peer-to-peer in lobby play. For authentication purposes, Capcom uses a network they call the Capcom Fighter Network (CFN). Players that wish to participate in online play register their desired username and country. This lets players mark "favorite" players that they can send quick lobby requests to, and allows for searching of players using various criteria. The CFN player list is infrequently updated - while unsure on the exact refresh period, the playing partner selected for tests was unable to find my CFN ID when searched for. However, no restrictions were on the new player for searching for players and inviting players to lobbies. Since gameplay was conducted over the course of an hour, this suggests the list of players registered in Capcom's Fighter Network could be refreshed only once or twice per day.
To keep consistent with the Skullgirls tests, only lobby play was tested. The game also offers matched casual play and matched rank play. While idling in the game (whether in a lobby or on the main menu) the following heatmap can be seen in the background.
This heatmap is periodically updated from Capcom's fileserver through the following HTTP request:
While sitting in the lobby with a peer, the following datagrams are sent back and forth directly between peers.
The following videos highlight some of the difficulties encountered when analyzing Street Fighter V's gameplay. All videos were conducted with a peer in Seattle, minimizing the distance between players. Unfortunately audio was not captured during testing, but any latency/packet loss issues are noticeable without audio.
This game was conducted with minimal background traffic and appears to be smooth.
This game was conducted while in a Discord server with the opposing player. The packet drop rate was highly noticeable starting from the menus.
Same conditions as previous game, packet drops were still noticeable but not as severe as the previous match.
The unreliable gameplay seen in the last two clips may have been a result of a variety of factors. We were unable to test many of our initial thoughts on fixes, as the Capcom Fighter Network had not updated with my ID yet. This prevented us from switching lobby hosts to see if we could "restart" from a more reliable point. Furthermore, as seen from the heatmap above there was "noisy" traffic occuring in the background of the game by default.