- Version ID: 3459
- Size: 119.12 MB
- Published: 2025-06-11
Changelog
New features, options and improvements
- Real Mirrors:
- New
Adjust FOV and squeeseoption improving the look of mirrors at grazing angles (enabled by default); - New
Accurateoption for correct mirrors projection; - A new tweak showing driver visor with high quality mirrors disabled, enabled by default;
- New
- OpenRGB integration replaced with a new
RGB Controlapp 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.
Fixes
Fully dynamicpits 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
kickvote, 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 carsoption 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.
Configs
- New car inputs:
AUTO_SHIFTING,MANUAL_SPEED_LIMITER; - Emissive shaders, such as
smGlass_emissive, are compatible with mask pass; - New
[_EXTENSION] FORCE_DOUBLESIDED_RAYCASTS=1forsurfaces.iniallowing tracks to enable double-sided raycasts for cars without extended physics (recent fix of that messed up some of the tracks); - Custom AI:
- New
.v1struct 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_STEERINGdisabling smoothing for Kunos AIs entirely, for debugging purposes.
- New
Lua
- Common:
- New fields:
ac.getCar().anyFlamesActive,ac.getSim().bestLapTimeMs(global best time),ac.getSim().isMouseSteeringActive,ac.getSim().originShift; - New
math.simplex(): a better alternative tomath.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()andac.onCarColorChanged(); ac.areCarsColliding()function has been moved to Common API;- Functions
web.get,web.postand 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()andmath.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 withfalsevalues in associative tables; - Pass
'deep'as a second parameter totable.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()andac.tagAsFriend()fixed; ac.getSunAngle()updates online;ac.getSim().timeMultipleris no longer zero online with WeatherFX conditions or a dynamic weather plugin (if time is actually moving);
- New fields:
- UI:
ui.setNextItemIcon()works withui.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;
- New
- 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(): newterminateWithScript = 'disposable'option can be used to get back anac.Disposableinstead, also, with that one set tofalseand previously undocumentedassignJobit’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 toio.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
- New Modes: use
[TWEAKS] HIDE_PITCREWto hide pit crews entirely; - New functions in
shared/sim/carsfor getting and altering base wheel positions for remote cars; ac.onOpenMainMenu()can be receive other types of pages, for example, whenac.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).