SubStanding (Extended)

SubStanding (Extended) 2.16

Login or Register an account to download this content
Donate
Buy me a coffee via Paypal

Please support this modder with a small donation.

This app is an extension to https://www.racedepartment.com/downloads/substanding.4998/ by MegadetH_44 (who kindly gave me permission to publish my changes).

Install
To install this app it is recommended to use Content Manager by just dragging the zip over the Content Manager Window. You can also copy the "apps" and "content" directories into your AC folder. You need to additionally activate the app in Content Manager as usual, and then activate the individual widgets in game so that they are displayed.

Requirements
  • CSP (Custom Shaders Patch): >= v0.1.73
    • the app cannot be loaded with a lower version, or CSP being deactivated in the settings

SubStanding
This app offers multiple standings and position indicators in addition to a "relative" (alternative to Kunos "Realtime").
Deltas can be viewed as as time in seconds or distance in metric/imperial.

Widgets
  • Relative ("Realtime" alternative)
  • Global Standing (all drivers)
  • Global Position
  • Class Standing (drivers from the same class, manually defined beforehand)
  • Class Position
  • Same Car Standing
  • Same Car Position
  • (Configuration Widget)
widget_overview.png

All available widgets, not all possible values shown.

What makes this app different
The gap and interval calculations are pretty much the biggest differences to other apps. There are multiple calculation methods used, to calculate the times as accurately as possible.
  1. (Only in Relative) Live estimation based on the driver's "micro" sectors in their best lap
    • really accurate and live updating, even when you're not moving, e.g. in the pits / after a crash
    • used only in the relative widget, as this is really based on your times and will result in gaps specific to your pace
    • the distance and exact part of the map having to be travelled is used to calculate the gap based on how long it took you on your fastest lap
  2. Real interval times
    • uses the time passed since the leading driver passed the "micro" sector of the following driver (actual time measurement)
    • will not update if the driver behind is not moving (as no new sectors are passed)
    • different sectors might be compared between different drivers
      • e.g. #1 and #2 could e.g. use sector 10 as both have already passed 10, but for #1 and #5 the latest available sector is sector 8 (because #5 has not yet reached sector 9). So intervals between single drivers do not have to add up to the actual total gap displayed
  3. Speed and distance estimation
    • this is used as a fallback whenever not enough sectors are available to correctly calculate the times mentioned above
    • highly fluctuating in corners, so better than nothing and also what the original apps do, but not good
To make this possible mini (or rather micro) sector times of all cars in the course of the last lap will be stored internally. These sectors are not arbitrarily placed like the usual sectors but are exactly 50m long (except for the last sector completing the lap). This does not require a lot of resources, not even on huge maps.
This approach allows the app to be way more accurate than the official Kunos apps or the original SubStanding.

Settings
A lot of settings can be configured.
It is not necessary to show all windows, each window is a separate in game widget. Also all standings widgets have separate settings, so elements can be shown/hidden individually.

1669071307131.png
Full support to manage settings in content manager. All settings are additionally explained, when hovering the name.

Standings
The "standings" widgets display the best lap times during practice and qualification.
During races, they will display the distance (metric or imperial) or time between the driver in first (of that standing) and the others as well as currently used tyres and if people are in pit and their pit stop count during the race.

standing_items.png

Summary of displayed elements:
  1. Position
  2. Class Indicator
  3. Car Badge / Livery / Mini Skin (or combinations)
  4. Nation Flag
  5. Name
  6. Tyre
  7. Pit Stop Count
  8. Interval (to driver in front)
  9. Gap (to first or selected car)
  10. Best Lap
  11. Last Lap
  12. Latest Sector times (3 sectors in this case, dynamic based on the track)
It's possible to always show the top X drivers (e.g. top 3 as in the screenshot). This can be a helpful reference to see who is in the lead, whether they are fighting or if the leaders did already pit. These drivers will be displayed in addition to the usually displayed drivers (see screenshot) and will only be displayed if relevant. So the size of the widget might change based on the position in the race.

Relative Standing
The relative is inspired by the Kunos "Realtime" app or the Relative in iRacing or RaceLabApp.
In contrast to the standing widgets, the relative does not show the drivers in order of their overall position in the race but in their exact order on the track. So lapped cars might be in the mix (see example).
Additionally all interval values are relative to you, rather than the race/class leader. You can toggle a lap difference as well displayed in brackets after the time/distance.

There are colors used to indicate the position of the car relative to you (colors are configurable, see Colors/Distance colors configurations):
  • Cyan: yourself (or the currently viewed car)
  • Orange: drivers in front
  • Green: drivers behind
  • Yellow: drivers in front that lapped you
  • Blue: drivers behind that you have lapped
When color distance is set to a value > 0 the colors will fade to white the further other drivers are away.

Click to Spectate
Especially for spectators but also otherwise it might be helpful to easily switch focus to another driver. Per default you can click on the position in any standing to jump into the perspective of that driver. It's also configurable to have a click anywhere on the row do that, or disable it completely.

Classes
There are two different ways of using classes:
  1. use tag based dynamic classes
    • enabled by default
    • check "Use class tags"
    • allows specific class colors (optional)
  2. manually configure classes in the classes.ini
    • used if "Use class tags" is disabled
    • does not allow specific class colors
