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).

About that maybe-server-api

Discussion in 'Chit Chat Room' started by Minolin, Jun 11, 2015.

  1. Stereo

    Stereo Alien

    It's running on Google's cloud, so you can use a Google account to log into it. It uses their library. (from google import users)
     
  2. Minolin

    Minolin Staff Member KS Dev Team

    ah, you're talking about the list-admin user ^^ Well done
     
  3. Jaye

    Jaye Alien

    I just see some danger we'll get too much identical tools. That's number four after RSR, speedwise and raceme from what I expect to see something regarding whitelisting in the future ^^
     
    TCLF likes this.
  4. Stereo

    Stereo Alien

    I'm hopefully aiming to be in a different niche by being 'just the list' - I don't really know what the speedwise or raceme guys have planned, but this is meant for people who run their own server and have their own criteria for blacklisting/whitelisting people that's not worth building a complex program to implement. (eg. polite drivers, but not in a way you can measure by counting accidents)

    The most I'm planning to add is more ways to import lists - eg. pull down a whole group from the Steam api, or paste in a whole set of GUIDs at once.
     
    Hagen and Minolin like this.
  5. It has nothing to do with the network and it's related to how the server works. Currently as soon a new update packet is received from a car this gets broadcasted to all the other clients as soon as possible, so the server is adding, virtually, 0ms latency on the packet. The total latency between 2 client is exactly the sum of the ping of the 2 clients with the server.

    With the megapackets approach, when an update is received it is stored in the current car "status" waiting for the server next "tick". In the worst case scenario, the update arrives to the server right after a megapacket update was sent.. and will have to wait for the next megapacket server update to be sent. So, at 20Hz.. the latency between 2 clients becomes ping*2+ ~50ms . This can be mitigated having the clients send at double or triple rate of the server, to cut down this possible added latency accordingly... but it's never zero.
     
    Last edited: Jul 25, 2015
  6. AC servers admins can set the frequency themselves to what they consider valid.. I think our servers run at 20Hz. The way racing sim netcode and FPS style netcode is vastly different. For FPS games the server is actually playing the game to validate the state and working as broadcaster.. so that update frequency might be the frequency at which the game is played on the server.. which might give improvements.

    Race sims physics is simply too complicated to run on the server to validate, so servers are generally simply broadcasters that "trust" what they get from the client (thus all the cheating, the checksums and ****)... so the update really is the amount of traffic over the network.

    TBH I was seriously amazed when I added the possibility to lower the rate of sampling in replays in AC from 30Hz down to even 4-5Hz and still got a good results. This leads me to think typical racing movements might be ok at <10Hz .. IIRC LFS was running a default of 6-8Hz but don't quote me on this.
    At the end of the day, the real enemy is latency... update frequency is a smaller fish.

    So ya, to answer your question, it's all about the bandwidth, double the frequency=double the upload bandwidth.. with internet becoming faster (well, at least in more civilized places compared to where I live :p or used to live :D ) it's normal we see this kind of publicity stunt.. "bigger is better" is something that is easily understood by the masses.. so by saying you're doing a bigger number than before or than your competitor you win the pissing contest.. :D
     
    AJ McDaddy, Ben Lee and Thomas Gocke like this.
  7. WallyM

    WallyM Alien

    That's interesting because I'm sure in the evolution of the server, we in our Australian league went through a period, some versions ago, of buttery smooth online play (maybe when flow control was enabled), but it then reverted to being warpy.
     
  8. cooknn

    cooknn Alien

    Eager to see what you guys can create with this new API. I just hope that it gets deployed on some servers in my neck of the woods. From the looks of my speedtest, Fort Lauderdale, Florida would be perfect :D
    speedtest.png
     
  9. Ben Lee

    Ben Lee Alien

    Many thanks for the reply Stefano.
     
  10. Thomas Gocke

    Thomas Gocke Alien

    @Lord Kunos
    Is there a way to get the starting grid for a race? (Other than using the result of the previous session)
    As far as I can see you only get the leaderboard after a completed lap. Would it be possible to add the leaderboard to the NEW_SESSION event or have a separate RACE_START event with leaderboard and e.g. grip info?
     
  11. nonnex

    nonnex Alien

    never mind. solved. Doh! ;)
     

    Attached Files:

    Last edited: Jul 25, 2015
  12. I think this should be possible with the realtime report.
     
    Thomas Gocke likes this.
  13. Minolin

    Minolin Staff Member KS Dev Team

    @nonnex Solved? The error msg is still there, isn't it?
    @starting grid: Yep Neys, quite some handwork, a good task for a framwork

    -----
    For the notes:

    1. It's really great that we can even get the different temperature settings in NEW_SESSION, but maybe the Lord can add the track we're talking about as well? ^^ Didn't see this until now. Lol. Suggestion: Track[config] as string is pretty fine.
    2. We can request whispering chat messages to a CarId as well as Broadcasting a ChatMsg to all; but we don't see regular chat messages. Could we add this in an event like ACSP_CHAT_INFO (byte car_id sender, unicode message)?

    Edit: Not that big, both is workaroundable by watching the config and the log.
     
    Jaye likes this.
  14. Minolin

    Minolin Staff Member KS Dev Team

    Just checked in my last changes to the test-server and the C# plugin infrastructure. Doesn't look too bad now, but the client still needs some more work.
    Ignoring the fact that the plugin requests' deserialization gives wrong values this looks cool, like:
    upload_2015-7-25_15-20-16.png

    Thanks so much for this sample Stefano, it's really incredible what we already can learn. Basically amazing how good a piece of (well written) code works in communication. We didn't need a word so far.
     
    Jaye likes this.
  15. Thomas Gocke

    Thomas Gocke Alien

    you mean starting position? Could probably get it from the normalized spline position, yeah, but I think it would be cool to have it without real time report enabled :)
     
  16. nonnex

    nonnex Alien

    @Minolin : Yes solved, the problem was that I have started the server throu the automaticaly created icon, but as I have looked at the Preferences I saw that the icon is linked to its steamId. I have pointed it directly to the .exe or bat and gave administrative rights so everything is fine now.
     
  17. Thomas Gocke

    Thomas Gocke Alien

    May I also suggest to put the starting grid in the report json, as well as adding the position to the laps list so something like this is possible just from the json
    [​IMG]
     
    Jaye, nonnex and Minolin like this.
  18. Good catch, @Minolin :)

    This reminds me of one of the weaknesses of stracker: You have to restart stracker whenever the server is restarted. This is because this is the only way to synchronize with config file changes atm. I think it would be nice, if the plugins are able to survive a server restart. The really fail-safe approach to this problem would mean to have access to all server configuration items in a UDP packet. It's not really enough to know the location of the config file, because the config file can change asynchronously to server restarts.

    Another thing related to the newSession command is the problem, when you miss this signal (because maybe the plugin has been started too late), it would be nice if we could request a sessionInfo packet very similar to the carInfo packet. So a plugin started shortly after the server would still be able to get the information.

    Summarizing these ideas:
    1. Add TrackName and TrackConfiguration to the NewSession packet. If think, this really should be mandatory.
    2. Add a packet SessionInfo with the same information as NewSession (when this signal arrives, it doesn't mean that the previous session has ended in contrast to NewSession). This packet should be requestable from the plugin.
    3. Add a packet ConfigurationInfo with all configuration info from the server_cfg.ini file (if possible).

    Greetings
    Neys
     
    Jaye likes this.
  19. f_deutsch

    f_deutsch Hardcore Simmer

    Added PositionClass and PositionGeneral for the Laps
    Added QualClass and QualGeneral on the Results

    Code:
    {
       "Type" : "RACE",
       "DurationSecs" : 0,
       "RaceLaps" : 1,
       "TrackName" : "Silverstone",     /* new */
       "TrackLayout" : "International",  /* new */
       "Cars" :
       [
         {
           "CarId" : 0,
           "Driver" :
           {
             "Name" : "asd",
             "Team" : "asd",
             "Guid" : "ks145"
           },
           "Model" : "bmw_m3_e92",
           "Skin" : "black_red",
           "BallastKG" : 10
         }
       ],
       "Result" :
       [
         {
           "DriverName" : "Lord Kunos",
           "DriverGuid" : "ks1",
           "CarId" : 5,
           "CarModel" : "tatuusfa1",
           "BestLap" : 58598,
           "TotalTime" : 58593,
           "BallastKG" : 0,
           "PositionClass" : 1,    /* maybe for future use, when capable to identify different car classes */
           "PositionGeneral" : 1,   /* new */
           "QualClass" : 1,    /* maybe for future use, when capable to identify different car classes */
           "QualGeneral" : 1,   /* new */
           "LapsCompleted" : 1  /* new */
         },
         {
           "DriverName" : "Driver1",
           "DriverGuid" : "ks2",
           "CarId" : 1,
           "CarModel" : "bmw_m3_e92",
           "BestLap" : 999999999,
           "TotalTime" : 0,
           "BallastKG" : 0,
           "PositionClass" : 2,
           "PositionGeneral" : 2,
           "LapsCompleted" : 0
         }
       ],
       "Laps" :
       [
         {
           "DriverName" : "Lord Kunos",
           "DriverGuid" : "ks1",
           "CarId" : 5,
           "CarModel" : "tatuusfa1",
           "Timestamp" : 88602,
           "LapTime" : 58598,
           "Sectors" : [30668,   27930],
           "Cuts" : 0,
           "BallastKG" : 0,
           "LapNumber" : 1,  /* new */
           "PositionClass" : 1,    /* maybe for future use, when capable to identify different car classes */
           "PositionGeneral" : 1,   /* new */
           "InvalidLap" : false  /* if different from Cuts field, like 4 wheels out, but no cut */
         }
       ],
       "Events" :
       [
         {
           "Type" : "COLLISION_WITH_ENV",
           "CarId" : 5,
           "Driver" :
           {
             "Name" : "Lord Kunos",
             "Team" : "boh",
             "Guid" : "ks1"
           },
           "OtherCarId" : -1,
           "OtherDriver" :
           {
             "Name" : "",
             "Team" : "",
             "Guid" : ""
           },
           "ImpactSpeed" : 28.204433,
           "WorldPosition" :
           {
             "X" : 104.59276,
             "Y" : 191.02394,
             "Z" : 67.71219
           },
           "RelPosition" :
           {
             "X" : 0.87020576,
             "Y" : 0.08854308,
             "Z" : 1.7496352
           },
           "LapNumber" : 1  /* reference to when the event happen */
         },
         {
           "Type" : "COLLISION_WITH_ENV",
           "CarId" : 5,
           "Driver" :
           {
             "Name" : "Lord Kunos",
             "Team" : "boh",
             "Guid" : "ks1"
           },
           "OtherCarId" : -1,
           "OtherDriver" :
           {
             "Name" : "",
             "Team" : "",
             "Guid" : ""
           },
           "ImpactSpeed" : 37.87011,
           "WorldPosition" :
           {
             "X" : 158.783,
             "Y" : 188.2993,
             "Z" : 180.3633
           },
           "RelPosition" :
           {
             "X" : 0.8701962,
             "Y" : 0.08856083,
             "Z" : 1.7496443
           },
           "LapNumber" : 1
         }
       ]
    }
    
     
    Minolin, Jaye and Thomas Gocke like this.
  20. f_deutsch

    f_deutsch Hardcore Simmer

    Hi @Minolin, how can I test this apps you created? Sorry I had not 100% followed this thread. Being pretty busy with an application going into production so you can imagine the workload I currently have. Still I have some periods of inactivity, and while waiting for some results, I would like to understand what you currently have.

    Thanks
     

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