Changelogs. The launcher's main screen has a CHANGELOGS tile in the
bottom-left corner. It opens a panel with the newest GitHub release: its
tag, title, date and notes. The notes are the release's description, read
as markdown and drawn like a mod's README (headings, bullets, code, rules).
A release published without a description shows what its GitHub page shows,
the tagged commit's message, taken from the releases feed. Fetched once,
the first time the panel opens; "Open on GitHub" goes to the releases page.
Download total. On GET MODS, the bar for ticked mods now gives the size of
what installing them downloads: "3 mods selected / 1.27 GB to download".
It is the sum of each mod's newest version as Thunderstore lists it.
Discord joins. The command the game registers for Discord to start ReSkate
now passes --no-gui, so pressing Join with the game closed goes straight
into the game instead of stopping at the launcher window.
--no-gui with no other launch flags now starts the game with the launcher's
saved settings (window size, menu and console keys, loose files, GPU
diagnostics, Discord status, offline, log level, extra launch options), as
pressing PLAY does. With flags of its own it behaves as before.
Mod Options. The pause menu's "Custom Stuff" page is renamed "Mod Options",
in the menu, the READMEs and the comments.
Not tested in game: the Discord join with the game closed, and the renamed
page. The changelog panel has only been seen with the earlier API-only
fetch.
The game shows on the player's Discord profile where they are skating.
It talks to the Discord app on the same PC over its local pipe, with no
SDK; without Discord running nothing happens.
- Solo: "On <map>", "Solo skating", and how long they have been in.
- In a session: "On <map>", "Server: <name>" or "Lobby: <name>", the
player count, and how long since they joined. A session with a
password shows "Private server" or "Private lobby" and no name.
Joining: a status carries the session's join code when anyone may walk
in (no password, not full, a dedicated server or a publicly listed
lobby). Discord shows that as "Ask to Join"; the game answers yes for
the player at once, and the other player's game is handed the code and
joins. If their game is not running, Discord starts the ReSkate
launcher, which the game registers for under the player's own
discord-<application id> URL scheme.
Switches: "Discord status" in the launcher's settings (off starts the
game with --no-discord, and the game never opens Discord's pipe), and
the same in the in-game Multiplayer settings, kept in the profile.
The model gains join_code: the code of the session a player is in as
host or guest (invite was a host's only).
Costume crash: the skater scripts' item:addEsShaderPreset uses the
preset it is handed without checking that it is loaded, and the game
crashed in the material's construction shortly after arriving on a
server's map while wearing a modded costume. The call is now checked
first: an item whose preset is not there is shown without it, and the
log says so.
Stuck close: once the player closes the game, a watch starts. If the
window has gone or stopped answering and the process is still there
8 seconds later, the process is ended. A window that still answers
(the close was turned down) is left alone, and the watch stands down
after two minutes.
Level unload guard: switched off. Skipping the entry that crashed left
its reference registered, so leaving the level never finished and the
game hung with the world unloaded. The crash it covered is back until
the reference is released properly.
Linux and Steam Deck. 2.0.0 did not start under Proton: the launcher said
"ReSkate could not attach to Skate". The block on EA's online services hooks
five of Windows' name lookups and took any failure as fatal, and Wine's ws2_32
has no GetAddrInfoExA. Only getaddrinfo, the one Skate.exe resolves names
through, is required now. The other four are extra cover for anything else in
the process: one that is missing or cannot be hooked is left as it is, with a
line in the log. A function the system does not have cannot be called, so
nothing is left unblocked. On Windows all five are hooked as before.
Vote card. It sat on top of chat and looked like neither the menu nor the
notices. It is now on the middle of the screen's right edge, whatever chat is
doing, as a flat dark tile with a strip of colour down its left: blue while
running, green passed, red failed, grey cancelled. The question is in the
heading font, the bar is under it with the tally below, and Yes and No are
menu tiles with their binds on white keycaps. The server's line that starts a
vote says "the card at the right of your screen".
Hall of Meat. Its row in the Insert overlay now says when No Bail (or noclip,
which includes it) is stopping the bails it scores. The tab it is on,
MOVEMENT, is now GAMEPLAY, and the card FLIGHT & BAILS.
Skate.exe contacts EA on every launch, offline mode included: error and
session reports (collector.errors.ea.com), SDK telemetry
(freeform-river.data.ea.com) and remote configuration (gcs.ea.com).
- Block the game's lookups of ea.com and tnt-ea.com names inside the
process (getaddrinfo and the other Winsock resolvers). Installed at
bootstrap, and fails closed like the EA app launch block
- Turn EA's error reporting (EadpErrorsData) off in game, next to the
existing DingoTelemetry settings; the game ignores them on its
command line
- Leave EA's image CDN (dingo-dev-assets.akamaized.net) reachable for
the fast-travel artwork, which only downloads images
- Add a hostname test, contrib/ea-watch.ps1 to check the traffic, and a
short note in the README's privacy section
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>