1. Do you need support for Assetto Corsa Competizione? Please use the proper forum below and ALWAYS zip and attach the WHOLE "Logs" folder in your c:\users\*youruser*\AppData\Local\AC2\Saved. The "AppData" folder is hidden by default, check "Hidden items" in your Windows view properties. If you report a crash, ALWAYS zip and attach the WHOLE "Crashes" folder in the same directory. Do not post "I have the same issue" in an existing thread with a game crash, always open your own thread. Do not PM developers and staff members for personal troubleshooting and support.
  2. As part of our continuous maintenance and improvements to Assetto Corsa Competizione we will be releasing small updates on a regular basis during the esports season which might not go through the usual announcement process detailing the changes until a later version update where these changes will be listed retrospectively.
  3. If ACC doesn't start with an error or the executable is missing, please add your entire Steam directory to the exceptions in your antivirus software, run a Steam integrity check or reinstall the game altogether. Make sure you add the User/Documents/Assetto Corsa Competizione folder to your antivirus/Defender exceptions and exclude it from any file sharing app (GDrive, OneDrive or Dropbox)! The Corsair iCue software is also known to conflict with Input Device initialization, if the game does not start up and you have such devices, please try disabling the iCue software and try again. [file:unknown] [line: 95] secure crt: invalid error is a sign of antivirus interference, while [Pak chunk signing mismatch on chunk] indicates a corrupted installation that requires game file verification.
  4. When reporting an issue with saved games, please always zip and attach your entire User/Documents/Assetto Corsa Competizione/Savegame folder, along with the logs and the crash folder (when reporting related to a crash).

Let's talk about broadcasting (programmer's thread)