Option 1 (recommended): if enabled, you can define tags to be used to identify a class. See the bundled documentation/sub_standing_class_config.pdf for an in depth explanation. This approach is compatible with Track Map Display (Extended) class coloring.

Option 2: You can freely configure the classes in the file SubStanding_classes/classes.ini. Here is an example of what it could look like (some values are already prefilled):

[GT2 Class]
car1 = ferrari_458_gt2
car2 = bmw_m3_gt2
car3 = p4-5_2011

[GT3 Class]
car1 = mercedes_sls_gt3
car2 = mclaren_mp412c_gt3
car3 = bmw_z4_gt3


Mini Skins (replacing badges)
mini_skins.png

Mini Skins enabled to replace car badges.

To be able to get the correct mini skin displayed in game, you have to generate the images first.
Use the preview-preset contained in the downloaded archive. Install it by using Drag-n-drop over Content Manager window. Then check "Content Manager" - "Content" - "Tools" - "Update Previews" and generate previews for the just added preset.

The file for the mini skin can be named one of the following:
preview_mini.png, preview_mini.jpg, preview.png, preview.jpg

In the settings activate "Show badges" and "use Mini Skin" for the given standing.

Highlight Drivers
You can highlight certain drivers by adding their names to a list of "teammates" (cyan) and "rivals" (magenta). The list can be found in SubStanding_drivers/drivers.ini. Also drivers can be completely hidden from the lists by adding them to the "ignored" list.

rivals.png


Values for this example:

[TEAMMATES]
driver1 = Scott Pedder

[RIVALS]
driver1 = Marc Bousquet
driver2 = Philippe Jamoul

[IGNORED]
driver1 = Ignored Name


Positions
The "position" widgets are much smaller and give your position like the picture below. It can also be configured with the in-game configuration widget.
bv0Hotz.jpg


Disclaimer
I made the changes mainly for myself, but thought that others might want to use it as well, that's why I offer it here. I do not plan to actively maintain it and add features on requests. If they feel reasonable and I'm interestend in them, I might add them though.

Changelog (since v1.1)
2.1 +

See https://www.racedepartment.com/downloads/substanding-extended.51973/updates

2.0
Major
  • Added relative app (shows relative in all modes)
  • Changed time colors (orange in front, yellow in front lapped, green behind, blue behind lapped)
  • Added internal mini sector times (every 50m)
  • Base all time calculations on mini sectors (use estimations only if mini sectors are missing, e.g. in first round)
  • Estimate time difference in relative based on distance and these mini sectors, for accurate non-fluctuating gaps
  • Add last lap time (can be disabled) to non-relative standings
  • Added top split visualization for all non-relative standings (freely configurable how many players are displayed)
Minor
  • standings now always display time interval to leader rather then to the current driver
  • added lower alpha texts for lapped cars
  • allow colorDistance 0 for always full colorized
  • colorDistance only applies in relative
  • add bottom anchor functionality (if the number of drivers changes the bottom of the window will stay in the same position, useful for anchoring to bottom of the screen)
  • fixed the first lap distance jumping issue completely, including session resets
  • minor performance improvements (better string formatting, removal of unnecessary code)
  • removed +- signs for distances/times (as it added no additional info)
  • Refactor row label rendering into StandingsRow class
Known Issues
  • Performance: this app requires quite some CPU. A big part of that is rendering so many elements, the other part is to get and calculate the information of all drivers, to sort them correctly and display them in the different widgets. I already spent some time trying to optimize the code as much as possible, and this is where it's currently at. It could most likely be even better, but I think from here on, I would mostly kill the maintainable code for a few minor improvements.
  • In some cases (e.g on race starts, ports to pit) the mini sector times are not accurate and thus gaps can be invalid. There are some fallbacks implemented, so that distance/speed estimation is used in those cases and that this does not happen often at all. These issues usually heal themselves, if the drivers continue driving.
  • For estimations of deltas between drivers, the best indicator is the best lap time of the connected user. If you're spectating others and have not driven a valid lap yourself, these times might be more inaccurate, as it will fall back to interval times (that are delayed a short while) or distance/speed estimation.
F.A.Q
  1. I've edited the classes.ini / drivers.ini but now it's not working anymore.
    • It's likely that there is a small error in your changes. Check the C:\Users\<user>\Documents\Assetto Corsa\logs\py_log.txt content for messages containing "SubStanding Error". E.g. "SubStanding Error reading classes.ini". The message directly behind that could help you identify the error and fix it yourself. Otherwise, see #2.
  2. I've encountered a problem / the app crashes. How do I fix this?
    • I can try to help if you send me as much information as possible, preferably in the "Discussion" thread or via DM.
    • Answer the following questions:
      • Do I have CSP activated? (if not, do so, the App does not work without it)
      • What exactly do I have to do after a clean install of the app to encounter the problem? (Change some settings in game? Open a specific map? Use a specific car? Run in a specific mode? Offline/Online?)
    • Try to create the error again and afterwards extract the content of C:\Users\<user>\Documents\Assetto Corsa\logs\py_log.txt. Directly after you've encountered the problem again. The content of this file is replaced with every start, so do not start the game again before getting the content of the file.
      Send me this content via DM in additions to the answers from above. This is usually the most valuable information to find the problem.
