ReSkate 2.1.3
Mod Manager in the pause menu
- A new tab after Mod Options: browse Thunderstore, install, update, switch mods on and off, and uninstall, all without leaving the game. Works with a controller.
- BROWSE: a featured carousel, then rows for most popular, recently updated, new, and every category. Search, filter by category, and open a mod's page to read its README and see what it brings with it.
- A download queue: ask for several installs, updates or uninstalls in a row and they run one after another. CANCEL ALL empties the queue.
- Apply without leaving a session: applying mods while in multiplayer reloads your own map and keeps you in the session.
- New maps show their picture in the map grids right after you add them.
- Plugin-only mods switch on and off at once, with nothing to apply.
Plugin safety
- You choose which plugins run: the first time a mod with a plugin shows up, the game asks, in plain words, what it can do. Only Turn on starts it. Your answer is remembered, and you're asked again if the plugin's files change.
- Plugin Manager: Insert > Plugins > Plugin Manager lists every plugin with everything it may do, and switches each on or off.
- Only real plugins run code: a mod's plugin runs only if Thunderstore lists it in the Plugins category. A plugin hidden in a cosmetics or map pack, or one taken off Thunderstore, doesn't run; the rest of that mod still loads. Mods you made yourself, or that aren't on Thunderstore, still run once you turn them on. If you're offline, the check is skipped.
- No more volume tricks: plugins can't change the game's volume or sound settings.
- Flash protection: plugins can't flash the screen quickly. Bright full-screen pictures fade in instead of popping.
- Who's drawing: when a plugin covers most of the screen, its name shows in the corner.
- Panic key: Ctrl+Shift+End switches every plugin off at once.
plugin off allin the console does the same. - For creators: while you work on a plugin,
plugin dev onkeeps your own plugins approved when you change their files.
Launcher and mod profiles
- Keep your mods when loading a profile: a new option switches on a profile's mods and leaves the rest of yours as they are, so a shared profile adds to your set.
- Uninstalling a mod pack offers to remove the mods it brought in, as long as nothing else needs them.
- Plugin-only mods no longer say "nothing to load", and a mod that isn't on Thunderstore shows its own icon.
- Clearer startup errors: when ReSkate stops while the game starts, the STATUS tile says why instead of blaming your anti-virus.
Sandbox (Trainer)
- Grind lock-on is now the game's own Grind Assist setting, the same one as in the game's Settings.
- Flip landing limit checkbox: shuvits no longer turn slower than other tricks when flip speed is below 1.
- Server physics banner: a clear banner on the Sandbox page when a session sets everyone's physics.
- Quick Settings rows can be changed from a controller in the full-screen menu, and preset names with quotes or spaces save and load properly.
Controllers
- DualShock 4 over Bluetooth: menus, the gamepad filter and Dark Pop's D-pad hiding now reach the game on these pads.
- PlayStation pads can turn the skater in the customization menu preview.
Multiplayer
- Faster joins on busy servers: players far across the map no longer flash in for a moment when they first appear.
- A plugin's poses on other players keep their size and stay close to the skater, instead of stretching across the map.
Mac (CrossOver) and Linux
- Big custom maps load: maps with many meshes no longer hang on the loading screen, or run out of memory mid-session.
- Throwdowns work on Mac: the Throwdowns page no longer waits forever to find the game's throwdown events.
Mods
- Custom shaders from different mods work together instead of one pack replacing another's. Board materials from one broken mod no longer switch off every other mod's colours.
- Variant packs can add their own extra parts beside the variant you choose.
Fixes
- HUD: the LINE label comes back after a plugin gives the trick corner back.
- Wardrobe: a full-body costume shows in what your skater is wearing.
Crash fixes
Thanks to everyone who keeps crash reporting on: these come from 2.1.2's reports.
- Sandbox: fixed the most common 2.1.2 crash, about a third of all reports, where the trainer wrote into memory the game had freed after a level change.
- Throwdowns: fixed a crash when leaving a level after the Throwdowns page was open.
- Textures: fixed a crash when a texture went away while still in use.
- Multiplayer: fixed a crash when another player skated on a custom map's own surfaces, and a crash at map exit with a damaged remote skater.
For plugin creators
New in the plugin API:
board.scale: wheel and part sizes.reskate.strings: change the game's text, for translations, with Turkish casing.reskate.world.physicsandworld.probe: physics bodies and rays.skater.pose: full control of a joint.- Private particles and decals.
room.pose, and background capture.- All 8 radio channels, and a choice of controller, in
input.joystick. menu.game().known, andreskate.Enums.
See the plugin docs.
Thanks
DeckardDetribine (Plugin Manager), hypnomalice (capture, shaders and variants), shumsic (Mac memory, multiplayer and throwdowns), jeffreymckishen (DualShock 4 Bluetooth, world physics), tsullivan13 (board.scale), system-conf (strings), nxroot (mod pack uninstall, profiles), andrewnakas (Sandbox), gbgyo (effects), mauwpix (poses and wardrobe), Vebjorhk (launcher status), Fredrik Hillbert (HUD), vtf (Enums) and Ryan Campbell.
plugin docs: https://docs.reskate.dev/plugins/overview
Commits
- Mod Manager: a mod that is only a plugin switches on and off at once, with nothing to apply
- Plugins: when Thunderstore cannot be reached, a package's plugin runs without the listing check
- Plugins: entities.bounds keeps each answer a few seconds and searches every asset domain at most 8 times a second
- Plugins: the strings permission has its words in the approval prompt and Plugin Manager
- Plugins: only packages Thunderstore lists as plugins run code, no plugin sets the volume, and none flashes the screen
- Plugins: the viewmodel permission has its words in the approval prompt and Plugin Manager
- Mesh pool: a budget larger than the card is capped at the card's size instead of Wine's free RAM
- Plugins: board.scale draws a board bone bigger or smaller over its animation
- Plugins: reskate.viewmodel draws a plugin's rigged, animated model in front of the camera
- Plugins: distinguish an unknown menu state from a closed menu
- Capture: process depth frames off the render thread
- Plugins: joysticks are read on a thread of their own, with all 8 radio channels, and a plugin picks which one
- Plugins: add a Plugin Manager and permission approvals
- Capture: keep cuff background out of depth sole recovery
- Input: report when a menu stick reaches native PlayStation reads
- Plugins: observe menu preview poses and turn native PlayStation pads
- Merge upstream main: reskate.world.physics beside effects, decals and the mod list's plugins
- Multiplayer: check a player's distance when their first pose places them, before spawning a skater
- Mesh pool: cap budget by free RAM and page file when the local budget exceeds the card's size
- Effects: release stale resources and require resident assets
- Plugins: reskate.strings.set_case_rules("tr") makes the UI's own upper and lower case follow Turkish rules
- Effects: merge main while preserving plugin resource cleanup
- Launcher: plugin-only mods no longer say "nothing to load", and a mod off Thunderstore shows its own icon.png
- Plugins: reskate.strings, under a "strings" permission, changes the text the game shows for its ids
- HUD corner: the LINE label comes back after a plugin gives the corner back
- Docs: contrib describes reskate.world.physics, its preparation, its ray batches and world.probe
- Plugins: the host tests drive world.physics and world.probe, and show the earlier rays unchanged
- Plugins: reskate.world.physics owns native bodies, and reskate.world.probe says clear, hit or unavailable
- World: plugins' native bodies are created, driven by measured commands and parked on release
- Park editor: its native ray can also be cast once and counted, with a query preset and the contact normal
- World: owned native bodies, their ray batches and hit checks get value contracts and build pins
- Input: a game handle read 547 bytes at a time is checked for a DualShock 4 over Bluetooth
- Input: a changed DualShock 4 Bluetooth report gets a new CRC in its 547-byte read too
- Music: the external player probe links again, with Plex, Spotify Connect and YouTube Music off
- Merge upstream/main into server-lua-api
- Plugins: Enums (LogLevel, Align, GrindSide, Stance, Pop, Space, etc.)
- Skater: a pose is sent to the others with its scale, and no joint further than 4 m from its parent
- Shaders: of two usable custom graphs under an alias-only winner, the higher-priority pack's is kept
- Board materials: one mod's broken reskate-materials.json leaves only that mod out, not every mod's declared colours
- Shaders: validate retained graphs and preserve safe aliases
- Plugins: revalidate effect assets and release effects after startup fails
- Materials: refresh declarations only after applied sources or files change
- Mods: withdraw stale variant admissions after exclusions and retries
- Shaders: validate retained table bounds before proving stock preservation
- Plugins: render private particles and decals with physics geometry
- Plugins: skater.pose can fully control a joint (its own place, relative to its parent, another joint, the skater or the world) instead of only adding to the game's animation
- Mods: a chunk no list describes gets an owner hash and meta in the merged bundle, instead of an empty record the game reads through null
- Multiplayer: a remote skater whose parent link is one byte short is put right and destroyed, instead of crashing at map exit
- Multiplayer: another player on a Studio map's own surface sounds like the default surface instead of crashing the game
- Customization: outfit.worn lists a full-body costume instead of filtering it out as a body part
- Docs: record the integrated SDEC fracture validation scope
- Mods: admit and project native private additions beside an opted-in variant
- Mods: read bounded two-sided variant addition declarations
- Mods: plan opt-in private additions without restoring variant removals
- Mods: keep payload order when a bundle manifest is not first
- Skater: plugin poses apply once a frame instead of twice every third frame
- Mod Manager: a download queue, and a new look for the featured card
- Mod Manager: a row on BROWSE for every category, not mod packs, libraries, tools or AI generated
- Live mods: a map added by a live apply has its picture in the map grids
- Live mods: research notes on applying mods without a level reload
- Multiplayer: applying mods in a session reloads your own map and keeps you in it
- Mod Manager: a pause menu tab after Mod Options to browse, install, update and switch mods in game
- Mods: retain bundle-owned custom programs alongside verified stock aliases
- Mod manager: review fixes for uninstalling what a pack brought in
- Tests: audit bundle shader graph ownership and surface excluded material rows
- Mods: preserve the selected bundle shader graph instead of importing foreign heaps
- Mod profiles: with other mods kept on, a profile is in use whatever the player's own mods are
- Plugins: enforce declared input ownership and preserve holds through rebuilds
- Capture: bound backdrop fitting cost and reject depth outliers
- Crashes: the Trainer no longer writes into freed memory, throwdown models go before a level unload, and a gone texture draws nothing instead of crashing
- Trainer 0.8.7: fixes for ReSkate 2.1.2
- Trainer: lock-on rows say Grind Assist works on top of them; trainer livedump
- Plugins: hold declared colour inputs on mod-owned board materials
- Docs: the bug report asks for the launcher's Copy details
- Launcher: when ReSkate stops while starting, the STATUS tile says why instead of blaming anti-virus
- Trainer: Grind lock-on is the game's own Grind Assist
- Mods: merge independent shader graphs and preserve additive variant bundles
- Trainer: QUICK SETTINGS rows of the trainer's own settings can be changed in the full screen menu
- Capture: retain shoes against curved floors in depth cut-outs
- Trainer: a large SERVER PHYSICS banner over the Sandbox page in a session that sets everyone's physics
- Trainer: Grind lock-on moves only the lock-on distance; the rest are sliders below it
- Trainer: preset names with quotes or spaces save, apply and delete
- Trainer: Flip landing limit checkbox; the game's limit stays on unless unticked
- Multiplayer: dedicated servers require plugins, and players get them and the map on one card
- Launcher: plugin mods show as Plugin instead of Nothing, and UPDATE sits after the version it brings
- Docs: macOS and music source setup move to the docs site instead of files in the repo
- Plugins: a dedicated server's plugins hide a player from others, or mute them
- Plugins: a dedicated server's plugins hear chat, know the map, change it and set the time of day
- Server: the READMEs no longer list the drones setting and command
- Launcher: GET MODS installs plugin mods and mod packs instead of refusing them
- remove old drone model
- Console: the menu command is back, so a key or combo bound to the ReSkate menu opens it again
- Multiplayer: a player using the controls counts as active on a dedicated server, so flying a drone is not away
- Plugins: a dedicated server's plugins show players cards and ask them polls
- Plugins: mods.content and read_content read the server's Mods on a dedicated server
- Plugins: world_to_screen gives nil for points the drawing functions would refuse
- Build: the plugin tests build and run on Linux
- Plugins: the role test ticks once before asking, so the session's players are there
- Docs: a Troubleshooting section in the README, and a bug report template
- Plugins: server plugins know each player's role
- Objects: mods name their Quick Drop objects and group them into families with reskate-objects.json
- Plugins: board.parameters reads the board's shader values, and set_parameter holds its colours and numbers
- Plugins: board.motion gives the board's spin, and where the board and its deck are in the world
- Launcher: categories shown only or hidden in GET MODS and MY MODS, and the game's shader cache emptied when the mods change
- Plugins: what the Filmer needs as a plugin: carry, who sees a pose, a step in the camera cycle
- Customization: item tabs over 1,024 items load instead of showing blank warning triangles
- Plugins: server plugins spawn and remove the server's park mods
- Plugins: server plugins know the map and hear it change
- Plugins: a dedicated server's plugins see the skaters
- Mod manager: keep the uninstall confirmation centred whatever its height
- Mod manager: a checkbox per modpack dependency in the uninstall confirmation
- Mod manager: offer only the mods a pack's install brought in
- Mod profiles: space the keep-other-mods checkbox's label like the settings page
- Mod manager: offer to uninstall what a mod pack brought in
- Mod profiles: an option to keep other mods on when loading a profile
- Plugins: prop hunt APIs, and plugin commands in the console lookup
- Docs: AGENTS.md for coding agents, and the README says the game build is pinned
- Plugins: a general launch API in place of grind_exit; grind exits is all Lua, and 701 is a grind
- Throwdowns: fall back to full region scan when QueryWorkingSetEx reports no resident pages (#319)
Problems after updating: ReSkate isn't working · Known issues · ReSkate history