Smash Ultimate PC online multiplayer
Updated · Covers WindowSmash v0.2.0-alpha.1 and OpenSmash runtime-c2ca705
Choose the instructions for the project you and your friends installed. These are experimental Local Wireless connections over a network, not Nintendo Online. Start with a working offline launch on every PC and use matching port builds, game versions and content.
On this page
WindowSmash multiplayer
Each PC needs its own save and netplay_id.txt. Match the WindowSmash build, selected game version and DLC. Windows uses the launchers named below; native Linux uses the corresponding .sh scripts in the launcher table.
Create a room in the online lobby
- Open
Play SSBU.baton each Windows PC, or./play-ssbu.shon Linux. - Allow the game's firewall prompt if it appears and you intend to connect.
- Check the connection overlay with F1 on Windows.
- On the host, choose Local Wireless → Create a Room.
- On each guest, open Local Wireless → Rooms List.
- Select the host's room when the list refreshes.
- On the host, accept each friend's join request.
After connecting to the lobby, the host still needs to choose Create a Room. Use smash.recomps.wtf:39421 on every PC.
Keep friends in one lobby group
A lobby code filters who sees the same rooms. It is case-sensitive and is not a password.
- Open Esc → Online on each Windows/Linux build with the settings menu.
- Select Play online in a private lobby.
- Enter the same Lobby code on every PC.
- Choose Restart now on every PC.
- Create or join the in-game room with the lobby steps above.
For a build without that menu, close the game and edit the first non-comment line of online_server.txt in the project root to the same server followed by a space and your agreed code. For example, append our-friends after the server address. Save the file, relaunch, then create/join the Local Wireless room. Do not use an example code as a secret.
Direct connections through the lobby
The lobby automatically attempts a direct UDP path between players and relays traffic if it cannot connect directly. After joining, the overlay reports direct or relayed. A relayed connection can still work.
For relay-only play:
- Open Esc → Online.
- Turn off Direct connections.
- Restart the game.
Without that menu, close the game, put off in root online_direct.txt, then relaunch. This is separate from hosting a private address-based room below.
Host a private room by address
- Open
launchers\Host SSBU Netplay.baton the host PC. - Enter the host's player name at the first prompt.
- Enter the agreed room name at the next prompt.
- Press Enter at the UDP-port prompt to keep
39420, unless you deliberately use another port. - Allow incoming UDP for the chosen port when the firewall asks.
- Copy the host's own
address:portfrom the launcher window ornetplay_address.txt. - Send that address and the exact room name to your friends.
- Open Local Wireless → Create a Room in the game.
- Accept the guests' join requests.
The launcher tries UPnP to open the host port. If it fails, choose the reachable address/path in the table below. This private mode routes players through the host; it is not the lobby's automatic player-to-player direct mode.
Join that private room
- Open
launchers\Join SSBU Netplay.baton the guest PC. - Enter the host's
address:portat the first prompt. - Enter your player name.
- Enter the room name exactly as the host supplied it.
- Press F2 in the game to check that the relay is reached.
- Open Local Wireless → Rooms List.
- Select the host's room.
- Wait for the host to accept.
If asked for a Smash Tag, make your own. Guests do not need to change router forwarding.
| Where friends are | Address to give | Host's network check |
|---|---|---|
| Where friends areSame home network | Address to giveHost's local IP and port | Host's network checkPermit incoming UDP in the host firewall |
| Where friends areDifferent homes, UPnP succeeds | Address to givePublic address shown by the launcher | Host's network checkConfirm the host launcher stays running |
| Where friends areDifferent homes, manual forwarding | Address to giveHost's public IP and chosen port | Host's network checkForward that UDP port to the host; default 39420 |
| Where friends areSame VPN/virtual LAN | Address to giveHost's VPN IP and port | Host's network checkAll players join that network and permit its traffic |
| Where friends areCGNAT or double NAT prevents reaching the host | Address to giveUse the online lobby instead | Host's network checkA home-router forwarding rule may be insufficient |
WindowSmash Linux launchers
Run the appropriate command from its unpacked project/package folder, then use the same host, guest and in-game actions above.
| Linux source | Play | Private host | Private guest |
|---|---|---|---|
| Linux sourceNative source installer | Play./play-ssbu.sh |
Private hostbash launchers/host-ssbu-netplay.sh |
Private guestbash launchers/join-ssbu-netplay.sh |
| Linux sourcePackage exported from Windows | Play./run.sh |
Private hostbash host-netplay.sh |
Private guestbash join-netplay.sh |
Choose the launcher row for your installation. Mac cross-platform networking still needs testing.
OpenSmash online on Windows
On Windows, you can host and join through the lobby, LAN or a room code. Linux has no online mode. Match the OpenSmash source/runtime build, game version, fighters and mods on both ends. Testing so far used two instances on one PC; internet connections between PCs, real-router UPnP and STUN still need testing.
Choose a connection and display name
- Open
Play SSBU.bat. - Press F1 to open the Vulkan settings menu.
- Select Experimental.
- Set Your name to the name you want other players to see.
- Turn Online play on.
- Choose one of the connection modes below.
- Select Restart the game now after changing the mode.
If F1 is unavailable because the menu is disabled, close the game, set menu = on in the install location's config/graphics.ini, then relaunch. A build without the menu must use that file for the network settings in the table. An empty player name can use your Windows username.
| Task | Menu choice | Equivalent keys in config/graphics.ini |
|---|---|---|
| TaskPublic lobby | Menu choiceLobby server | Equivalent keys in config/graphics.inionline_mode = auto and online_server = opensmash-lobby.duckdns.org:39500 |
| TaskSame home network | Menu choiceSame network (LAN) | Equivalent keys in config/graphics.inionline_mode = lan |
| TaskHost a private direct room | Menu choiceHost a room | Equivalent keys in config/graphics.inionline_mode = host; default online_port = 39500 |
| TaskJoin the host's room code | Menu choiceJoin with a code | Equivalent keys in config/graphics.inionline_mode = join and online_join = <host's code> |
Change file settings with the game closed, then restart. The launcher's run.py clears inherited SSBU_* variables, so use config/graphics.ini for these network settings.
Create and join through the public lobby or LAN
- Select Lobby server on every PC, or Same network (LAN) on every PC in the same home network.
- Restart each game after changing that choice.
- On the host, open Local Wireless → Create Room.
- On each guest, open Local Wireless → Rooms List.
- Select the host's room.
- On the host, accept the wants to join! request.
- On both sides, select the stage and fighter.
- On the host, press L+R to start.
Allow the game's firewall request if prompted. LAN uses UDP 39501 for discovery plus a random UDP port for the session. LAN and lobby participants must use the same online_code in config/graphics.ini; the default is public.
Use a friends-only lobby group
- Close OpenSmash on each PC.
- Set
online_code = our-friendsin each install location'sconfig/graphics.ini, replacing the example with your agreed code. - Start each game in Lobby server mode.
- Use the create/join steps above.
This lobby-group code is different from the host-generated room code below. It filters the group and does not authenticate friends.
Host and join a private direct room
- On the host, choose F1 → Experimental → Host a room.
- Restart the host game.
- Copy its ROOM CODE, or read
ROOM CODEon an[online]line in its run log if the menu does not show it. - Send that code to the guest.
- On the guest, choose Join with a code.
- Enter the host's code.
- Restart the guest game.
- Create/join the in-game room using Local Wireless, as above.
The host tries UPnP for UDP 39500. If the router does not allow it, the host needs that UDP port forwarded to the PC. If connection still fails and the guest log prints your code, the host can put that code in online_peer in config/graphics.ini; both then restart. Otherwise return both sides to the public lobby, which attempts a direct connection and can relay traffic.
If a room does not appear
| Project and symptom | Action before trying again |
|---|---|
| Project and symptomWindowSmash overlay still connecting | Action before trying againCheck the host is running and the address, UDP port and host firewall rule match. |
| Project and symptomWindowSmash online but room absent | Action before trying againMatch game version, lobby address and case-sensitive code; make the host create the in-game room and wait for the list refresh. |
| Project and symptomWindowSmash private group differs | Action before trying againRe-enter the exact same private-room name on host and guests. |
| Project and symptomWindowSmash two PCs appear as one | Action before trying againClose one game's process, rename its netplay_id.txt, then relaunch; keep both saves. |
| Project and symptomOpenSmash room absent | Action before trying againMatch the build, game version, fighters/mods, mode and online_code; then create the in-game room. |
| Project and symptomOpenSmash host code will not connect | Action before trying againCheck the host's UDP port/UPnP path, try the logged peer-code fallback, or switch both sides to the lobby. |
| Project and symptomOpenSmash auto mode falls back to LAN | Action before trying againRecheck online_server; auto can fall back after five seconds without a reply. |
WindowSmash's run log is build/play.log. OpenSmash's Windows run logs are <install location>/logs/game_*.log. Keep names, IP addresses and local paths private when sharing logs; network troubleshooting expands diagnosis.
Limits, privacy and rollback
WindowSmash's current Quickplay is a separate service experiment: login, search and two players matching into a room worked on one PC. Full matches, larger rooms, results and GSP still need testing. It is not required for the friend-room steps above. Nintendo matchmaking, accounts and rankings are unavailable.
Neither protocol offers authentication or encryption. Lobby-group codes are not passwords. WindowSmash's automatic direct connections expose an IP address to connected room members; its private rooms go through their host. Use its relay-only steps above if that matters to you. For OpenSmash lobby relay-only play, close the game, set online_direct = off in config/graphics.ini, then relaunch.
OpenSmash Windows: optional rollback test build
Normal sessions use delay-based networking. Windows has a separate, opt-in rollback test build; it is still in development. The switch needs its matching ssbu_game_r1.dll and ssbu_native_rb.exe, and both players must use the same project version and game update with rollback enabled. Use source eac10a1 from the version table below to build this option.
- Close the game.
- Open
Install SSBU.bat. - Tick Rollback netcode for online play.
- Press Install or Resume to complete the extra build.
- Start the game with
Play SSBU.bat. - Open F1 → Experimental.
- Turn Online play on.
- Turn Rollback netcode on.
- Close the game.
- Start it again with
Play SSBU.bat. - Check for
Rollback netcode on: ssbu_native_rb.exe + ssbu_game_r1.dllin the launch output to confirm the test build was selected. - Have your friend make the same version and enablement checks before using the Local Wireless room steps above.
The extra compile takes about as long as the initial compile. If the switch is disabled and asks for the rollback build, return to the installer to build it. If either paired file is missing at launch, the launcher reports the missing build and starts the ordinary game instead. The launch output and F1's Rollback is active in this run message only describe the startup choice; use the match's log entries to check for a later fallback.
Check your first Local Wireless match, and repeat this check for later matches:
- Enter a Local Wireless match using the room steps above.
- Open that run's log through F1 → Log, or open its
<install location>/logs/game_*.logfile. - Search that match's entries, ignoring case, for
rollback OFF for this matchorran WITHOUT rollbackin the match report.
Either message means that match has fallen back to delay-based play because there was not enough memory for its saved rollback states. You can continue playing with delay-based networking. To stop using the test build instead:
- Leave the current match.
- Turn Rollback netcode off under F1 → Experimental.
- Close the game.
- Start it again with
Play SSBU.bat.
The recorded rollback test used two games on one PC with simulated 150 ms ping and loss. Real internet sessions remain experimental, and rewinding three or more frames can hitch. Keep the normal delay-based path when you do not want this optional Windows test.
Versions covered by this guide
| Project | Source version | Release status and game versions |
|---|---|---|
| ProjectWindowSmash | Source versiona9aac43 |
Release status and game versionsNo formal release; v0.2.0-alpha.1 is a prerelease. 11.0.0 and 13.0.5; 13.0.5 has limited match testing. Mac: opening/menus only. |
| ProjectOpenSmash-Ultimate | Source versioneac10a1 |
Release status and game versionsNo formal release; runtime-c2ca705 is a prerelease. 13.0.4 and 13.0.5 recognised; Linux tested with 13.0.4. |
WindowSmash’s main lobby is smash.recomps.wtf:39421; the older 39420 lobby does not provide the same Quickplay service.