Support
If you want to thank me with money or just need to get rid of it, feel free to send me a beer or something via PayPal
Without CSP a lot of the functionality wouldn't have been possible, so you might want to support Ilja for the work on CSP as well!

Latest updates

  1. V2.16

    prevent multiple resets on all standing cars in a row (will reduce CPU load while cars are on...
  2. V2.15

    fix state reset in weekend mode to reset best laps/sectors fix the initial classes calculation...
  3. Class Configuration using MapDisplay (Extended) v4

    With the MapDisplay (Extended) v4, the class configuration has become a lot easier, which even...

Latest reviews

Excellent app, it's one of my favourite apps and I use it regularly in my online races (LMF now) and it's constantly updated and a small required feature was added so the developer also reads and applies suggestions. If it has flaws, which are almost none, it's because there's no more that can be done with what AC currently delivers.
Clean and customizable. Overall very useful app!
This is a must-have app for any Assetto Corsa player - If you race on this game in any way, its fantastic ^~^
It has made multi class racing for me, even better than it already was. I dont have a single bad thing to day about it! :3
Good job dude!! Thaks!
I really love this app! thanks and congratulations! works very well and its light on screen for stream races!!
I just have a question is about multi class races... in the global standing it show you different color per class but the position is global for every car..... and when use the class table only shows the class I have as car but I am streamer and managing the tv cameras so I need to show the position in race per class, Can't find an option to this or to can open 2 standing tables per class, or that global tower show the positions per class.. is it possible? was reading but can't find, thank you!!
One of the best AC Apps!
very complete!!!!!
the app is beautiful and works like promissed BUT it makes the cpu time spike like crazy when it refreshes. so if I choose 1000ms it will spike my cpu time every 1000ms, making the fps really choppy, especially online when the game is cpu bound.
A
AW939
Well, tough rating to be honest. The CPU issues were there from the beginning (1.x) and are event documented in the "Known Issues".

I did a lot to improve it in version 2.x, but given it's an old python app, it's not really possible to improve it any further. The spikes might be higher as long as all vehicles are standing still (after a session change/before starting a race) as there are additional variable resets, but within a race it's really close to the absolute minimum a python app can achieve.

Feel free to rate it as you did, but I don't think that rating is anywhere close to being fair. (But I see your recent activity is all about spreading some bad ratings)
This is now my new favourite app
Mate this is the best app for Assetto Corsa- fantastic leaderboard - just excellent!!!!!!
Bro! You took a great app and made it even better! Absolute gem of an app and well presented. Worked straight of the the box.

Didn't give much but enjoy the coffee☕
A
AW939
Thank you very much, glad to hear you enjoy it!
Essential upgrade, great work
superb ty
Just a fantastic app, especially when used in conjunction of map display. Just makes multi class stuff so easy. Great support and consistently updated, and the app is so lightweight customizable
awesome mate, superthanks
Must have application, but I wish the "Ignored" drivers would also be counted towards results. I want to remove the lower class drivers from the list in an endurance race, but it may happen that this lower class driver is going to place higher and it would be good to know the TRUE position in the race.
A
AW939
Thanks for the review.
I'm not sure whether you've set up the classes in Subdtanding. If so, you could use the class standing instead of the global standing to only see your class, but with the correct positions.

Ignored drivers is meant to be used for non-drivers, like casters mainly. I'm not sure if a second option would be worth it if the class view is the only use case.
Looks great, but cant get it to work with CSP 0.1.79 and also not with older versions. Shows up in Apps in Content Manager but cant enable in game in any way
A
AW939
Thanks for the review. If you have problems with the app, please follow the FAQ and use the discussion section, so I can actually help. Leaving a bad review is really not the way to ask for assistance. I will check later but I don't think the app is incompatible with CSP 0.1.79
great Mod thanks.
Can you add Driver points standings over a career mode thanks again.
A
AW939
Thanks for your review! I've checked the documentation again and sadly don't see any way to get the points directly or at least know whether you are currently in a career event at all or not (and of course neither, which it is). So I could not even parse the related files to get the points. I don't think I could get this to work.
This is the best app for standings
The Greatest leaderboard app

Latest News

Author
AW939
Downloads
11,891
File size
1.6 MB
Views
68,105
First release
Last update
User rating
4.70 star(s) 33 ratings

More mods from AW939

How long have you been simracing

  • < 1 year

    Votes: 299 15.3%
  • < 2 years

    Votes: 207 10.6%
  • < 3 years

    Votes: 200 10.3%
  • < 4 years

    Votes: 150 7.7%
  • < 5 years

    Votes: 265 13.6%
  • < 10 years

    Votes: 229 11.7%
  • < 15 years

    Votes: 145 7.4%
  • < 20 years

    Votes: 117 6.0%
  • < 25 years

    Votes: 88 4.5%
  • Ok, I am a dinosaur

    Votes: 249 12.8%
Back
Top