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. Ben Lee

    Ben Lee Alien

    If you are referring to me, I raised the issue of the collisions as the side topic was about a safety rating, and considering that collisions are at the very core of what a safety rating is about, I felt it was worth raising, perhaps it wasn't.

    My apologies if it caused offense.

    Thanks,

    Ben.
     
  2. Minolin

    Minolin Staff Member KS Dev Team

    I think it was, we currently can only collect ideas and facts, so this is quite helpful (if not ending in a derailed thread).


    Thank you sir, you are right. Totally missed this point.


    But after some thoughts it really makes sense. The unit that controls and synchronizes isn't needed to be in Stefano's hands - on the contrary we can shorten communication about bugfixes and requests between the creators of the 1-5 "plugin managers".
    You could now say "that's bad because every plugin will be written excluslively for 1 manager". Yes, possibly. But it's also possible that every manager optionally pipes the UDP to remain language independant. After all this is a better design than e.g. the current Python API where we (as community) can do *nothing* without Kunos.
     
    Last edited: Jul 16, 2015
  3. That would be a really really bad design decision... Hasn't the go language be designed with parallelity in thought?!? In such a language, why would one create such an obvious limitation?
     
    f_deutsch likes this.
  4. f_deutsch

    f_deutsch Hardcore Simmer

    For me I think is both @Minolin. Basically the server plugin part would be some generated json/xml data feed that could be streamed or send as a file to a remote server from where can be retrieved. This data can be used in different forms, so there would be an app that exploits it, totally independent of the server plugin.

    As all mentioned the server plugin can be used to register user stats which can be used later to generate any kind of driving ratings. This would open the door to a vastly iRacing kind of leagues or communities, with its own unique rules of ratings and sanctions.
     
  5. mangal

    mangal Hardcore Simmer

    I may be able to help with that
     
    nonnex likes this.
  6. mangal

    mangal Hardcore Simmer

    Might be better the other way around: detect a deliberate disconnect with light or no damage, and deduct a bit. Could even do that on a lap completion rate, where quitting early is penalized more.
     
  7. Ben Lee

    Ben Lee Alien

    That seems quite negative though and I can see people being upset if they get accidentally disconnected for some reason. I personally think that a more positive approach to a safety rating is better, reward good driving, clean fast laps and finishing races but don't penalise people who get cut off from the server, or who spin out etc.

    I still worry about detection methods. In previous games I've been rear ended by an opponent and I've been the one who got penalised. Or what if you get rear ended, then in return you rear end the car in front, who gets the penalty?

    I do like the idea of a rating system, but I worry about its implementation.
     
  8. Good luck even trying to come up with a penalty system that can determine who is at fault; half the time human stewards can't do that.
     
  9. Minolin

    Minolin Staff Member KS Dev Team

    Second that. Important statement. Such automatic systems are a very sharp sword and can cause serious damage to a community or even the whole game, even if done (wrong) with good thoughts in mind. I really enjoy that we have (had) a lot time to think about it before we really get the tools.

    Here I developed a business-driven design where I'm pretty confident about. If I had to implement a penalty "notice" for your situation, I'd always give both drivers points. Yes, in most of the cases there is one who is clearly wrong, but you won't ever get this done in a fair way. Not even human marshals can always decide fair here.
    So the next stage is to announce fair and consistent rules without any doubts, the only way to go here. One exception is that my wreckers-plugin would build a collision tree (per timespan and position), where only the 2 root collision partners are penalized. Think of a typical T1 wreckfest in Spa.

    Positive side-effect: I would assume that people drive much more like real-life drivers when the system work that way: IRL, it's basically the same. If you don't dodge because you're "right", your car is still damaged; and your life is in danger.
     
  10. Stereo

    Stereo Alien

    I must have missed the bit about there only being one plugin at a time.

    Just emphasizes that there should be minimal requirements from the AC server plugin side of things to get the system running - probably just have it send the AC log over at the end of each race, and get driver ratings over plain http request containing the driver's steam id (with optional parameters to get car/server specific info).
     
  11. cooknn

    cooknn Alien

    Is Nim Cross still doing that over at iRacing?
     
  12. nonnex

    nonnex Alien

    Without an common agreement that apply for all, such an Rating system would not make much sense.
    Are the parameters for iRating (or other) accepted in common by all the Drivers, leagues and other servers?

    If yes, then it could be adapted, because it has proceeded the acceptance test already.

    If not, then I have some doubts if its possible to make a rating system that all single parties will accept. Well the leagues or server admins could just enforce it, but I can see the heavy and endure sh!tstorm already out there by the drivers that are not happy with it. As it always is when such systems are coming into play.
     
    Last edited: Jul 17, 2015
  13. f_deutsch

    f_deutsch Hardcore Simmer

    Well, you will never have everyone happy and trying to is a recipe for disaster. An interesting approach would be to have a rating system that can be parametrized, based on the different events the system can register. Like how 2 wheels or 4 wheels off track are considered. How a light or medium contact (if that can be differentiated) should be handled, how many "safety rate points" you get if you complete the whole race with no incidents, on same lap, etc. etc.
     
  14. Minolin

    Minolin Staff Member KS Dev Team

    What a nice quote :)
    In fact, this is exactly Stefano's problem you all describe. If he's implementing something, it has to be done very careful with a bazillion thoughts in advance; and in the end he'll still get a ****storm because you really can't ever satisfy everybody.
    Community-driven solutions have the advantage that they can (and should) compete, and the player base will force server admins to chose sensible solutions [Edit: Or configurations, like ferito suggests].

    So I'm quite relaxed regarding the "everybody happy" stuff. I'm still concerned beeing part of a development that looks good until it really hurts the community.
     
    f_deutsch, Kopiller and bigbawmcgraw like this.
  15. Minolin

    Minolin Staff Member KS Dev Team

    I've been asked several times how I imagine this plugin manager I'm often referencing (probably too abstract). Just played around a bit to discover, what my mind has in mind.
    Btw yes, I know I really suck at naming things. Call myself Minolin, that says it all.

    First of all the shared-definitions DLL:
    upload_2015-7-18_0-48-48.png

    Fun part is the AcPluginBase which declares empty, virtual events that can be overridden by the real plugins. Formatted screenshot for better imagination:
    upload_2015-7-18_0-50-6.png


    Then I did a fake sample plugin that could restrict server access to our steam group (a better example would be a call to the safety-rating backend)
    This project references the first one, in a real world it would just reference the acPlugins4net.dll. One class has to implement the AcPluginBase (with accessible default-constructor):

    Then the plugin author just needs to overwrite the needed methods, in this case we'll initialize a fake SteamGroup reader (who get's the linguistic joke?) in Init()
    and populate AuthorizationRequested() with a simple comparison. The SteamReader would connect to steam and check wether a steam ID is part of the group and politely decline if not.

    upload_2015-7-18_0-53-54.png

    What I have so far isn't different to the C# framwork I would have done even if the UDP-API could server multiple plugins. The difference will be the usage of the AcPluginBase. I'll go on hacking a sketch of the UDP Interface /Plugin-Control tomorrow. At least I hope so, there is a tree to saw as well ;)
     

    Attached Files:

  16. mangal

    mangal Hardcore Simmer

    Which is why I said deliberate disconnect.

    The point of impact and speed from all cars involved and track location should be able to give some idea with collisions, though you will likely have to have a category of "indetermined" or "race incident" for anything where you can't decide who might be at fault.
     
  17. I think a portable interface (between multiple languages) would be a better approach. Still I hope that KS will allow multiple plugins.
     
  18. MrGiggly

    MrGiggly Racer

    Just my two penneth on 'who's at fault' coding. If you don't apply incidents to both parties equally you open up a whole can of worms for exploits.

    Unfair and unsafe manouvers such as brake checking and swerving by a lead car with no consequence? No thanks!
     
    Minolin likes this.
  19. Maybe it would be possible to create a "redirector" plugin which doesn't change the UDP semantics at all, so for plugins it would be the same connecting to AC server or connecting to the redirector. Without knowing the API it is difficult to see if this would be possible or not. I would like this much more than a .NET approach (linux might be an issue for that as well).
     
  20. Stereo

    Stereo Alien

    Yeah I was thinking that the plugins could just behave like a proxy - the first one gets the 'real' ports, the next one just gets the ports of the proxy but the interface is identical both ways (although if the plugin wants to do something, it'll change that state on the way back to the server)
     

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