Discussion in 'ACC General Discussions' started by Minolin, Dec 12, 2018.

  1. Cirith Ungol

    Cirith Ungol Simracer

    Thank you guys so much ! I'll try the DIY method as it gives me more freedom with what I can do next. :D

    Update : I managed to get it done, thank you guys !
    upload_2021-2-10_10-48-39.png
     
    Last edited: Feb 10, 2021
    cestcomi and expor like this.
  2. Hi all,

    I've created a javaFx program that connects to the udp stream to record and story laptimes/incidents/weather etc an can generate pdf reports of a session.
    It's open source and you can check it out here: https://www.acc-recorder.be/.

    It's still WIP and I'm adding new features when I have the time to do.

    Robby
     
    AndyK70 and Cirith Ungol like this.
  3. sps_for_race

    sps_for_race Alien

    Your tool is not for broadcasting, right?
     
  4. Yes and no, one of the features I like to add is to write events to a file so that OBS when live streaming can show these events during the stream.
     
  5. mgjelsoe

    mgjelsoe Rookie

    Anyone found a proper fix for removing Driver that has disconnected with ksBroadcastingTestClient??
     
  6. expor

    expor Gamer

    I'm about to implement that in my app this weekend. I have noticed the message order is always; RealtimeUpdate followed by N RealtimeCarUpdates.

    My idea is to create a second list to just store Car id's. On the first RealtimeUpdate I'd empty the list and add the car id's for each RealtimeCarUpdate I receive after that. Then on the next RealtimeUpdate I can compare the new list with the existing EntryList and see for which car I did NOT receive an update. For every removed Car id I will send a 'CarRemoved' event (or something like that) since this data is processed on a remote backend, which then publishes it to all webclients. If you run the app locally I guess there's simpler ways to remove the item from the GUI directly.

    Since I work with 2s time intervalls this should be robust. For very high frequence there might be timing issues (never tested), so you could allow for 1-2 missed updates before removing it.
     
  7. mgjelsoe

    mgjelsoe Rookie

    It's running locally, right now i'm using the fix from Brado23....
    It could be nice if @Minolin would update the SDK.
     
  8. expor

    expor Gamer

    Ah yes I see he's doing something very similar indeed. I have to implement it on a remote server but my idea was indeed the 'same'. Ideally a CarRemoved event would be best but we can only hope...
     
  9. expor

    expor Gamer

    It would also be great if we can have sector times for current lap... Gap times are hard to calculate (does someone have a good implementation?) without a lot of fluctuation (std method is spline distance difference and translate that to track distance, take chase car speed and get a time out of that) due to track layout. For me it'd be more than sufficient to base the Gap on sector delta's, but they're only available for LAST lap, not for current lap (not for all cars anyway, only from shared memory for player car)...
     
  10. Fabio Pittol

    Fabio Pittol Gamer

    We discussed a bit here: https://www.assettocorsa.net/forum/index.php?threads/broadcasting-company.53788/page-5#post-1182090

    So far, the idea of splitting the track length into multiple, smaller, sectors and then running a loop for each car, checking from the running laptime and storing that. Might be a little complex and/or "a bit too much processing". But it's the farthest the brainstorming went. Although, there might be a caveat on this. I didn't get to test it, so I dunno how imprecise it would turn out to be, but if you think about it. Considering we get the data from a fixed rate and each car is running at variable speeds, even if we divide a 5000m track into 50 x 100m pieces, at a given refresh rate, it might return 130m for a car, or 80m. How to tackle that? Round it? Would it give gap fluctuations as much as the "easy method"?
     
  11. expor

    expor Gamer

    Well that makes sense, as using sectors is basically the same concept (just bigger intervals). My app works at 2s interval though as it's for team based endurance and a higher frequency is just not needed. Implementing my own (mini) sector timing would not be very accurate with a 2s interval :(.
     
  12. Iko Rein

    Iko Rein Gamer

    In my tool I use something like the minisectors for the timedelta, as explained above. What I do is that I store the total event running time for each car per the start of each minisector. The length of the minisector is adjustable from 1m to 500m (think about 5 laps online race vs. 10h endurance race). This data is in a large array and each column is filled in the order the cars pass the start of minisector and I can then calculate the timediff up and down with simple index calculated per total distance driven by the cars and selecting the correct column and correct rows. This works pretty well with other games, with ACC there is the issue of "realitimeness" of the broadcast data, so with ACC one is better served with bit longer minisector lengths as opposed to e.g. F1 games, where it works super even with the 1m intervals.

    Here is link to a bit "longer explanation" at https://forums.codemasters.com/topic/50942-f1-2020-udp-specification/?tab=comments#comment-522104

    So adapted to your situation with the 2s intervals, the distance between datapoints is maybe max 160m and you could "extrapolate" bit the total distance based on where the minisector start is between the two datapoints using e.g. acceleration etc. Would still be sufficiently accurate especially on endurance racing.

    Cheers.
     
    Last edited: Mar 9, 2021
    Fabio Pittol likes this.
  13. expor

    expor Gamer

    Thanks for the elaborate explanation. It makes sense indeed and probably would work for endurance races with some adjustments for the 2s data interval. Still not sure I want go this way (despite your memory calculations which seem reasonable) but at the same time I don't have high hopes of getting the updated sector times on the fly. I will think about this ;).
     
    Toon Knapen likes this.
  14. Iko Rein

    Iko Rein Gamer

    You could get the sector times of current lap for all cars on the fly.

    This is what I do, as my tool provides the S1 + S2 times for the current lap too for all cars
    - I have the track data from my tool's track maps and can automatically get the Sector borders, i.e. spline distance for each sector end.
    - I hold sector times in an array float[MAX_CARS][MAX_SECTORS]
    - When a car passes the sector border splinetAt(n-1) < SectorBorder < splineAt(n), I do some little calculations/extrapolations and set the cars laptime at sector border to the correct row and column in the sector times array
    - When the car passes from 2nd to 3rd sector, I can calculate S2 time by subtracting from the S2 endtime the S1 time.
    - This is sufficiently accurate, but sometimes can be few .01s off from the game's times.

    For the sector end spline distances, if you don't have the track map data, you can drive e.g. 10 laps and store the spline positions before and after each sector change and then take the biggest before value and lowest after value and maybe get midpoint between those distances to set the sector end spline position. This is what I used to do in early versions of my tool, i.e. I had a track data with the sector end distances stored. But when you support 10+ games, I wanted to get something more automated, thus using the data from the track map data is super easy way.

    Cheers
     
    mrpbody and Toon Knapen like this.
  15. expor

    expor Gamer

    Great input, again :). I'd have to do some sample calculations but I would think with 2s interval the deviation would be more than 0.01s. Also I think on several tracks the sector borders are not on the straights so interpolation (esp. with 2s interval) wouldn't be very accurate. Then again, neither is my current approach of the distance/speed as per the SDK example. Actually knowing the exact sectors doesn't even matter then, so I'd end up with a hybrid between what you first suggested and your last suggestion. I don't need exact sector times, but I can define a few spline positions that act as such. It might mean some 'badly' placed sectors w.r.t. corners but having 3-4 intervals per lap is more than sufficient in my opinion.

    I will put some thought into this and probably combine a bit of both, because the current variation is just too high due to speed changes.
     
  16. Sry for distracting the last topic about gaps, just to be complete, I double checked the ones available on the game and the missing ones on current version are:

    Code:
    iran = 78
    bahrain = 79
    zimbabwe = 80
    chineseTaipei = 81
    chile = 82
    uruguay = 83
    madagascar = 84
     
    mgjelsoe and Doug Duthie like this.
  17. Minolin

    Minolin Staff Member KS Dev Team

    correct, I've just put this into the broadcasting client - will be updated with the next release. Thanks for the heads-up

    Code:
            Iran = 78,
            Bahrain = 79,
            Zimbabwe = 80,
            ChineseTaipei = 81,
            Chile = 82,
            Uruguay = 83,
            Madagascar = 84
    
     
  18. mgjelsoe

    mgjelsoe Rookie

    Github/Gitlab the source, easier to update.
     
  19. expor

    expor Gamer

    RealtimeUpdate.Clouds, RealtimeUpdate.RainLevel and RealtimeUpdate.Wetness are all 0 now. The last time I tested and checked this was with the patch that introduced the track grip level Enum in shared memory. One of the last 2 (or 3) patches seems to have broken this?
     
    Last edited: Mar 20, 2021
  20. pankykapus

    pankykapus KS Dev Team Staff Member KS Dev Team

    It's removed by design, you can use the HUD widgets or the shared memory enums, weather is no longer quantified.
     
