Repository navigation
Releases: Confetti3/SF4-Ember-Netplay
Release list
SF4 Ember Netplay v1.1.1
SF4 Ember Netplay v1.1.1
v1.1.1 fixes keyboard-only players being sent to Assign Controller, explains two launch failures caused by administrator settings, and adds sets up to first to 10. Fighter and costume choices now follow DLC ownership. Public rooms also use less of the server.
Experimental unofficial rollback netplay for Ultra Street Fighter IV, based on sf4e by Anthony Danducci and contributors. Preserve upstream attribution and bundled licenses.
Updating
- Everyone in a room needs 1.1.1. 1.1.0 and 1.1.1 cannot join each other's rooms.
- From 1.1.0, use the updater. Ember offers 1.1.1 in game. You can also download the zip from the release page and extract it over your Ember folder. Your settings carry over.
- New installs can use setup.exe. The installer is also available on the release page.
Changes since v1.1.0
- Keyboard-only players no longer get stuck in Assign Controller. With no controller connected, the first key press in Ember could open Assign Controller, which a keyboard cannot complete. This is fixed. Reported and diagnosed by FRaccie in #22.
- The launcher explains "Could not start the game (Win32 740)". This happens when SSFIV.exe is set to run as administrator. The launcher now tells you to clear "Run this program as an administrator" in SSFIV.exe's Compatibility settings (#21).
- The launcher explains "Steam must be running" when Steam runs as administrator. When this causes the game to close, the launcher tells you to restart Steam normally. Thanks to OOPMan for finding this cause (#18). The original report in #18 had no administrator settings; if that still happens on 1.1.1, please reopen the issue.
- Sets of first to 1 through 10. Set length now offers every first-to value from 1 through 10, equivalent to best of 1, 3, 5 and so on through 19. Tournament matches offer the same range.
- DLC choices follow what you own. Fighter select previously offered DLC costumes based on installed packs. It now offers only the costumes your Steam account owns. Separately sold fighters you do not own keep their roster cards but cannot be picked. A saved pick of one falls back to Ryu. Other players' picks are never checked against what you own.
- Public rooms use less of the server. The room host and its networking helper now sleep while a room is idle. The server now holds up to 30 public rooms, up from 20.
Known issues
- Spectators cannot stop watching until the game ends (#23). FRaccie's proposed fix is being looked at.
- A message sent just as its sender leaves can be missed. Messages already received stay in Chat.
- A two-player private room cannot survive its host's game crashing. The remaining player still has to open a new room. Leaving normally is fine.
- Browser links need a fallback on Linux and Steam Deck. Copy the link and paste it into Ember instead of using Open in Ember.
Report problems in Discord with sf4e.log and launcher.log from %APPDATA%\sf4e\logs, the time it happened and what you were doing. For installer or update problems, include %TEMP%\sf4-netplay-update.log too.
Testing
The full build passed all 106 automated tests. The networking helper passed 290 tests, and all server (bridge) tests passed. Code review went through four rounds before approval.
In game on one PC, using only a keyboard, a test build of the same code opened a public room on the 1.1.1 server; the room applied its rules to all four tables and closed cleanly when left.
A match between two PCs has not yet been tested on this exact build.
SF4 Ember Netplay v1.1.0
SF4 Ember Netplay v1.1.0
v1.1.0 adds public rooms, tournament matches, short room links and automatic input delay. Rooms gain first-to sets with queue rotation, a chat conversation and a new match HUD layout, and Ember now has a Windows installer, an update channel for pre-releases and Play in the background for streamers.
Experimental unofficial netplay for Ultra Street Fighter IV, based on sf4e by Anthony Danducci and contributors. Preserve upstream attribution and bundled licenses.
Updating
- Everyone in a room needs 1.1.0. 1.0.x and 1.1.0 cannot join each other's rooms, and the release candidates cannot join 1.1.0 rooms either. Public rooms and tournaments need an Ember ID.
- From v1.0.2 or 1.1.0-rc2, use the updater. Ember offers 1.1.0 in game. You can also download the zip below and extract it over your Ember folder. Your settings carry over; Input delay moves to Auto as described below.
- From 1.1.0-rc1, install it by hand. The rc1 updater does not see this release. Extract the zip over your rc1 folder.
- New installs can use setup.exe, contributed by FRaccie. The installer came from FRaccie's pull request #24.
sf4-ember-netplay-1.1.0-setup.exeinstalls Ember for your Windows account into an empty folder, with a Start menu entry and an uninstaller. It also installs a newer Visual C++ runtime when yours is too old, which asks for administrator rights. To update an existing folder, use the updater or the zip.
Public rooms
- Find players from the room list. Open Online play > Public rooms and choose Set up public rooms to get started. Room cards show the host, players, free seats and lock status, and the list refreshes on its own. Select a room to see its rules and how long it has been open.
- Join a nearby room quickly. Quick join looks for an open room near you with a free seat. Show filters the list to All rooms, Near me or Free seats.
- Choose the rules before opening a room. Create room lets you set Visibility to Public and choose the room's name, capacity and table rules. Public rooms default to First to 2 and Winner stays, and your rules apply to all four tables.
- The room outlives its creator. The oldest remaining member takes over as host. A public room closes when its last member leaves. The server holds up to 20 public rooms at once.
Tournaments and Ember ID
- An Ember ID that stays with you. Open Ember ID from Home to create yours, connect accounts and find tournament matches. Backup and restore saves your ID and carries it to another PC.
- Connect Discord for tournament sites. Connect Discord links your Discord account to your Ember ID so sites such as BluMint can find you.
- Open your assigned match and play. Tournament matches lists your matches, and Paste match link accepts a link from an organizer or tournament site. Choose Play to enter the match room and ready before each game. Results are reported automatically and the set ends when a player reaches the required wins.
Rooms and matches
- Play a set, then rotate. Set length offers First to 1, 2, 3 and 5. After a set offers Winner stays, Loser stays or Both rotate; outgoing fighters go to the back of the queue and waiting players take their seats.
- Follow the score and streak. Table cards and the match HUD show the score, and consecutive set wins appear under the winner's name.
- Check your Ultra after an opponent changes fighter. If you are ready and your opponent changes fighter, Ember takes back your Ready and names the new fighter on the table card.
- See who a start is waiting for. A start held for a spectator names them and counts down for up to 10 seconds; either fighter can choose Cancel the start.
- See when someone is idle. Members who have not readied show an idle time after a minute without activity.
Input delay
- Auto input delay, contributed by fabeloper. Auto came from fabeloper's pull request #20. It checks the connection when a new opponent sits down and picks 1 to 3 frames; both fighters use the higher of their two delays.
- A bounded wait before Ready. Auto retries a failed check once and falls back to 2 frames after about 12 seconds. Rematches and fighter changes keep the measurement, and delay never changes during a fight.
- Existing profiles move to Auto. To keep a fixed delay, press Right on Input delay to leave Auto, then choose 1 to 10 frames. 0 frames is no longer offered, and a saved 0 becomes 1.
Chat, links and languages
- Read the conversation in one place. Chat shows a scrolling conversation with joins, departures, host changes and results. The message box is ready when you open Chat, and an unread count appears while you are elsewhere.
- Share a short private-room link. Copy short link gives a link or short code another player can paste into Join room. Invitations now last about a week while the room stays open, replacing 1.0.2's link length choice, and short links follow the room when its host changes.
- Open public rooms and matches from a link. Copy room link shares a public room through embernetplay.link/r, and the room and tournament pages offer Open in Ember. A link that arrives while you are busy waits instead of pulling you out of your match.
- Room links from community chat. Where the community's bot is available, Discord's /room command and Twitch's !room (for the broadcaster or a moderator) open a public room and post its link.
- Translations. The new menus and messages are translated across all 14 languages.
Controllers, HUD and streaming
- Launch through Steam with Steam Input. Ember accepts being started through the game's Steam launch options, so Steam Input controllers reach the game.
- A familiar fighter grid. Fighter select and Choose your main follow USFIV's character-select order, and Ultra choices have I, II and W badges with written notation.
- A new default match HUD. Split puts each player's name over the game's PLAYER label and the score, Ping, Rollback, Delay and spectator count in a small panel. Match HUD layout still offers Ember strip, and Match HUD position and Edge spacing place the panel.
- Name height. If you changed the game's own HUD position option, the names can miss the PLAYER labels. Interface > Name height moves them up or down to match. If moving the names up leaves too little room for a readable panel at the top, the panel moves to the bottom corner on its side.
- Play in the background. Player > Play in the background keeps the game's sound and your controller working while another window, such as OBS, is in front. The keyboard and Ember's menus still need the game window, and fullscreen still minimizes when it loses focus. It is off by default.
- The HUD follows the game's resolution. When the game's resolution differs from its window, Ember's overlay now lays itself out at the game's resolution, and the mouse follows.
Updates and installing
- Choose your update channel, contributed by FRaccie. The update channel came from FRaccie's pull request #25 and going back to Stable from pull request #26. The updater window shows Update channel and Installed version. Stable offers finished releases; Pre-release also offers release candidates. Switching a pre-release installation back to Stable offers the latest finished release as the way back.
- Uninstalling keeps your files. The uninstaller removes only the files Ember installed, plus the updater's backups. Replays, notes and art you added yourself stay.
- Updates check package files more carefully. An update stops with a message when the installed file list cannot be read, instead of guessing which files are Ember's.
Fixes
- Connection checks no longer depend on matching PC clocks. A difference between the players' clocks could make a check time out and interrupt the room connection.
- Readying or watching during a check no longer breaks the room connection. An outdated check now ends without disconnecting anyone.
- More reliable room recovery over relays. After a player disappeared, the remaining room could repeatedly stop responding. The remaining players now keep communicating while the missing player is removed.
- Fresh public rooms connect more promptly, particularly when a relay is needed.
- Tournament results are not silently lost. A result that cannot be saved is retried; if it still fails, the match stops with a message.
- Steam installations are found more reliably when Steam uses a differently named folder.
- Unexpected exits are reported more clearly. The launcher records fatal game exits that previously left no crash record.
- Akuma's Raging Demon input now shows forward instead of back.
Known issues
- A message sent just as its sender leaves can be missed. Messages already received stay in Chat.
- A two-player private room cannot survive its host's game crashing. The remaining player still has to open a new room. Leaving normally is fine.
- Auto input delay still needs long-distance testing.
- Browser links need a fallback on Linux and Steam Deck. Copy the link and paste it into Ember instead of using Open in Ember.
Report problems in Discord with sf4e.log and launcher.log from %APPDATA%\sf4e\logs, the time it happened and what you were doing. For installer or update problems, include %TEMP%\sf4-netplay-update.log too.
Testing
1.1.0 is 1.1.0-rc2, which testers have been playing, plus Name height. The full build passed all 105 automated tests, including new checks that Name height moves the names by the chosen amount and that the HUD panel stays readable, on ...
SF4 Ember Netplay v1.1.0-rc2
SF4 Ember Netplay v1.1.0-rc2
The second 1.1.0 release candidate. It adds a Windows installer, an update channel for pre-releases, and Play in the background for streamers, and it fixes where the match HUD's names sit on some stream setups. This is a pre-release for testing; v1.0.2 stays the recommended version until 1.1.0 is final. Everything in the 1.1.0-rc1 notes still applies.
Experimental unofficial netplay for Ultra Street Fighter IV, based on sf4e by Anthony Danducci and contributors. Preserve upstream attribution and bundled licenses.
Updating
- From 1.1.0-rc1, install this one by hand. The rc1 updater only offers final releases. Download the zip below and extract it over your rc1 folder, or into a new one, and start Launcher.exe. Your settings carry over.
- Later candidates arrive through the updater. A pre-release installation now uses the Pre-release update channel, so the next candidate and the final 1.1.0 will be offered in game.
- Public rooms are listed per release candidate. rc2 players see the public rooms opened from rc2. Private rooms work between rc1 and rc2, but please move everyone to rc2.
New in rc2
- A Windows installer, contributed by FRaccie.
sf4-ember-netplay-1.1.0-rc2-setup.exeinstalls Ember for your Windows account into an empty folder of your choice, with a Start menu entry and an uninstaller. If your Visual C++ runtime is older than the one Ember needs, it installs that too, which asks for administrator rights. To update an existing Ember folder, keep using the zip or the updater; the installer refuses a folder that already has files in it. - Choose your update channel, contributed by FRaccie. The updater window shows Update channel and Installed version. Stable offers finished releases only. Pre-release also offers release candidates such as this one. Switching a pre-release installation back to Stable offers v1.0.2 as the way back, installed the same way as an update.
- Uninstalling keeps your files. The uninstaller removes only the files Ember installed, plus the updater's backups. Your replays, notes and any art you added yourself stay in the folder.
- Play in the background. Player > Play in the background keeps the game's sound and your controller working while another window, such as OBS, is in front. The keyboard and Ember's menus still need the game window. Use windowed mode; fullscreen still minimizes when it loses focus. It is off by default.
Fixes
- Match HUD names line up on stream setups. When the game's resolution differed from its window (a 16:10 desktop, a borderless window tool, a window the screen clips), the split HUD's names sat on the life bars instead of over the PLAYER labels. Ember now lays out its overlay at the game's own resolution, and the mouse follows.
- More public rooms. The public room server now holds 10 rooms at once instead of 4. This change is already live.
- Updates check package files more carefully. An update now stops with a message when the installed file list cannot be read, instead of guessing which files are Ember's.
Known issues
Still the same as rc1:
- A message sent just as its sender leaves can be missed.
- A two-player private room cannot survive its host's game crashing. The remaining player still has to open a new room.
- Auto input delay still needs long-distance testing.
- Browser links need a fallback on Linux and Steam Deck. Copy the link and paste it into Ember instead.
What to test
- Install with setup.exe. On a PC without Ember, run the installer, choose an empty folder and launch from the Start menu. Then uninstall it and check that only Ember's files are gone.
- Use the update channel. In the updater window, check that Installed version reads 1.1.0-rc2 and Update channel reads Pre-release. Switch to Stable and check that v1.0.2 is offered as the way back. Only install it if you want to go back.
- Stream with Play in the background. Turn it on, play a match in windowed mode and click OBS or another window. The game's sound and your controller should keep working; Ember's menus should wait for the game window.
- Check the HUD on your setup. If you stream or use a borderless window tool, check that the split HUD's names sit over the PLAYER labels. Your
sf4e.lognow has a line startingOverlay: game draws at; please include it if they do not. - Everything from the rc1 list. Public rooms, Auto input delay, tournaments, chat and controllers all still need games between real players.
Report problems in Discord with sf4e.log and launcher.log from %APPDATA%\sf4e\logs. For installer or update problems, include %TEMP%\sf4-netplay-update.log too.
Testing
The full build passed all 105 automated tests. The installer test installed this setup.exe into an empty folder, checked it, and uninstalled it while keeping player files. The network room tests were not run again: nothing since rc1 changes room or match code.
Play in the background was tried in game behind OBS. This exact build has not yet been tested between two PCs over the internet.
SF4 Ember Netplay v1.1.0-rc1
SF4 Ember Netplay v1.1.0-rc1
v1.1.0 adds public rooms, tournament matches, short room links and automatic input delay. Rooms also gain first-to sets with queue rotation, expanded chat and a new match HUD layout. This is a pre-release for testing; v1.0.2 stays the recommended version until 1.1.0 is final.
Experimental unofficial netplay for Ultra Street Fighter IV, based on sf4e by Anthony Danducci and contributors. Preserve upstream attribution and bundled licenses.
New in 1.1.0
Updating and compatibility
- Everyone in a room needs 1.1.0-rc1. 1.0.x and 1.1.0-rc1 cannot join each other's rooms. Public rooms and tournaments need an Ember ID and 1.1.0, with everyone using this same release candidate during testing.
- Install it by hand. The in-game updater only offers final releases, so it will not offer this candidate. Download the zip below, extract it into a new folder or over your existing Ember folder, and start Launcher.exe. Your settings carry over from 1.0.x either way; Input delay moves to Auto as described below.
Public rooms
- Find players from the room list. Open Online play > Public rooms and choose Set up public rooms to get started. Room cards show the host, players, rules, available space, lock status and how long the room has been open, and the list refreshes automatically.
- Join a nearby room quickly. Quick join looks for an open room near you with a free seat. Use Show to choose All rooms, Near me or Free seats.
- Choose the rules before opening a room. Create room lets you set Visibility to Public and choose the room's name, capacity and table rules. Public rooms default to First to 2 and Winner stays, and your chosen rules apply to all four tables.
- Keep the room going when its creator leaves. The oldest remaining member takes over as host. A public room closes when its last member leaves.
Tournaments and Ember ID
- An Ember ID that stays with you. Open Ember ID from Home to create yours, connect accounts and find tournament matches. Backup and restore lets you save your ID and carry it to another PC.
- Connect Discord for tournament sites. Connect Discord links your Discord account to your Ember ID so sites such as BluMint can find you. A tournament site's setup link can guide you through this from Ember.
- Open your assigned match and play. Tournament matches lists your matches, and Paste match link accepts a link from an organizer or tournament site. Choose Play to enter the match room, then ready before each game; results are reported automatically and the set ends when a player reaches the required wins.
- Support for organized events. Tournament support includes single elimination, double elimination and round robin, plus BluMint match links and result reporting. Availability depends on the organizer or tournament site.
Rooms and matches
- Play a set, then rotate. Set length offers First to 1, First to 2, First to 3 and First to 5. After a set offers Winner stays, Loser stays or Both rotate, with outgoing fighters moving to the back of the queue and waiting players taking their places.
- Follow the score and streak. Table cards and the match HUD show the game score, and consecutive set wins appear under the winner's name. No set length keeps the same pair playing until someone leaves, and watching alone never puts you in the queue.
- Check your Ultra after an opponent changes fighter. If you are already ready and your opponent changes their previously shown fighter, Ember takes back your Ready and names the new fighter on the table card. Check your Ultra Combo, then choose Ready up again.
- See who a start is waiting for. A start held for a locked-in spectator now names the spectator and shows a countdown of up to 10 seconds. The spectator also sees that the game is waiting for them, and either fighter can choose Cancel the start.
- See when someone is idle. Member cards and seated players who have not readied show an idle time after a minute without activity.
Input delay
- Auto input delay, contributed by fabeloper. Auto came from fabeloper's pull request #20. It checks the connection when a new opponent sits down and chooses between 1 and 3 frames; both fighters use the higher of their two delays.
- A bounded wait before Ready. Auto retries a failed check once and waits about 12 seconds at most before falling back to 2 frames. Rematches and fighter changes keep the measurement, a new opponent gets a new check, and delay never changes during a fight.
- Existing profiles move to Auto. To keep a fixed delay, step the Input delay value off Auto with Left or Right and choose from 1 to 10 frames. Auto sits one step below 1; 0 frames is no longer offered, and a saved 0 becomes 1.
Chat
- Read the conversation in one place. Chat now shows a scrolling conversation with room joins, departures, host changes and game or set results. Messages you already received remain visible after their sender leaves.
- Type and press Enter. The message box is ready when you open Chat, and your draft stays until your message appears in the conversation. An unread count appears while you are elsewhere, and opening Chat clears it.
Controllers, fighter selection and HUD
- Launch through Steam with Steam Input. Ember now accepts being started through the game's Steam launch options, allowing Steam Input controllers to reach the game.
- A familiar fighter grid. Fighter select and Choose your main now follow USFIV's character-select order. Ultra choices have I, II and W badges, and their inputs include written notation beneath the arrows.
- A new default match HUD. Split places player names over the game's PLAYER labels and puts the score, Ping, Rollback, Delay and spectator count in a separate panel. Match HUD layout still offers Ember strip.
- Put the HUD where you want it. Match HUD position offers Bottom center, Bottom left, Bottom right, Top left and Top right. Edge spacing adjusts its distance from the selected edge, and the top positions fit above the names on smaller screens.
Website, links and languages
- Share a short private-room link. Copy short link gives you a link or short code that another player can paste into Join room. Copy invitation still provides the full invitation, copied invitations now last about a week while the room stays open, and short links follow the room when its host changes.
- Open public rooms and matches from a link. Copy room link shares a public room through embernetplay.link/r. Room and tournament pages offer Open in Ember and a copy-and-paste option; a link received while you are busy waits instead of pulling you out of your room or match.
- Room links from community chat. Where the community's bot is available, Discord's /room command opens a public room and posts its link. On Twitch, the broadcaster or a moderator can use !room to do the same.
- Updated website and translations. embernetplay.link has a new home page and clearer room, match and getting-started pages. The new menus and messages are translated across the 14 supported languages.
Fixes
- Connection checks no longer depend on matching PC clocks. A difference between the players' clocks could make a check time out and interrupt the room connection. Checks now measure their wait separately on each PC.
- Readying or watching during a check no longer breaks the room connection. An opponent pressing Ready or a spectator choosing Watch at the wrong moment could interrupt the check and leave room controls unavailable. An outdated check now ends without disconnecting that player from the room.
- More reliable room recovery over relays. After a player disappeared, the remaining room could repeatedly stop responding or report a disconnect as a game ended. Recovery now lets the remaining players continue communicating while the missing player is being removed.
- Fresh public rooms connect more promptly. Joining a newly opened room could spend several extra seconds waiting before the connection continued, particularly when a relay was needed.
- Created public-room rules reach every table. Hiding Ember immediately after creating a room could leave some tables on the default rules. The chosen rules now continue applying while the menu is hidden, without later undoing the host's own edits.
- Shared links survive normal host changes. A short private-room link could stop leading to the room after the person who copied it left. The remaining room now keeps that link current.
- Tournament results are not silently lost. A result that could not be saved is retried before another game is prepared. If it still cannot be saved, the match stops with a message instead of continuing as though the result was recorded.
- Steam installations are found more reliably. The launcher now finds USFIV when Steam uses an installation folder with a different name.
- Unexpected exits are reported more clearly. Some fatal game exits previously left no crash record; the launcher now identifies them as crashes and records more information. Update failures also record a clearer reason when extraction cannot start.
- Akuma's Ultra instructions are corrected. The Raging Demon input now shows forward instead of back.
Known issues
- A message sent just as its sender leaves can be missed. Messages already received stay in Chat, but one sent at the same instant as a departure may never reach the other players.
- A two-player private room cannot survive its host's game crashing. The remaining player still has to open a new room. This is different from the host choosing Leave room normally.
- Auto still needs long-distance testing. It has not been tested between players on very distant connections.
- **Browser links need a fallback on Linu...
SF4 Ember Netplay v1.0.2
SF4 Ember Netplay v1.0.2
v1.0.2 fixes rooms that stopped responding for good after a player dropped, joins that got stuck after someone left, and a crash during rollback.
Experimental unofficial netplay for Ultra Street Fighter IV, based on sf4e by Anthony Danducci and contributors. Preserve upstream attribution and bundled licenses.
Changes since v1.0.1
- A room no longer freezes when a player drops. When a room was down to two players and one of them crashed or lost their connection, the other could no longer change anything in the room, and nobody could join or rejoin it. The only way out was to close the room and open a new one. Long-running rooms hit this the first time someone dropped while only two people were left. The room now keeps working, removes the player who dropped after a short wait, and lets players join again. If the room's host leaves normally, the other player takes over the room as before.
- Joining right after someone left no longer hangs. A player who joined or rejoined a room shortly after another player left or dropped could get stuck partway into the room and never finish joining. They now join normally.
- Fewer crashes during matches. A rollback could write past the end of one of the game's effect objects and corrupt the heap, which crashed the game a little later. This is the same fix that was planned for 1.1.0.
- "Until the room closes" links work for everyone. A link set to last until the room closes was refused as broken by players whose PC clock ran even a second behind the host's. Clocks up to a day apart are now accepted.
One case is unchanged: if the host's game crashes while only two players are in the room, the other player still has to open a new room.
Everyone in a room needs v1.0.2. v1.0.1 and v1.0.2 cannot join each other's rooms, as with any other package change.
Testing
The full build passed all 88 automated tests. The room recovery tests passed every scenario directly and through relays, including three new ones: a room that shrinks to two and then loses a player, the same with the player dropping during the shrink, and the host of a room of two leaving. The room, spectator and late-spectator tests passed. These fixes have not yet had a two-PC test.
SF4 Ember Netplay v1.0.1
SF4 Ember Netplay v1.0.1
v1.0.1 lets you choose how long room links last. In v1.0.0 a copied link stopped working within an hour, even while the room was still open.
Experimental unofficial netplay for Ultra Street Fighter IV, based on sf4e by Anthony Danducci and contributors. Preserve upstream attribution and bundled licenses.
Changes since v1.0.0
- Choose how long invite links last. Create room and Settings > Gameplay defaults have a new Invite links last row: 1, 3, 6 or 12 hours, 1, 3, 7 or 30 days, or Until the room closes. The default is now 1 day instead of 1 hour.
- Links keep their full time while the room is open. Ember renews the link it shows as the room stays open, so a link you copy lasts close to the time you chose, not as little as half of it.
- The setting covers the links you copy. Hosts and guests each choose their own. A guest's copy is renewed to the guest's setting when that is longer than the link they joined with; a shorter setting never cuts a link short.
Everyone in a room needs v1.0.1. v1.0.0 and v1.0.1 cannot join each other's rooms, as with any other package change.
Testing
The full build passed all 87 automated tests. The new setting has not yet had a two-PC test.
SF4 Ember Netplay v1.0.0
SF4 Ember Netplay v1.0.0
v1.0.0 adds controller and keyboard table controls, spectator lock-in and fixes for saved replays, rematches, rejoining rooms and long-session crashes.
Experimental unofficial netplay for Ultra Street Fighter IV, based on sf4e by Anthony Danducci and contributors. Preserve upstream attribution and bundled licenses.
Changes since v0.9.9
Rooms and matches
- Choose seats, queue or watch from a table card. Table options brings together Ready, fighter, Ultra, appearance, fighter options, P1's stage, rules, input delay, Check connection and Leave seat.
- Spectators can lock in to watch consecutive games. Choose Lock in to watch in Table options. The next start waits up to 10 seconds for a locked-in spectator still leaving the previous game. Either fighter can cancel by taking Ready back. Playback can also catch up when it falls behind.
- Leaving your seat cancels a pending Ready. You no longer see "Your Ready did not go through" after leaving.
- Connection checks no longer block later rematches. Your result also stays available when the other player runs a check.
- New online replays track rollback correctly. Replay recording now rewinds with the match, so corrected frames are not recorded twice. Existing damaged replays stay broken.
- Fixed a cause of long-session and rematch crashes. Updating a connection message during a match could crash the game.
Menus and controls
- Pad and keyboard shortcuts follow the room's controls. Xbox pad: A on your seat toggles Ready, B leaves your seat or queue, X opens Fighter, Y opens Table options and View opens Chat. Keyboard: F opens Fighter, T opens Table options, C opens Chat, Escape goes back and Delete leaves your seat or queue. Leaving asks first if you would lose a set score or give the seat to someone queued.
- Navigation stays focused. Prompts follow the last keyboard or pad input, and DirectInput devices retain mapped LP/LK prompts. A resting mouse pointer no longer takes the highlight away. Back from Home hides Ember without leaving the room. Keyboard and mouse input now reaches the menus in order.
- Change fighter, Ultra, costume and color from your seat. Fighter select starts at your current fighter and leads to Ultra cards with their inputs. Appearance leads through costume and color cards back to the table. Left and Right change Ultra or color directly on their rows.
- Fighter options, stage and rules are on the table page. Change personal action, win quote, handicap and edition there. Only P1 changes the stage. The host edits rounds, round time and Edition Select; applying changed rules clears Ready.
- Input delay has one row. Select applies the recommendation; Left and Right choose 0 to 10 frames. Leave room and Replace room remain on the room board.
Spectators, invitations and room recovery
- Failed watching no longer silently skips later games. You stay set to watch, but a failed stream or setup clears lock-in so you can choose it again. Spectators return sooner after a finished game, and stream-loss and opponent-disconnect messages remain visible.
- Leaving and rejoining handle more room failures. Rejoining after a crash no longer loops or leaves a ghost seat. A player dropping while someone else leaves no longer freezes the room. Leaving the queue stops automatic watching unless you choose to watch.
- Guests can copy the room invitation. Refused invitations explain whether they expired, came from a different package or were pasted incompletely.
- Rooms stay joinable after an hour. The invitation every member shows is renewed while the room is open, so new copies no longer expire just because the room has been open for an hour. A copied invitation still expires within an hour.
- A former host can rejoin. After handing host to another player and leaving, ask someone still in the room to copy the invitation again. A copy taken before you left points at your own game. Ember now explains this instead of reporting an unreachable host.
Stages, languages and appearance
- P1 can choose the Random stage pool. Open Fighter select > Stage > Random stage pool to include or skip stages. The pool is saved, and at least one stage must remain included.
- All USF4 interface languages plus Latin American Spanish are available. Automatic follows the game's language, with a Windows fallback when the game uses English. Translations are drafts and still need native-speaker review.
- Every costume color has a preview. Alternate costumes show all their colors, and the preview images take less package space. Japanese, Korean and Chinese names and chat display supported characters.
Connection details, training and sound
- The Online screen shows relay region and network type. Connection checks explain relay use and why a direct connection likely failed. Join and room-creation messages distinguish relay trouble, an unreachable host and a dropping link. Player cards and the match HUD show wired or Wi-Fi only when identified, otherwise Connection unknown.
- The training frame meter sits above the super meters. The F6 Training controls prompt is clickable, and unavailable measurements show a reason.
- The announcer calls when your opponent readies first. Settings > Interface has an on/off setting, volume and Test challenger call. The game's voice volume still applies. The call plays once per Ready, with a short wait before another call after unreadying and readying again.
Stability, updates and crash reports
- Rollback restores sound and sprite animations correctly. A failed restore returns you to the room instead of closing the game. If the HUD cannot be restored exactly, the match ends with a message.
- Rollback memory is checked and old saves are freed without touching the game. Detected problems end the match with a message. These changes followed a heap corruption crash (
0xC0000374) while an old rollback save was freed. The original cause is still unknown, so this is not a confirmed fix for that crash. Each match ends with aSaveSlots [battle_close_exit]: guardsline insf4e.log. - Fixed a rare startup crash when the game window lost focus while loading.
- Fixed a cause of crashes during display resets. Alt+Tab in fullscreen or a resolution change could crash the game while Ember was drawing its menus.
- Replay recording stops if a very long round reaches the recording limit.
- The game starts even if
sf4e.logcannot be opened. - Double-clicking
Updater.exeopens Updates. A found update appears first with its version; Select installs it. The in-game Exit and open updater row explains the next step. preflight.cmdis an optional extraction check. It changes nothing, shows PASSED or FAILED with the next step, and waits for a key.- The launcher saves crash dumps and gives clearer reporting instructions. It keeps five regular dumps and two larger heap dumps, which can be several hundred MB.
launcher.logandsf4e.logidentify their build at startup.
Testing
The full build passed all 87 automated tests. The single-table room fixture passed after the last two fixes. A two-PC rematch series of 17 matches over 48 minutes ran without a crash and recovered from an 8 second drop.
Thanks to everyone who tested the 1.0.0 rc builds.
Compatibility
Everyone in a room needs v1.0.0, including spectators. v0.9.9 and the 1.0.0 rc builds cannot join a v1.0.0 room.
On Linux (Proton or Wine), preflight.cmd cannot check the files because Wine's PowerShell does nothing, and the in-app updater cannot extract a package. Extract the full ZIP into a new folder.
How to update and play
On Windows, v0.9.9 installs can use the in-app updater. It follows the GitHub release marked Latest and downloads the full ZIP. You can also extract the full ZIP into a new, empty folder. Linux players and rc testers should use the full ZIP in a new folder.
The v1.0.0 release page includes sf4-ember-netplay-1.0.0.zip and its .sha256 checksum.
Requires Windows 10 or later (x64), Ultra Street Fighter IV on Steam and the latest Microsoft Visual C++ x86 runtime. Extract the entire ZIP, optionally run preflight.cmd, then run Launcher.exe. If Ember does not open after an in-app update, start it again.
Host copies a private invitation; Join pastes it. Choose a table, take a seat and have both players select Ready. Graphics and button mappings use the native game Options menu. Keep invitations private.
See the player guide, Training Lab guide and troubleshooting.
What to report
Report crashes, freezes, failed rematches, spectator lock-in problems, incorrect replay playback, or controls and translations that feel wrong in the Ember Discord. Say roughly when it happened, what you were doing and which controller or keyboard controls you used.
Include sf4e.log, the newest session-*.log, launcher.log and sf4e-crash.log if present, from %APPDATA%\sf4e\logs. Logs from both players and affected spectators help. A MementoGuard: line, or a nonzero count on a guards line other than releases and tracked_keys, is worth reporting even when nothing seemed wrong. See saving logs.
Send crash dumps privately. They can contain invitations, player names and chat.
SF4 Ember Netplay v0.9.9
SF4 Ember Netplay v0.9.9
Experimental unofficial netplay for Ultra Street Fighter IV, based on sf4e by Anthony Danducci and contributors. Preserve upstream attribution and bundled licenses.
Changes since v0.9.8
Matches
- Shadow moves such as Yang's Super (Seiei Enbu) now roll back correctly. Shadows now restore their animation, hitboxes and timing, fixing mismatched hits and shadows that lagged or stood still after a rollback. This also covers Yun's Genei Jin and Rose's Soul Illusion.
- A short connection drop pauses the fight instead of ending it. The fight waits up to 8 seconds with a "Connection unstable" countdown and resumes if the connection returns. A connection that stays down still ends the match after about 8 seconds.
- You no longer end up controlling both characters after a disconnect. When the match loses its connection for good, the fight ends and you return to the room.
- A failed match start no longer leaves its network port open. The next match can prepare cleanly.
- Your profile record is saved once per match. It was being saved two or three times.
Rooms and spectators
- Match errors no longer close the whole room. Two kinds of helper errors that concern only one match now leave the room open, and a burst of room events no longer stops the helper.
- Spectators whose game loads a little later get more time to connect. The host now waits 5 seconds from the moment the two fighters are synchronized, instead of 3 seconds from its own match start.
- A dropped spectator returns to the room right away. You no longer wait a minute and then stay stuck until the fight ends. The message says the stream was dropped and to press Watch again for the next match.
- The "Room control is recovering" notice shows once per episode. Repeated notices no longer hide the message underneath, such as why Ready failed.
Leaving and rejoining
- You can leave and rejoin the same room through the same Discord invitation without restarting Ember. The host learns when you leave without waiting for a timeout, and your previous visit no longer blocks your return.
- Leaving no longer keeps you stuck waiting indefinitely. If the room does not confirm your departure within a limited time, Ember releases it locally so you can host or join again. You see: "The room did not confirm your departure. You have left locally."
- Rooms stay responsive after someone leaves. Finished departures no longer flood everyone with repeated room updates that could block joins and rejoins. A message sent just after someone leaves no longer stops the room from responding to actions.
- Players clear the former leader's old connection after another player takes over. Players who did not become the new leader could previously keep that stale connection around.
Starting the game and the launcher
- The launcher names conflicting DLLs beside the game before it starts. It checks for
GGPO.dll,spdlog.dll,fmt.dllandzlib1.dllbesideSSFIV.exeand shows the full paths of files to move away, instead of leaving you with a Windows entry point error. If startup still fails that way, the message explains which files to look for andlauncher.logrecords the reason. - The launcher finds games in other Steam libraries and remembers your chosen game folder. It reads both formats of Steam's library list, including paths with accented characters. A folder you choose in launch recovery is kept for the next start.
Stages
- You can choose Random on the stage page. The first card uses the game's own "?" mark, and your choice is remembered between sessions. Each time P1 presses Ready or Rematch, a stage is rolled and shared with P2 and spectators.
Crash reports and diagnostics
- When the game crashes, Ember writes a crash record.
sf4e-crash.logandsf4e-crash.dmpare saved in the same logs folder assf4e.log. The crash log names where the game crashed and includes the last log lines. - Logs include more detail about matches and game exits.
launcher.logrecords the game's exit code, whilesf4e.logrecords memory use at the start and end of each match and the input delay each side applied at match start. - Failed room messages have a reason in
sf4e.log. Thereason=detail helps explain why a message could not be delivered.
Other
- Networking failure messages stay on screen in every language until networking returns. In Spanish and Portuguese, messages that networking was unavailable or could not start disappeared after 30 seconds.
- When the previous match fails to close, you see that message first. It takes priority over "Your Ready did not go through," which did not explain the cause.
- The launcher no longer bundles the ValveFileVDF library. The notices and attribution files have been updated to match.
Testing
Players tested v0.9.9-rc1 through rc5, and testers report rc5 is working well. The build's automated tests (63) and the networking helper's tests pass. Leaving and rejoining through a Discord invitation and a cable-pull style connection drop are still not confirmed across two PCs.
Compatibility
Everyone in a room, including spectators, must use v0.9.9. A room checks that all games run the same build, so v0.9.9 cannot play v0.9.8 or any rc test build.
Known limits under Linux (Proton or Wine): preflight.cmd cannot check the files, because Wine's PowerShell does nothing, and the in-app updater cannot extract a package. Update by extracting the new ZIP into a new folder.
Install and play
Requires Windows 10 or later (x64), Ultra Street Fighter IV on Steam, and the latest Microsoft Visual C++ x86 runtime from https://aka.ms/vc14/vc_redist.x86.exe. Extract the entire sf4-ember-netplay-0.9.9 ZIP, run preflight.cmd, then Launcher.exe. Players on v0.9.8 can use the in-app updater or the upgrade ZIP. Players on an rc test build can also use the in-app updater, because those builds report themselves as 0.9.8, or extract the full ZIP into a new folder. If Ember does not open after the in-app update, start it again.
The fixed in-game menu provides private Iroh rooms, fighter selection, spectators and offline play. Host copies a private invitation; Join pastes it. Both players select Ready. Graphics and button mappings are configured in the native game Options menu.
See the player guide and troubleshooting, or ask in the Ember Discord. Keep invitations private.
SF4 Ember Netplay v0.9.8
SF4 Ember Netplay v0.9.8
Experimental unofficial netplay for Ultra Street Fighter IV, based on sf4e by Anthony Danducci and contributors. Preserve upstream attribution and bundled licenses.
Changes since v0.9.7
Linux (Proton and Wine)
- The room no longer closes about 30 seconds after a match. At match end the networking helper could stop answering under Wine, and the room then closed with
match_teardown_timeout. Rematches now work and the room stays open. - The launcher starts under Wine. Its Visual C++ runtime check accepts Wine's own runtime.
Connections
- Ember prefers UDP port 45760 for matches. It used a random port on every start, so there was nothing to forward in a router. A second copy on the same PC takes 45761 to 45763, and if all are busy Ember uses a random port as before. Ember still tries a direct connection first and falls back to the relay.
- If Check connection says Relayed, you can forward the port. Forward UDP 45760 to your PC in your router and allow
sf4-net.exein Windows Firewall. On strict routers this usually gives other players a direct path. Players whose internet provider shares one public address between many customers cannot forward a port and may stay relayed. - Check connection explains a Relayed result and what can make it direct. The Direct/Relayed label is translated.
Joining and rooms
- Players with the same name can join each other. Every install was named "Player" until you changed it, and a room turns away a second player with a name it already has. New and unchanged installs now get a name like "Player 4821". You can rename yourself in Settings as before.
- A refused join says why, for example "That player name is already in the room. Change it in Settings." or "This room is full."
- Opening a room no longer says "Room control is recovering". If it has not opened after about 30 seconds, Ember says so. While a room opens, the stop row reads Stop creating or Stop joining.
- Players whose game crashed no longer stay in the room, and hosting passes to someone who is still connected.
- A finished match no longer blocks the next one at its table, even if your profile could not be saved.
- Leaving a room always finishes, after at most 8 seconds.
- Room buttons are kept through a brief reconnect and go through once the room catches up. Chat can no longer cancel them, and only your latest choice counts: Queue then Unqueue leaves you out of line.
- Battle slots are easier to read. The fighter portraits sit at the outer edges and are larger, with the score alone in the middle.
Matches
- Both fighters play at the same input delay: the higher of their two Ready choices. Separate delays gave the fighter with the lower one an advantage. Battle setup shows a Match delay row once both seats are filled.
- Rollback sound fix. Two identical sounds playing at once could cut each other off after a rollback.
- Failed rollback saves end the match cleanly instead of continuing on incomplete data.
- The ping in the match display no longer shows a stale value while the connection is interrupted.
Launcher and updates
- The launcher checks your Visual C++ runtime before starting the game, since an older runtime made the game crash at every start. It offers to open the download page.
- Starting Ember while it is already running says so, with how to end Launcher.exe and SSFIV.exe in Task Manager if you cannot see Ember.
- An interrupted update is repaired at the next start and can no longer lock you out of the game. Extracting a new package over an old folder is never undone by a leftover update record.
- Update files no longer pile up, and a finished update is never reported as rolled back.
- Preflight accepts the downloaded checksum file and other files of yours in the folder. A stray program file, such as a DLL from an older version, still fails the check.
Character art
- Pictures that fail to load are retried, and portraits fall back to the packaged original-outfit picture when the game's own cannot be read. Failures are logged once as
Selection art ... unavailable.
Diagnostics
- Help & About > Export diagnostics shows the UDP port in use.
sf4e.logrecords each match link's route and the helper's port, and more detail when a match fails to close.
Testing
Players tested the v0.9.8-rc4 and rc5 builds, including a Linux (Proton) session with several rematches in one room. The build's automated tests (57) and the networking helper's tests pass. The room integration fixture currently times out intermittently on the build machine with or without this release's network change; it is not part of the release suite.
Compatibility
Everyone in a room must use v0.9.8. A room checks that all games run the same build, so v0.9.8 cannot play v0.9.7 or the rc test builds.
Known limits under Linux (Proton or Wine): preflight.cmd cannot check the files, because Wine's PowerShell does nothing, and the in-app updater cannot extract a package. Update by extracting the new ZIP into a new folder.
Install and play
Requires Windows 10 or later (x64), Ultra Street Fighter IV on Steam, and the latest Microsoft Visual C++ x86 runtime from https://aka.ms/vc14/vc_redist.x86.exe. Extract the entire sf4-ember-netplay-0.9.8 ZIP, run preflight.cmd, then Launcher.exe. Players on v0.9.7 can use the in-app updater or the upgrade ZIP. If Ember does not open after the in-app update, start it again.
The fixed in-game menu provides private Iroh rooms, fighter selection, spectators and offline play. Host copies a private invitation; Join pastes it. Both players select Ready. Graphics and button mappings are configured in the native game Options menu.
See the player guide and troubleshooting, or ask in the Ember Discord. Keep invitations private.
SF4 Ember Netplay v0.9.7
SF4 Ember Netplay v0.9.7
Experimental unofficial netplay for Ultra Street Fighter IV, based on sf4e by Anthony Danducci and contributors. Preserve upstream attribution and bundled licenses.
Changes since v0.9.6
Rooms
- Set scores are shown. Rooms already counted wins for the two seated players. The running count, such as 2 - 1, now replaces "VS" on the room's table card and "vs" on the match HUD, for players and spectators. A game counts once both players report the same result, so during a game the HUD shows the score before it. The count starts again at 0 - 0 when the pair changes.
Community
- Join the Ember Discord. Help & About has a "Join the Ember Discord" entry. After you confirm, it opens discord.gg/uPNqF5A5uq in your browser, which may open behind the game in fullscreen.
Match HUD
- The ping label reads "Ping" in Spanish and Portuguese. It was "Retardo" and "Latência", which players confused with the input delay shown next to it.
Logs
- The
Netplay [line insf4e.logno longer reports a ping of 0 before the first round trip completes.
Compatibility
Everyone in a room must use v0.9.7. A room checks that all games run the same build, so v0.9.7 cannot play v0.9.6.
Known limits: players on Linux (Proton or Wine) still report jerky matches and rooms that break after one or two games. If you play on Linux, please send the whole sf4e\logs folder from your Wine prefix (for Steam: steamapps/compatdata/45760/pfx/drive_c/users/steamuser/AppData/Roaming/sf4e/logs) right after it happens, along with your Proton or Wine version. See saving logs.
Install and play
Requires Windows 10 or later (x64), Ultra Street Fighter IV on Steam, and the Microsoft Visual C++ x86 runtime. Extract the entire sf4-ember-netplay-0.9.7 ZIP, run preflight.cmd, then Launcher.exe. Players on v0.9.6 can use the in-app updater or the upgrade ZIP.
The fixed in-game menu provides private Iroh rooms, fighter selection, spectators and offline play. Host copies a private invitation; Join pastes it. Both players select Ready. Graphics and button mappings are configured in the native game Options menu.
See the player guide and troubleshooting, or ask in the Ember Discord. Keep invitations private.