ACC Results Companion V 1.5.0 Released
Big update here, so put the kettle on and settle down to read with a nice cup of tea, and a Jammy Dodger if you're feeling adventurous.
Overview
This release has a few new things but is mainly about addressing annoyances – things that have irritated me for a long time, but I’ve never got around to fixing before.
Support for Challengers Pack DLC
The following cars are now supported
- Lamborghini Huracan ST Evo II
- Audi R8 LMS Evo II
- BMW M2 CS Racing
- Ferrari 488 Challenge
- Porsche 911 GT3 Cup 992
Class flashes on the race numbers have been updated to reflect ACC colours.
The ECU modes for the Audi have just been populated with figures from the previous EVO. I’ll get some proper figures when I have time.
I haven’t updated class records for the above classes. It’s sometimes difficult to find data and the classes don’t necessarily run on the ACC tracks, and if they do, they might run on a different layout.
Asynchronous Database Reads
A quick bit of background first. ARC uses SQLite as its database. The biggest restriction of this database is that writes obtain an exclusive lock on the database meaning that reads must wait until they complete. Previously, most reads were on the main (UI) thread. This meant that while busy write operations were in progress (initialisation, leaderboard updates and session completion) the UI would freeze for a few seconds.
Now, I’ve started to move the reads to be asynchronous. When a screen request is made, the UI will still be usable while waiting for the results to come back. While the screen is updating, you should now see a message to indicate that it is waiting for data
At the moment, only the most common areas for UI freezes have been addressed. I’ll gradually most the rest across.
In addition, it was found that some areas (eg session completion) caused the data to be refreshed multiple times, affecting performance. These should now have been addressed.
Finally, some of the initialisation tasks have now been made asynchronous to speed up the loading splash screen. As a result, the UI should be usable quicker, although may take a few more seconds for data to be available. There are a couple more initialisation tasks I want to move at a later date to further speed up start up.
UDP Rework
The Broadcast/UDP interface has always been problematic. After a time of running, it could go into a strange state stopping sessions being recorded and requiring both ACC and ARC to be restarted.
I’ve rationalised how the UDP connections are managed, how they are cleaned up and when new connections are required. This should make ARC more reliable when running for a long time.
Spectator Sessions
This is one feature that has been in the pipeline for a very long time and frankly has been a pain to implement. ARC normally uses shared memory to decide what to do, but for spectator sessions, ACC doesn’t update shared memory at all. To make it work, ARC will have a mode dedicated to just spectator sessions.
Spectator Mode should only be used if you want to connect to an ACC session as a spectator (you will need to know the spectator password of the server).
When in spectator mode, ARC will poll for active sessions, then start recording them. If the session type changes during a session (eg Practice -> Qualifying or Qualifying -> Race), this will be detected and the previous session will be written out. Note, if the server closes the session at the end of the race, the race will only be written out when you exit the server (as there is no other way of detecting the session is over)
Switch to spectator mode by selecting Spectator Mode from the drop down in the status bar at the bottom. Sessions will be flagged as Spectator in the online column and the car will be displayed as N/A as there is no player car.
Important Note: Switch back to Race Mode when you want to record your own races again, or they will not record correctly.
Selecting List View Columns
Selecting list view columns was previously a mess. The column names were unordered and for tables with a large number of columns it was hard to find the columns you wanted.
To recap, columns can be chosen by right clicking on the list view header.
Now columns will appear in the following order
- Displayed columns are displayed first, in the order they are displayed
- Hidden columns are then displayed in alphabetical order
Single Player – virtual driver name
For single player sessions, by default your ACC player name, nationality and driver category are displayed. If you want to see the virtual driver name, right click and select
Display Original Driver Name.
Now the virtual driver name, category and nationality will be displayed.
Driver Incident Points
This one is mainly because I’ve started to get into Low Fuel Motorsport and I think it is helpful to see how your currently race may affect your safety rating.
If you display the damage widget (see Overlays on the settings page), there will be an extra row added for incident points. This attempts to give an indication of the LFM incident points you will accumulate.
- Accident - 4 points (a cooldown of 10 seconds is used so only one accident in that period is counted in the case of multiple collisions)
- Off track - 1 point. Only 1 off track is counted per lap
Note, this is only an indication and may not completely reflect the number of incident points you do accumulate. Off track and accident notifications are sent by ACC UDP events and occasionally, they may be missed.
Other items
- Fixed format laps CSV export fixed
- To be consistent with other screens, the laps CSV export now supports variable column exports both as formatted and raw data
- Car brands added as optional column to laps
- Fix scenario where hotstint would generate a new session with just the last lap of the previous session
- ARC Leaderboards – Timestamp added to ARC leaderboard records so you can filter on when the records where made (and by implication which release they were on)
Known issues
The session summary screen may be a bit reluctant to display now (especially in SP races). Basically, the notification fires too early and may be received before the session information is written to the DB. This will be addressed in a future release.
Also, there appears to be an issue with re-ordering the selection of list columns for some users on some lists (eg laps). In the worse case, this will just be as bad as it was before, but I’ll see if I can find the cause.
If you restart a session (single player) after a lap is complete, ARC may fail to properly reset the UDP session. I need to work out the conditions for safely resetting the session without breaking everything else
Finally
Thanks again to all who have offered donations to help this little project. It is very much appreciated