What I know about Smash Online.
No one is immune to network fluctuations.
Some smash online details:
- Just to clarify for this post “Players” are the people in the ring, or actually playing the match.
- People waiting in line are sent data the same way as people in the spectator stands. consider them both “Spectators”.
- Online Smash players are in Lock-step. This means, the game cannot proceed without data from both players. When interruptions occur it has no choice but to stop and wait for the data to arrive.
- Delay based netcode is used:
It is the simplest and most common implementation for games using lockstep networking. If a remote player’s inputs are arriving late because they need to be sent over the network, delay-based strategies simply artificially delay the local player’s inputs by the same amount of time. Then, in theory, both inputs will “arrive” at the same time and can be executed on the same frame as expected.
- Smash checks for Round Time Trips mid match and adjusts the delay as needed. (In my opinion this is one of the worst things about Smash online)
- The Peer to Peer protocol Smash uses is called PIA.
- Match making is done with a system called NEX, this has no impact on the gameplay.
- ONLY the players are engaged in Lock-step, Spectators are not.
- A desync as a spectator does not wait to be corrected and you are simply disconnected from spectating.
- Tick rate, in this case, is how often the game will send out data. 60 hertz = 60 packets a second.
- A game with 3-4 players and/or spectators is 60 tick.
- A game with 5 or more players and/or spectators is 20 tick.
- Only data going OUT is affected by this tick rate change. Receiving and processing of packets always occurs at 60Hz
- Speed tests mean very little. Smash uses very little bandwidth.
- Your NAT type does not help with lag or cause lag. It is only the number of open ports available to your Switch.
- Ping to your OPPONENT along with stability are the most important.
- You can be disconnected from spectating because of your own connection OR the connection of a player.
- Your Region is going to have a strong impact on what ping you experience in Quickplay.
- Quick play/Arenas have some form of “Quality Check” but will only do something about it if the interruption is very long ~15 seconds.
How Sable-Detect detects lag and How it can help:
- It’s a packet sniffer, much like Wireshark. It monitors incoming peer to peer conversations between two or three switches. It Sniffs and filters it all for you!
- Each smash packet is numbered so the detector knows WHAT packet it should get next, and because smash runs at a static tick rate, it knows WHEN it should get it. It looks for unexpected gaps in packets, out of order packets and dropped packets from each player then reports/flags that player.(It has to be a one sided issue to flag it).
- With a TO’s judgement, and the detector’s report, TO’s can make concrete decisions in real time instead of just “seeing how it feels”.
- An example is this:
Both players claim lag, a TO/Streamer saw lag as a spectator, and the detector found that player 2 had packets drop and several packets came in late, it flagged them accordingly. All that happened while Player 1’s packets never messed up
How spectators impact a match:
- SPECTATORS CANNOT DIRECTLY CAUSE STUTTER OR PAUSING. We can use packet manipulation to create very specific types of lag. Such as, rapid changes in ping, dropping packets and forcing packets to be out of order. Do this in a lobby as a spectator as much as you would like and the players will not notice it, just you will be disconnected from spectating. This is repeatable.
- You can be disconnected from spectate, and as long as you stay in line or the stands, the players will still attempt to send the rest of the match data to you. (This is a waste of bandwidth on Nintendo’s Part)
- An impact spectators have on a match is the tick rate. Tick rate itself can not introduce stuttering or pausing. Tick rate cannot be adjusted mid match. Tick rate does play a factor in input delay.
- Another impact spectators have on a match is the bandwidth needed. If a player was close to having bandwidth issues with 1 or more spectators, Adding ONE extra spectator may push them over the edge and cause some instability. It is two parts, an already suspect connection and a slightly increased load. Ultimately, the lag will still be caused by the player not having the bandwidth to supply the data to the other consoles.
How you can check your own connection or improve it:
- If you want to check for issues on your own connection, a simple way is opening a command prompt and starting a looping ping.
- “ping 126.96.36.199 -t” will ping a google server in a loop. Look for requests that time out or requests with dramatic changes in “Time”.
- An Example of bad ping test. It not only times out, but also the ones that DO respond are very sporadic in “time”. You want stable time!
- USE AN ETHERNET ADAPTER. Amazon has a bunch of them and in many brands!
- The Wifi chip in the switch is not very reliable.
- If you can’t run a cable through your house or you are just too far from your router consider purchasing a “Powerline Ethernet Adapter”`. It will let you use your power sockets instead. (I’ve had great success with the tp-link ones)
- Tournaments can Region lock to help mitigate some connection issues. Distance plays a factor in all online games, but it’s particularly difficult to play delay based games even just two states away.
- Don’t trust the Switch’s wifi card.
- Tournament lobby sizes should be 4 or less
- Smash’s delay-based solutions have always failed to provide a good user experience. Player inputs are not consistent or responsive. Like most competitive games, smash thrives on muscle memory, reactions, and reflexes. When input delay is not stable, but instead fluctuates rapidly, players lose confidence in their inputs and find themselves frustrated with online.
- The only suggestions I have to fix this is, everyone get ethernet and tournaments should consider region locking.
- Currently, Sable-Detect has limited access. I am slowly rolling it out to tournament organizers and hosts. Reach out to me on Discord. Nerf_0#3248
- A public version is planned and on my roadmap.
- Big thanks to Deven3000, Mr.Smith, Humanbomb and Mj ♥