Skip to content 0.2.10
- Version ID: 3459
- Size: 119.12 MB
- Published: 2025-06-11
- Real Mirrors:
- New
Adjust FOV and squeese option improving the look of mirrors at grazing angles (enabled by default);
- New
Accurate option for correct mirrors projection;
- A new tweak showing driver visor with high quality mirrors disabled, enabled by default;
- OpenRGB integration replaced with a new
RGB Control app available on App Shelf, with extended customization possibilities and its own Exchange platform to share presets;
- CSP will try and track abrupt reportless crashes on subsequent launches, pointing out a crash report generated by Windows;
- New menu:
- Telemetry tab is recreated as well;
- Ctrl+Tab to switch between tabs;
- New option to hide pit crew of remote players only;
- New tweak in GUI opening setup menu instead of session details when using those system bindings.
Fully dynamic pits option stopping cars with axles from moving fixed;
- Crashes caused by binding turbo, glance and such to D-pads fixed (regression in 0.2.9);
- CSP previews generation fixed;
- Recent AC logging rewrite fixed, no longer causes AC to collapse when trying to output long strings;
- Option to hide pit crew fully is working online;
- Occasional dead freeze during loading fixed;
- Autopilot no longer drivers into a wall on a session restart, if the car was in pits before that (and, in general, AIs will switch active pitlane on teleports again based on where they’re ending up);
- Cars with missing soundbanks should still detect when camera is inside the car (for example, helps windscreen raindrops);
- New KN5 loader reports missing DLCs properly again;
- A bunch of bugs with advanced online features on servers with more than 127 cars caused by CSP mistakenly treating session ID as signed fixed;
- Extra FX: TAA misbehaving on grass (or in other areas with color below 0) fixed;
- New trees:
- Tree definitions are reused when reloading settings and cache some things a bit more intensely, fixing memory leaks and performance issues when using Tree Planter app;
- Sun shadows are a lot smoother, self-shadowing reduced;
- Shadows and billboads of trees with width above 100% should look better;
- Ambient shadow is much smaller and more subtle (for large-scale shadows, please use VAO);
- New menu:
- Holding Alt to drag mirrored sliders fixed (regression in 0.2.9);
- Welcome message closes when clicked outside of popup as well;
- Exporting lap times as CSV is working (previously was generating an empty CSV);
- Sorting by indices fixed;
- Voting cooldown no longer applies to
kick vote, for both new menu and Lua apps API;
- Walking Out:
- Unused cars won’t switch lights automatically anymore;
- Headlights range misbehaving when switching cars with free camera fixed;
- Smart Mirrors:
- MIPs are no longer unnecessarily generating several times at once;
- Mirrors reflected in mirrors now use cubemap to show something instead of being black;
- Frame skipping is paused if camera is moving relative to the car too much;
- Rain FX:
- Rain hits fade with distance;
- Rain spray in mirrors should no longer appear inside the car (clip distance increased);
- Windscreen UV generation reuses worker threads, should speed up the generation a tiny bit;
- AIs switching headlights according to Weather FX headlights suggestion should have some variance again;
- AC no longer spams
DInput input lost: when controller is lost;
- IMGUI: symbols
≤ and ≥ added to the glyph atlas;
Skipping LOD A for other cars option no longer forces Rain FX occlusion rebake;
- Render Stats app: relative subsections (those horizontal bars under the main graph) are meaningful again;
- Shading in mirrors without LCS active closer matches the main scene;
- Spam of log messages about HTTP2 and such is fixed;
- Custom driver models no longer require LOD B;
- Android Auto: timer fixed, clicking on the entire status block, not just the icon, opens the app;
- Windscreen reflection shaders preload, should help to prevent a lag when switching to an interior camera for the first time;
- CSP reporting errors for CM fixed.
- New car inputs:
AUTO_SHIFTING, MANUAL_SPEED_LIMITER;
- Emissive shaders, such as
smGlass_emissive, are compatible with mask pass;
- New
[_EXTENSION] FORCE_DOUBLESIDED_RAYCASTS=1 for surfaces.ini allowing tracks to enable double-sided raycasts for cars without extended physics (recent fix of that messed up some of the tracks);
- Custom AI:
- New
.v1 struct for car control allowing to set extra grip, stabilizer and custom ABS logic;
- New field for activating or disabling input smoothing;
- New
[DEV] DISABLE_AI_SMOOTH_STEERING disabling smoothing for Kunos AIs entirely, for debugging purposes.
- Common:
- New fields:
ac.getCar().anyFlamesActive, ac.getSim().bestLapTimeMs (global best time), ac.getSim().isMouseSteeringActive, ac.getSim().originShift;
- New
math.simplex(): a better alternative to math.perlin();
- New
ac.areShapesColliding() allowing to quickly check a couple of shapes (geometric and car colliders) for an intersection;
- New
ac.getUnreadChatMessages() to get the number of unread chat messages;
- New
ac.getCarBlindSpot() returning the distance to the nearest cars in blind zones;
- New event listeners
ac.onLapCompleted(), ac.onTrackPhysicsObjectCarCollision() and ac.onCarColorChanged();
ac.areCarsColliding() function has been moved to Common API;
- Functions
web.get, web.post and such now allow to pin HTTPS certificate or access its fingerprint (matches SHA-256 fingerprint in Firefox);
web.load… functions loading remote assets can set headers and pin HTTPS certificate;
- Functions
math.saturate() and math.clamp() (as well as …N versions) got a major performance boost, math.clamp() can handle a case where one of the limits is a vector and another is a number (an old bug);
- Function
table.same() no longer malfunctions with false values in associative tables;
- Pass
'deep' as a second parameter to table.clone() to make copies of vectors and colors as well;
- Old functions
ac.store() / ac.load() rewritten to be a bit more efficient;
ac.setHighBeams() works when binding is in held mode;
- Updating friend status with
ac.DriverTags() and ac.tagAsFriend() fixed;
ac.getSunAngle() updates online;
ac.getSim().timeMultipler is no longer zero online with WeatherFX conditions or a dynamic weather plugin (if time is actually moving);
- UI:
ui.setNextItemIcon() works with ui.beginMenu();
- Integrated tab bar: takes window settings button into account, style for the dropdown button updated;
- New
ui.beginPointSampler() / ui.endPointSampler() functions to swap IMGUI shader for the one using point sampler;
ui.keyboardButtonDown() works with sided buttons, such as left control;
- Scene API:
- Raycasting now takes ray length into account (except for AABB raycasting);
- Raycasting with NanoRT acceleration returns correct local position, UV, etc., builds accelerating structures in background;
- Removing nodes actively used by ExtraFX emissives shouldn’t crash AC;
- Physics API:
- New
physics.setAIStopCounter() stopping AIs for some time;
physics.RigidBody: collision callback returns car index, if any;
- IO:
io.load() releases file instantly, allowing to delete it after reading, for example;
io.recycle() fixed, actually recycles things now;
- New
io.findFile() returning an absolute file path to a file;
- Background and physics workers now support relative and absolute paths as well (working script directory will still be the same as the parent’s one);
- Workers kept alive by Lua Debug app still release the things they hold, such as event subscriptions, immediately;
os.runConsoleProcess(): new terminateWithScript = 'disposable' option can be used to get back an ac.Disposable instead, also, with that one set to false and previously undocumented assignJob it’s now possible to get a process to stay alive after AC has been closed;
io.extractFromZipAsync(): extra parameter for a crucial file to ensure full extraction (it’ll be extracted last with a different name and then renamed, so your code could simply check the file existance: as long as file is present, it means archive has been extracted in full);
web.loadRemoteAssets(): option to specify a crucial file name similar to io.extractFromZipAsync(), scripts with full I/O access no longer have file type restrictions, plus a bunch of fixes;
- Lua apps:
- New
ac.restartApp();
ac.exportLapTimesToCSV() is working, got an optional argument to specify filename;
- New Modes: use
[TWEAKS] HIDE_PITCREW to hide pit crews entirely;
- New functions in
shared/sim/cars for getting and altering base wheel positions for remote cars;
ac.onOpenMainMenu() can be receive other types of pages, for example, when ac.tryToOpenRaceMenu() is called;
- Lua Debug app:
- Option to use point sampler when viewing Lua textures;
- App now remembers the selected setting for rendering vectors across script reloads;
- Docs for some functions and fields updated, Lua plugin by sumneko now properly understands types of CSP’s
table. functions;
- LuaJIT synced with upstream (there were some small fixes).