Similar Threads
Forum Title Date
ACC Hardware Discussions Giving back for ACC 1.8: Let's talk about multi-class, multi-hour, full grid simulation? Dec 10, 2021
ACC Physics Let's talk about spins... Apr 2, 2021
ACC PS4/PS5/XB1/XBX/S General Discussions Let's talk multiplayer/online servers Jul 11, 2020
ACC General Discussions Let's talk about broadcasting (user's thread) Dec 12, 2018
Console Lounge Let's talk vote to kick Mar 18, 2017
Console Lounge Quick race weekend (let's talk abou it Vol.1) Feb 24, 2017
Chit Chat Room Let's talk Lotus 98T Feb 17, 2017
Console Lounge Porsche Cayman GT4 - Let's talk gearing Jan 16, 2017
Console Lounge Let's talk about rage quitters... Dec 9, 2016
Chit Chat Room 935/78 - Let's talk setup and driving Oct 30, 2016
Console Lounge Let's talk about braking Oct 6, 2016
Suggestions Let's talk weather (I am not asking for rain). Aug 15, 2016
Chit Chat Room Let's talk wheels...again. why not? Aug 27, 2014
ACC PS4/PS5/XB1/XBX/S General Discussions Let's hope this does the trick Dec 16, 2022
ACC PS4/PS5/XB1/XBX/S General Discussions Let's do something, this is going to get ugly...(Servers) Aug 3, 2020

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice