Repository navigation
Player Guide
Own and install Ultra Street Fighter IV on Steam. Use the complete package on both machines and install the latest Microsoft Visual C++ x86 runtime from https://aka.ms/vc14/vc_redist.x86.exe. An older runtime crashes the game at startup, so the launcher will not start with one; it tells you and offers the download. Under Wine or Proton, Wine's own runtime is accepted.
Note
Coming soon (PR #90, PR #108, PR #133)
Own and install Ultra Street Fighter IV on Steam. Use the complete package on both machines and install the latest Microsoft Visual C++ x86 runtime from https://aka.ms/vc14/vc_redist.x86.exe. An older runtime crashes the game at startup, so the launcher will not start with one; it tells you and offers the download. Under Wine or Proton, Wine's own runtime is accepted. On a Steam Deck, install with the Steam Deck guide (docs/guides/STEAM_DECK.md in the source repository) instead of the steps below; the %APPDATA%\sf4e folder named here is then inside the game's Proton folder.
- Extract the complete Ember package into a new writable folder. Keep the downloaded ZIP and its
.sha256file outside that folder. Optionally, double-clickpreflight.cmdto check that every file was extracted completely and unchanged. It changes nothing and is not the updater. It ignores other files you keep in the folder but fails on any stray program file, such as a DLL left from an older version. Keep your old launcher installation separate; upgrading from the legacy launcher is a fresh install. Existing Ember preferences remain under%APPDATA%\sf4e. - Run
Launcher.exe. Successful startup goes directly to the game. If the game cannot be found, choose the folder containingSSFIV.exein launch recovery; Ember remembers it for later launches. If Ember is already running, a second start says so instead of opening another copy. On first launch Ember may show Recommended game settings: set Frame Rate to FIXED in the game's Options, because other modes break rollback. - At the main menu, Ember opens across the game viewport. Set your player name in Settings > Player & controller. There (or with Choose gameplay controller on Home), select Change controller, release held buttons, press a button on your controller, then release it. Confirm the displayed gameplay device. Use keyboard is an explicit alternative; it asks first, because your controller then stops moving through Ember's menus until you assign it again.
- The host selects Online play > Create room, sets the room name, capacity and default rules, then chooses Copy invitation. Practice room, off each time Create opens, makes every game in the room a Practice match for as long as the room is open (see Training with another player); to play normal matches, close it and create a new room. Send that private invitation through your own messaging app. A guest chooses Online play > Join room, selects Paste invitation, then Join room. While the room opens, the row reads Stop creating or Stop joining. If it has not opened after about 30 seconds, Ember says so; check your connection, or stop and try again. A room that is still opening is not in recovery and offers no Replace room.
- A joined member starts idle. Select a table's card to open its seat chooser: Play as P1 or Play as P2 for an open seat, Join queue to wait for one, or Watch to reserve a spectator place (Watch next game in Table options). Once watching, Lock in to watch in Table options makes the next start wait up to 10 seconds for you if you are still leaving the last game; without it the fighters do not wait and you join the game after. A room has up to 16 members and four independent tables.
- Open Fighter select on Home to save your fighter, edition, costume, color and Ultra. You can do this before joining a room or while waiting alone; in a room, an Xbox pad's X opens Change fighter. P1 chooses the match stage. When P1 picks Random, Random stage pool under the stage cards lists every stage; Select skips a stage or puts it back, and Random only picks from the stages left in. The pool is P1's own saved setting and at least one stage always stays in. Return to your table and press A on your own card for Ready up; it uses your saved selection. Choose Unready / unlock fighter (A again) before changing it. B on your own card leaves your seat or queue place at once, asking first only if that would end a set score or hand the seat to a queued player; a running game blocks it and says why, and during a start held for a locked-in spectator B cancels the start instead.
- The menu hides for loading and gameplay, except that Start or F10 opens it over a Practice game you fight in and over a game you only watch. A compact, quiet, opaque two-row panel at bottom center shows both fighter names, Ping, Rollback, and Delay without covering the action or SF4's meter areas. Ping is the current gameplay round-trip time in milliseconds; unavailable or stale measurements show a dash. Rollback is the largest replay burst during the preceding second and returns to zero when none occur. Delay is the frame delay both fighters use for this match: the higher of the two Ready choices. A spectator's panel has no Ping or Rollback, since a spectator has no network stats or rollback; it shows Delay (the delay the table plays at, or Own in a room where each player keeps their own), Behind (how many frames it is behind the live stream) and Spectating. With nothing more urgent on the panel's status line, it also shows the spectator's queue place (You're up next or Queued 2 of 3) and unread chat. For the first ten seconds of a watched game a line names the keys. Ember opened over a watched game is translucent, so the fight stays visible behind it. With Watched game in a corner on in Settings > Training and replays (off at first), the menu is opaque instead and shows the game small in its top right corner, under any dialog; if that picture cannot be made, the menu stays translucent. In Settings > Interface, choose Small, Standard, or Large Match HUD size and Normal or Raised bottom spacing. Match HUD position places the panel at bottom center, bottom left or right, top left or right, or top center, in the strip above the game's round timer; there the panel shrinks to fit, and if that would leave it too small it stays at bottom center. The sample preview helps compare sizes; Match HUD On/Off remains available.
Note
Coming soon (PR #102)
- Open Fighter select on Home to save your fighter, edition, costume, color and Ultra. You can do this before joining a room or while waiting alone; in a room, an Xbox pad's X opens Change fighter. P1 chooses the match stage. When P1 picks Random, Random stage pool under the stage cards lists every stage; Select skips a stage or puts it back, and Random only picks from the stages left in. The pool is P1's own saved setting and at least one stage always stays in. Return to your table and press A on your own card for Ready up; it uses your saved selection. Choose Unready / unlock fighter (A again) before changing it. Leave seat or Leave queue on the room board leaves your place at once, asking first only if that would end a set score or hand the seat to a queued player; a running game blocks it and says why, and during a start held for a locked-in spectator Cancel the start cancels it instead.
Note
Coming soon (PR #102, PR #104)
- The menu hides for loading and gameplay, except that Start or F10 opens it over a Practice game you fight in and over a game you only watch. A compact, quiet, opaque two-row panel at bottom center shows both fighter names, Ping, Rollback, and Delay without covering the action or SF4's meter areas. Ping is the current gameplay round-trip time in milliseconds; unavailable or stale measurements show a dash. Rollback is the largest replay burst during the preceding second and returns to zero when none occur. Delay is the frame delay both fighters use for this match: the higher of the two Ready choices. A spectator's panel has no Ping or Rollback, since a spectator has no network stats or rollback; it shows Delay (the delay the table plays at, or Own in a room where each player keeps their own), Behind (how many frames it is behind the live stream) and Spectating. With nothing more urgent on the panel's status line, it also shows the spectator's queue place (You're up next or Queued 2 of 3) and a separate chat indicator. New messages expand that indicator for four seconds, then leave a small unread badge. A continuous burst does not keep the expanded notice open. Chat remains unread until its newest message is visible in focused Chat, or in an attended Recent chat panel. Scrolling up, switching applications, or hiding the overlay does not read it. The same indicator appears while Training in a room; it stays hidden during an active fighter's match and when the relevant HUD is off. For the first ten seconds of a watched game a line names the keys. Ember opened over a watched game is translucent, so the fight stays visible behind it. With Watched game in a corner on in Settings > Training and replays (off at first), the menu is opaque instead and shows the game small in its top right corner, under any dialog; if that picture cannot be made, the menu stays translucent. In Settings > Interface, choose Small, Standard, or Large Match HUD size and Normal or Raised bottom spacing. Match HUD position places the panel at bottom center, bottom left or right, top left or right, or top center, in the strip above the game's round timer; there the panel shrinks to fit, and if that would leave it too small it stays at bottom center. The sample preview helps compare sizes; Match HUD On/Off remains available.
Note
Coming soon (PR #139)
- The menu hides for loading and gameplay, except that Start or F10 opens it over a Practice game you fight in and over a game you only watch. A compact, quiet, opaque two-row panel at bottom center shows both fighter names, Ping, Rollback, and Delay without covering the action or SF4's meter areas. Ping is the current gameplay round-trip time in milliseconds; unavailable or stale measurements show a dash. Rollback is the largest replay burst during the preceding second and returns to zero when none occur. Delay is the frame delay both fighters use for this match: the higher of the two Ready choices. A spectator's panel has no Ping or Rollback, since a spectator has no network stats or rollback; it shows Delay (the delay the table plays at, or Own in a room where each player keeps their own), Behind (how many frames it is behind the live stream) and Spectating. With nothing more urgent on the panel's status line, it also shows the spectator's queue place (You're up next or Queued 2 of 3) and unread chat. For the first ten seconds of a watched game a line names the keys. Ember opened over a watched game is translucent, so the fight stays visible behind it. While you watch, the room board's Game as picture makes the menu opaque instead and shows the game small: at the top of the members and chat column on a wide board, or in the top right corner under any dialog on a narrow one or with both hidden; Game behind menu turns it back for the rest of the session. If that picture cannot be made, the menu stays translucent. In Settings > Interface, choose Small, Standard, or Large Match HUD size and Normal or Raised bottom spacing. Match HUD position places the panel at bottom center, bottom left or right, top left or right, or top center, in the strip above the game's round timer; there the panel shrinks to fit, and if that would leave it too small it stays at bottom center. The sample preview helps compare sizes; Match HUD On/Off remains available.
- After a game, both fighters ready again to play the next one. With no set length the same two fighters keep playing until one of them leaves, and the score counts their wins against each other. A host can give a table a set length of first to 1 through 10 (best of 1 to best of 19) and choose who rotates out when a set ends: winner stays (king of the hill), loser stays, or both rotate. Players who rotate out go to the back of the queue, and only members who joined the queue are seated. When a fighter leaves, the next member in the queue takes that seat.
Queued members watch each game while retaining their queue position; leaving the queue ends that watching when the current game does, unless you choose Watch next game. Spectators have no Ready action; while waiting outside a match, they can save a fighter choice for their next turn. Stop watching leaves the spectator roster while the fighters continue. During a game, Start or F10 opens Ember over it on the room board at that row; a queued member sees Leave this game there instead, which stops watching this game and keeps the queue place. A table can include up to 14 spectators in addition to its two fighters.
Connection advice: Battle setup's Input delay row shows Auto or the delay you chose, with the recommended delay and the match delay in its detail. Check connection is optional and measures datagram round trips for five seconds after setup. Results show Direct or Relayed, RTT percentiles, RTT variation, actual packets sent, replies and missed replies. Relayed means the match goes through a relay server; it still works, and troubleshooting explains what can make it direct. If this PC cannot send the scheduled workload, the result reports local overload instead of counting unsent packets as network loss. Checking connection... shows that a check is running; wait for it to finish before retrying. If it cannot produce a recommendation, choose Retry connection check or set a delay manually and Ready. A new profile is on Auto: the connection check runs by itself once both seats are filled, once for each opponent, and Ready waits for it to end, for about twelve seconds at most; a check that fails is tried once more. You ready with its recommendation held between one and three frames, or with two frames if it produced none. Left and Right choose a delay of your own instead, from zero to five, with Auto one step below zero. Zero adds no delay and needs a steady, low ping; Auto and the recommendation never choose it. Select on a chosen delay copies the measured value. Ready locks your own delay for that game, and Unready unlocks it. Both fighters play at the higher of their two Ready delays; Input delay's detail shows that match delay once both seats are filled, and "At least" your own value until your opponent readies. Insufficient samples never block manual Ready. The recommendation follows the median round trip, the ping the check shows: up to 80 ms is one frame, 81 to 150 ms two, 151 to 220 ms three, 221 to 290 ms four, and 291 ms and up five, the most it recommends. If the 95th percentile round trip lands more than one step worse than the median's, the recommendation rises to one step below it. It is an estimate, not a guarantee. After each game Auto follows the ping that game reported instead, up or down, when it gave at least ten seconds of it; a chosen delay stays as chosen. A later route change never alters delay during a fight.
Invitations: new copied invitations start with sf4e3:; Discord uses emd2: secrets within its 128-character limit. Use the same package on both PCs. Invitations identify the room's current authority. A copied invitation stays valid for about a week while the room is open, and stops working when the room closes. Copy a fresh invitation after an authority change; stale references cannot admit new members. Already admitted members can reconnect while their current membership remains valid.
Discord: keep the Discord desktop app open. Ember shares basic activity, elapsed session time, and room occupancy. A host or guest can invite friends using Discord's interface while the room is unlocked and has space. Accepting an invite starts Ember when needed and waits for the main menu, networking, and your gameplay device. You enter idle and choose a table, queue, or spectator place yourself. If you are already in another room or playing offline, return to the main menu and choose Switch to invited room, or Cancel invitation. No fight is interrupted.
Settings > Discord includes Show activity and Allow invitations, both initially enabled. Turning off activity also stops advertising invites. These controls do not revoke invitations already shared or change the host's admission policy. Discord receives no room names, player names, fighter selections, stages, scores, or connection metrics. Discord being closed or unavailable does not prevent normal play.
The room host is separate from the P1 seat. The host can rename the room, lock admission, change capacity, edit rules for a waiting table, and kick members. A kicked peer cannot rejoin that room under another name. The host can cancel an unresolved game after conflicting or missing native result reports; cancellation awards no win and preserves earlier scores. A result counts only when both fighter reports agree. Either fighter can choose Abandon unresolved game, and a host who is not playing at that table can Cancel stuck game when a finished game never reported its result. That row is available once a game has run for ten minutes without a result; until then it says the game is in progress.
Host transfer: the current host can select another member and choose Transfer host. The confirmation starts on Cancel. Normal host departure transfers moderation to the oldest eligible remaining member. Moderation ownership is separate from the technical coordination leader.
Room recovery: room actions pause immediately when control becomes unavailable, while a healthy active game keeps its existing gameplay connection. Confirmed results wait for reconciliation, and result deadlines pause during recovery. After 15 seconds, Replace room offers a fresh room with new invitations. It remains unavailable while local gameplay owns its sockets. For incomplete preparation, explicit selection cancels setup and waits for its local connections to close before creating the room. Preferences and local records remain. Recovery continues in the background while you decide. A two-member room cannot recover its old quorum after one member is unexpectedly lost. Larger rooms need their existing voter majority. Replacement never recreates authority for the old room.
Leaving a room: choose Leave room from the room board or your table, then confirm. Leaving room... stays visible until the connection closes, and Ember returns to Home. Hiding Ember keeps you in the room. During Updating room, wait for the controls to return; Leave remains available.
Offline: select Play Offline. Native Options contains button mappings and graphics settings. Fighter Select saves the choice used by online matches, including rematches, and shows only options available in your game under the current rules.
Replays: every Ember match is recorded, and the game keeps the last 30 in Replay Channel > Local battle log (the stock game keeps 10). Ember also copies each one to %APPDATA%\sf4e\replays as soon as the game saves it, so nothing is lost when the game replaces an old one. Replays on Home lists those copies with the date, both players, and each side's fighter as a portrait (player 1 on the left). Select one and choose Watch now: it goes back into the game's list under the date it was played, and the battle log opens and plays it. Export video (GPU) first opens a screen for the caption, which is drawn over the game while it records and so is in the video: the two players' names on plates over the game's PLAYER labels, one line over the timer (the date and score to begin with), the set score beside the names (counted from the matches the two played just before, and yours to correct) and Ember's mark in a corner. Each can be turned off and its text changed; Generate video then plays the replay and records it with Ember's own encoder: an .mp4 (H.264 and AAC) next to the replay in the archive, at the full size of the game's picture, 4K included (HEVC past 4096x2160), encoded by the graphics card when its driver offers an encoder and by Windows' own otherwise, with the game's sound only and at full volume however far the game is turned down in the Windows mixer (Windows 10 2004 or later; older versions give a silent file). The export screen's Frame meter row adds the Training frame meter over the fight, in the video too. The export goes on with the game behind another window. While it records, F10 opens Ember on Replays: its first row shows how far the replay has played against its length (it stands still while the replay is paused), and Cancel export (it asks first, with Cancel focused) stops the recording and deletes the unfinished video, while the replay plays on to its end. Ember itself never appears in the video: open over an export, it stays out of it while the caption and the frame meter stay in. The row then says Video, the notice shows the file's path, and Open the replay folder opens the archive in Explorer; Show in folder on a replay's row opens the folder that holds that replay. A replay's row shows the score (rounds won, player 1 first) and, when it is selected, what the file says of the match: its length, and for each player the costume, color and Ultra chosen, the buttons pressed, inputs a minute, jumps and time spent crouching. Inputs and stats reads the replay file on a background thread without playing it, even when the game is not ready or a room is open, and adds, for each round, a list of what both players held, frame by frame (directions as on a numpad seen on screen, since the file does not say which way a fighter faces). Replays in the older layout of the native online service are not read. Watch with frame meter plays a replay with the Training frame meter over the fight; F5 turns the meter on or off during any replay you watch. Add to game only puts it in the list. A replay goes into the files of the Steam account that is signed in, and never over a replay that is not in the archive yet. A replay link (ember://replay/open) names a file on this PC only and is never played on its own: the Replays screen opens with the question first. Open the game's battle log jumps to that list. Both need the native main menu with no room open, since the battle log is a game screen. Player names show for matches played with this version onward; older copies show fighters only. Right after a match the game has not saved its replay list yet, and Ember says so instead of adding a replay over the match just played; try again a moment later. A row says Seen once you have played that replay with Watch now, Spectated when your PC only watched that match live, and Spectated, seen for both (the game records those matches too, so a wait in the queue adds other people's matches; turn Save matches you watch off on that screen to keep only the matches you play).
Replay controls: while the battle log plays a replay, Ember adds pause, frame step and slower speeds. They work from the keyboard and from an Xbox-layout pad:
| Keyboard | Pad | What it does |
|---|---|---|
| F1 | RB | Pause or play |
| F2 | RT | Step one frame while paused; hold to step ten frames a second |
| F3 / F4 | LB | Slower or faster. LB goes round 1x, 1/2x and 1/4x |
| F5 | Show or hide the frame meter | |
| F9 | LT | Show or hide the input lanes |
The controls act during the fight. The round's introduction, the knockout and the round's end play at normal speed, and each round starts playing at 1x. Pressed outside the fight, the controls say "Controls work during the fight". A strip at the bottom centre shows whether the replay is paused, its speed, the round and the time into it (the frame while paused), with the keys for the device you last used. At 1x it fades three seconds after your last press. The game's own half speed on Select still works and counts as 1/2x. Start still opens the game's pause menu, and the controls wait while it is open. The input lanes are two narrow columns, player 1 at the left and player 2 at the right, with what each held, newest at the top: an arrow for the direction as seen on screen, the buttons (orange on the frame they were pressed) and how many frames it lasted. They are off at first and need the replay file, so they are there for replays started with Watch now or Watch with frame meter, not for ones picked from the game's own list. A video export always plays at normal speed with no controls, strip or lanes. A DirectInput pad has no known button layout, so use the keyboard with one.
Training controls: in offline training, press F6 to open or close Training Lab. Use the keyboard and mouse: arrows navigate, Enter selects, and Escape returns or closes the panel. F5 toggles the frame-meter HUD. Controller Start opens the native pause menu when Training Lab is closed. Gameplay inputs are captured while Training Lab is open and until held buttons are released. Record and Play return to practice after acceptance; an error stays visible. Overwriting or clearing a recording requires confirmation, initially focused on Cancel.
Navigation: F10 toggles at safe menu states and over a Practice game you fight in or a game you watch; controller Start opens. Escape / controller Back closes a popup first, then returns from a secondary page. On your own table card in a room, a pad's Back leaves your seat or queue place instead (see step 6); elsewhere on the board it goes to Home. On the keyboard Escape always goes back, and Delete leaves your seat or queue place. Back from Home hides Ember without leaving the room, and Home's Online play row returns to it. In a room, an Xbox pad's X, Y and View, or F, T and C on the keyboard, open Change fighter, Table options and Chat, and pressing the same button again returns to the board (in Chat the keyboard types letters, so Escape or B returns). Change fighter opens on the fighters; picking one goes straight on to its Ultra, and picking the Ultra returns to the room. On the fighter select page, Left and Right on Ultra Combo change it without opening the page. Space also selects and Backspace also goes back, except while you type in a text box. The button prompts follow whatever you pressed last, pad or keyboard. Moving the mouse pointer moves the highlight; clicking selects. Hiding the menu never leaves a room. During other fights Ember stays closed. Over a Practice game you fight in, Start or F10 opens the room board at End practice; over a game you watch, at Stop watching, or Leave this game if you are queued at that table.
Note
Coming soon (PR #102)
Navigation: F10 toggles at safe menu states and over a Practice game you fight in or a game you watch; controller Start opens. Escape / controller Back closes a popup first, then returns from a secondary page. On the room board, Back returns to Home. Use the visible Leave seat or Leave queue action to leave your place (see step 6). On the keyboard Escape always goes back, and Delete leaves your seat or queue place. Back from Home hides Ember without leaving the room, and Home's Online play row returns to it. In a room, an Xbox pad's X, Y and View, or F, T and C on the keyboard, open Change fighter, Table options and Chat, and pressing the same button again returns to the page you came from (in Chat the keyboard types letters, so Escape or B returns). Change fighter opens on the fighters; picking one goes straight on to its Ultra, and picking the Ultra returns to the room. On the fighter select page, Left and Right on Ultra Combo change it without opening the page. Space also selects and Backspace also goes back, except while you type in a text box. The button prompts follow whatever you pressed last, pad or keyboard. Moving the mouse pointer moves the highlight; clicking selects. Hiding the menu never leaves a room. During other fights Ember stays closed. Over a Practice game you fight in, Start or F10 opens the room board at End practice; over a game you watch, at Stop watching, or Leave this game if you are queued at that table.
Settings: Player & Controller (display name and gameplay device), Gameplay Defaults (input delay or Auto, and new-room defaults), Interface (Match HUD, HUD size, bottom spacing, challenger call, interface size and language) and Discord. Leave the room to change these; the gameplay device is the exception, and you can change it while unready, including inside a room. Any controller supported by SF4 can be assigned, including DirectInput sticks and leverless devices. The device stays selected across matches in this game session. Reconnect a disconnected device or explicitly choose another before Ready. Menu navigation is paused during capture; use Cancel or F10 to leave it. Display options remain in the native game menus.
Note
Coming soon (PR #76)
Settings: Player & Controller (display name and gameplay device), Gameplay Defaults (input delay or Auto, and new-room defaults), Interface (Match HUD, HUD size, bottom spacing, challenger call, interface size and language), Discord and Endless lobby music (on by default: the main menu plays a random stage or character theme, another one after every match, instead of its own music; a change applies the next time the menu starts its music, such as after a match). Leave the room to change these; the gameplay device is the exception, and you can change it while unready, including inside a room. Any controller supported by SF4 can be assigned, including DirectInput sticks and leverless devices. The device stays selected across matches in this game session. Reconnect a disconnected device or explicitly choose another before Ready. Menu navigation is paused during capture; use Cancel or F10 to leave it. Display options remain in the native game menus.
Challenger call: when the other fighter at your table readies while you have not, the game's own announcer says "Here comes a new challenger!". Settings > Interface turns it on or off, sets its volume as a share of the game's voice volume (so the in-game voice slider still applies), and Test challenger call plays it once at the chosen volume. It calls out once per ready, and again only after a few seconds if the opponent takes the ready back and gives it again.
Note
Room chat: Read messages and type directly in the main room area. Click the message field, or highlight it and press Select. Enter or Send sends; Escape or controller Back releases typing focus without losing the draft. Chat history remains available as an optional larger view.
Help & about: controls, attribution, a redacted diagnostics export (which includes connection state), the Ember Discord, the installed version and the update channel (with the build and how to change the channel in its detail), and update checking. Home shows the same line, such as "Ember 1.1.2 · Stable", in its bottom right corner, and so does the launcher's window when it opens on a problem.
Note
Coming soon (PR #102)
Room chat: Read messages and type directly in the main room area. Click the message field, or highlight it and press Select. Enter or Send sends; Escape or controller Back releases typing focus without losing the draft. Chat history remains available as an optional larger view.
Help & about: controls, attribution, a redacted diagnostics export (which includes connection state), the Ember Discord, the installed version and the update channel (with the build and how to change the channel in its detail), and update checking. Home shows the same line, such as "Ember 1.1.2 · Stable", in its bottom right corner, and so does the launcher's window when it opens on a problem.
Note
Coming soon (PR #111)
Help & about: controls, attribution, a redacted diagnostics export (which includes connection state), the Ember Discord, the installed version (with the build in its detail), the update channel, and update checking. Update channel works as in the Updates window below: Left and Right pick, Select asks first, and only a confirmed switch is saved and checked. Home shows the same line, such as "Ember 1.1.2 · Stable", in its bottom right corner, and so does the launcher's window when it opens on a problem.
Updates at launch: the first time Home opens after the game starts, Ember looks for a new version in the background, at most once every 6 hours; a check that could not reach GitHub is tried again the next time you start the game. When it finds one, a question opens on Home, after the recommended game settings notice if that shows: "Version X is available". It never opens in a room, a match or Training, over another dialog, or on any other screen. Update now closes the game and opens the Updates window, which looks again and starts Download and install at once only if the same version and package are still the current ones; if the release changed, or is gone, it shows the usual offer instead. Later, which is highlighted, or Back, asks again the next time the check runs. Skip this version stops asking about that version; a newer one is asked about again. Check for updates at launch in Help & about turns the whole check off. The Updates window still waits for the game to close and verifies the package before installing, and the game never installs an update by itself.
Updating: in Help & about, choose Check for updates. When one is found, leave your room and choose Exit and open updater. The game closes, the Updates window opens with Download and install highlighted, and Ember restarts once it is installed. With the game closed, double-clicking Updater.exe opens the same window. The window also has What's new, the found version's release notes as plain text: Select opens them, Up and Down scroll, Back closes them. Update channel chooses which builds are offered: Stable, Beta or Nightly. Left and Right pick one without changing anything; Select asks first, with Cancel highlighted, and says what the switch means (Nightly's warning, or that going back may offer an older version). Only once you confirm is the channel saved and checked; nothing is installed until you choose Download and install. When the offered version is older than yours, its row says so: replays recorded on the newer version may not open on it. While the update installs, its window names the step it is at. Installation waits for shutdown and verifies the downloaded ZIP. Your own files are preserved, and the backup from the latest update is kept in .ember-update-backups. If an update was interrupted, the launcher restores the previous files the next time you start it, then opens normally. An update that can never be restored is reported once and set aside, and later starts go to the game.
Note
Coming soon (PR #111)
Updating: in Help & about, choose Check for updates. When one is found, or after switching channel a version to go back to, leave your room and choose Update now. The game closes, the Updates window installs that version if its own check finds the same one, and Ember restarts once it is installed. With the game closed, double-clicking Updater.exe opens the same window. The window also has What's new, the found version's release notes as plain text: Select opens them, Up and Down scroll, Back closes them. Update channel chooses which builds are offered: Stable, Beta or Nightly. Left and Right pick one without changing anything; Select asks first, with Cancel highlighted, and says what the switch means (Nightly's warning, or that going back may offer an older version). Only once you confirm is the channel saved and checked; nothing is installed until you choose Download and install. When the offered version is older than yours, its row says so: replays recorded on the newer version may not open on it. While the update installs, its window names the step it is at. Installation waits for shutdown and verifies the downloaded ZIP. Your own files are preserved, and the backup from the latest update is kept in .ember-update-backups. If an update was interrupted, the launcher restores the previous files the next time you start it, then opens normally. An update that can never be restored is reported once and set aside, and later starts go to the game.
If the game crashes: the launcher says so and the files to send are in %APPDATA%\sf4e\logs: sf4e.log, sf4e-crash.log and the newest sf4e-crash-*.dmp (the launcher keeps the last five). A heap corruption crash writes a larger sf4e-crash-*-heap.dmp of several hundred MB, and the launcher keeps the last two of those. Crash dumps are copies of the game's memory and can hold your current room invitation, player names and chat, so send them privately (a direct message to a developer), never in a public channel. A few crashes stop the game before any of its own handlers run. To catch those too, run this once in an Administrator PowerShell; Windows then keeps a full dump in %LOCALAPPDATA%\CrashDumps, and launcher.log names the file after a crash:
New-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\SSFIV.exe' -Force | New-ItemProperty -Name DumpType -Value 2 -PropertyType DWord -ForceThat dump holds the whole game's memory (about 500 MB), so zip it before sending it.
This experimental release has automated transport coverage. Actual SF4 host/join, native fights, repeated rematches, spectators, different-network and clean-machine results must be recorded separately. The source repository contains the implementation record at docs/design/EMBER_IMPLEMENTATION.md; this package guide has no repository-relative links so it remains valid as START_HERE.md.
Generated from the docs at cf0c5c83c; edit the docs, not this page.
Coming soon, from open pull requests:
- #51 Allow reading and sending chat directly in the room
- #76 Endless lobby music at the main menu, with a setting
- #90 Add a Linux guide for installing Ember by hand under Proton
- #100 Let spectators toggle the lobby with Start
- #102 Make table actions controller accessible and consolidate room settings
- #104 Expire chat notifications after four seconds and retain unread badges
- #105 Add LAN room discovery and direct local connections
- #108 Install Ember on a Steam Deck with a double-click
- #111 Let older copies take new package files, setup upgrade an Ember folder, and switch channel in game
- #116 Keep Ember's menu confirm on A and B for every XInput pad
- #133 Add the Ember ID passphrase and keyboard tips to the Steam Deck guide
- #139 Show the watched game in the room column, with a toggle on the board
Getting started
Playing online
Training
Frame Data
Integrations
Troubleshooting
More guides