Skin Companion: Replay update (2.1.0)
[!] Minimum CSP version: 0.3.0 public OR CSP 0.3.0-preview11 [!]
Skin companion 2.0.0 is now free for everyone and should also go live on appShelf soon.
This update is likely the last paid update until skin hosting goes live. More about that soon.
This update is mostly about replays, but also has a few performance improvements and an improved user interface/experience.
From now on, skin changes get recorded directly into the replay files.
As a result when watching a replay, cars will now show the livery they were using at that time.
The ability to set specific skins on cars in replay isn't lost, and instead now those changes will persist across game reloads.
A button lets you quickly toggle between those two modes:
Notes:
Saved skin overrides are tied to the replay file's name. If you rename a replay and want those to carry over, you'll need to manually rename the override file to match the new name.
Skin sync only works for replays recorded with this version of the app or later — replays saved before this update won't have the data to sync from. Overrides work for any replay.
Skin changes in general will happen faster, and not use much more than 1 ms of CPU time per frame.
The main cause of spikes, shader compilation, has been addressed thanks to x4fab: on CSP 0.3.0-preview728 (build 4261) or newer like 0.3.0-public, you can now use the asynchronous shader replacement option (enabled by default).
The other improvements are mostly less garbage being generated by the app, which should result in slightly better game performance.
Skin changes might now be held off based on some conditions (online only) and might apply later when conditions allow:
if a server disabled it via server config: I always thought that servers should have the option to opt out. Especially since online skins are coming. The current option disables all skin changes made through the app; separate options for local and online skins will come later.
If a car is moving (It doesn't make sense for a car livery to be updated while it's being driven, unless you just joined the server)
If a car is taking part in an ongoing race (A car shouldn't be able to change livery mid race, it would be confusing)
To be clear, I'm not doing those changes to be restrictive, but I think it makes sense for server owners to have some control over those things. Not to mention that it could cause some breaking changes on servers running some custom scripts.
The other changes are more of an immersion/QoL change. And technically the speed check was already there, just not properly enforced.
List of changes:
UI:
Added a button to toggle between skin sync and skin override in replays
The main app window can now be interacted with while the settings window is open
Skin selection should feel better, the 1 sec delay for skin selection has been removed, and it’s now possible to queue another skin, so all the clicks actually do something. It was kind of bad before, sorry about that.
Skin selection might be blocked under some conditions online. A tooltip will show why.
Fixed errors when using “(“, “[“ or “%” in search bars.
Replays
Skin changes are now recorded and played back in replays
Added a manual skin override mode for replays, saved across reloads
Performance:
Added async shader replacements (there’s an option to turn it off in settings just in case, but it shouldn’t be needed). This is a pretty big deal because with it on, shader compilation doesn’t happen on the main thread, and it could cause CPU spikes previously.
A lot less garbage for CSP to deal with -> better game performance
Skin changes happen faster. The pipeline now has a 1 ms budget per frame (it might go slightly over, but in theory not by much)
Misc:
Added some log/debug messages and a replay debug tab
Reworked the way that some of the data is stored, especially information that is needed if the app was reloaded live (mostly for development purposes)
The legacy skin pipeline has been removed (it only did textures), so the minimum csp is now CSP 0.3.0-preview11 (3493)
Logging updates and some cleanup
Settings:
Automatically re-applying skins for cars that had their files changed is now a setting to toggle in the “Skin tools” tab in the app settings. It’s meant to be something you’d use when working on a skin so that should be fine.
Fixes
RSS cars: led/screens brightness not updating after skin changes fixed (with CSP 0.3.0-public)
skinned meshes textures get reset properly now (Driver Gloves for example)
