bestsectortime() vs getbestsplittime() vs $prop('Sector2BestTime') disrcecpancy 0.001
Describe the bug ACC single player practice session replay. I am the only car on track. It is expected that output of function bestsectortime(2,false) and getbestsplittime(2) would output the same and match with $prop('Sector2BestTime').
Simhub version 9.3.8
Third party plugins No
To Reproduce I am not sure how can reproduce it. I can upload the replay if you would need to analyze and verify.
I open simple binding test put code: sec = 2 return ("" +"bestsectortime : " + bestsectortime(sec,false) +"\n" +"getbestsplittime: " + getbestsplittime(sec) +"\n" +"prop Sector2BestTime: " + $prop('Sector2BestTime') )
Expected behavior Expected that all would return same value, but the result is: bestsectortime : 00:00:37.4280000 getbestsplittime: 00:00:37.4270000 prop Sector2BestTime: 00:00:37.4280000
Screenshots
Log files Not uploaded, I will if needed.
Additional context I did not notice the ingame reported value so I dont know which one is "correct". I have not tested if this issue happens also on other sectors and functions, I just noticed it while I was creating my dashboard and experimenting with the replay.
Hi !
Overall ACC (and many over games) does not give all the data so some of them are "measured" on acc getbestsplittime bestsectortime are measured and kept during the race (as it's not available later), this uses an interpolation to know when the "end of sector" is crossed as well as the sector position itself.
Overall sub 1ms precision is what I measured which is rather correct for a data not provided by the game. Unfortunately simhub beeing 60fps (so 16ms interval between two captures it's hard to go even further.
You have also an effect depending of the combinations of the sum of the rounding and the rounding of the sum, for the data provided by the games it's all stored in individual splits so if you have two sectors let's say of 1.0006 + 1.0006 the total is 2.001, but once provided since it's rounded to the ms the game provides 1.000 + 1.000 which gives 1.000. The same way as previously this time due to the game rounding there can be one ms more or less which appears from time to time, and it's due to rounded data "resolution" loss.
The only reliable values up to the ms in that matter is total laps times which is not a data you usually cumulate with something other.
Thanks for the explanation. It's a unfortune that the game does not report the sector times and make my life a bit harder since I had a color logic based on these values. But I completely understand and it's a limitation that cannot be overcome on simhub side, but rather than on the game side. Hopefully future titles will have better sector telemetry.
Actually looking at rawdata from ACC NewRawData().Cars object I see the game reports sectords (splits) in ms for last and best lap.
... "BestSessionLap": { "LaptimeMS": 107195, "Splits": [ 34980, 37427, 34695 ], "CarIndex": 0, "DriverIndex": 0, "IsInvalid": false, "IsValidForBest": true, "Type": 2 }, "LastLap": { "LaptimeMS": 107195, "Splits": [ 35072, 37427, 34695 ], "CarIndex": 0, "DriverIndex": 0, "IsInvalid": false, "IsValidForBest": true, "Type": 2 }, "CurrentLap": { "LaptimeMS": 41755, "Splits": [ null, null, null ], ...
I just hope that you could may be find something and avoid "measuring" but use somehow directly the values from the game. Please close it if you decide, I might be wrong at all, and there could not be a way for improvement :)
bestsectortime and getbestsplittime are measured live, they don't correlate necessarily to either LastLap or best lap as they are individual splits so I can't use that data for this.
As you can see CurrentLap which is when we need it does not reports it : "CurrentLap": { "LaptimeMS": 41755, "Splits": [ null, null, null
Aha I see. For current lap in the NewRawData().Cars object splits are nulls. But the game actually exposes them in another object. NewRawData().Graphics. So hope is not lost yet :) There is LastSectorTime and its the live value in ms of the completed sector (cumulative) { ... "CurrentSectorIndex": 2, "LastSectorTime": 72500, ... } And this value is updated only when sector is completed.
For example when I complete sector 1 in NewRawData().Graphics.LastSectorTime I have 35072 (and this value matches with later (after lap is completed) data from NewRawData().Cars last lap splits) Then I complete sector 2 and check again the value 72500 - so making the diff 72500-35072 = 37428 So 37428 is the s2 time, but unfortunately here it does not match with later call to NewRawData().Cars (after lap is complete) in "Cars" source it is 37427 and calculated in "Graphics" source it is 37428 And here the hope is probably lost, when even in the ACC data itself there is mismatch.
I guess I am getting annoying to you, but if you could talk to Kunos (if they listen to anybody at all), probably they can fix it on their end :)