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.
  2. FOR ASSETTO CORSA COMPETIZIONE: If you report issues with saved games, please always zip and attach your entire User/Documents/Assetto Corsa Competizione/Savegame folder!
  3. If your game executable is missing, please add your entire Steam directory to the exceptions in your antivirus software, then run a Steam integrity check or reinstall the game altogether.

About that maybe-server-api

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

  1. Minolin

    Minolin Staff Member KS Dev Team

    Edit: Threw away the original topic and replaced it to a list of good ideas, requests and some noteable stuff.

    Solved requests

    + Add NormalizedSplinePosition to the ACSP_GET_CAR_INFO

    + format the json reports http://www.assettocorsa.net/forum/i...hat-maybe-server-api.24360/page-8#post-507023 (not really a request, but solved anyway^^)

    + insert the track (and layout) to the NEW_SESSION event

    + Add a requestable SessionInfo object that can be called e.g. when connecting

    + fix AUTH-blocked drivers use a slot
    Blocked guys are using the slot (also multiple times) when they are denied; AUTH blocking isn't currently used because of this

    + fix AUTH-string
    the first parameter isn't transformed properly:

    + add a protocol version number to all the packets

    + kick/ban players
    Kick is already solved, in general it would be cool if the plugin could just use all of the admin commands.

    + fix AUTH-lag
    The server seems to block any communication on an AUTH request, until it responed. Even server response times <10ms are noticable, due to the ping time to the server. Most obvious on australian servers -> european minorating.com (~350ms).
    Update: The problem has been reduced by @Lord Kunos , but is still there for servers requesting AUTH around the world (e.g. australians -> europe). Minorating will solve this by deploying local AUTH utility, but the design is still not that satisfactional. Would be great if the AUTH request just would not block the acServer (maybe with a fairly big timeout like 2-5s).

    Stefano-"Accepted" requests

    currently just collected, no priority or check if valid. Maybe they need discussions, details and whatever to raise the chances to be accepted.

    - pit players
    The plugin may use admin commands now. Great addition (for admins as well): Send & lock a driver to the pits, so he has direct chat access where he can read about the reasons. Kicking/Banning isn't remotely as helpful.

    - pit-penalty

    - Add a offtrack event (car_id, tyres_out)
    - OR add tyres_out to the carInfo

    - Add a LostControl event (car_id, maybe Position/SplinePos)

    - Add a requestable ConfigurationInfo so we don't need to rely on reading the config.ini (server isn't always in the same state)

    - server messages (not the chat ones)

    - pit stop information (pitlane+stop information)
    http://www.assettocorsa.net/forum/i...hat-maybe-server-api.24360/page-3#post-502027 and http://www.assettocorsa.net/forum/i...hat-maybe-server-api.24360/page-7#post-505320

    - starting grid info (should be able to hack)

    - embedd authorization into the UDP-Interface

    - UDP-message security

    - Add multiclass support (not every detail solved, though)

    - Add server identifier (e.g. hashed TCP port) to the AUTH parameters
    Currently the AUTH service has no idea who exactly calls in. Given the backend infrastructure, the IP address would give a rough idea, but most servers are running multiple acServers. A port would be a great distinction so a server, as it is unique per server IP.

    - insert track data like total length and corners
    Both can easily be noted in a lookup inside the plugin or the backend. Both won't change and it's worth just hacking them down per known track. For a safety rating calculation base it would be a good source of exploit.

    - more than 1 plugin, but this was disputed later and we probably come up with a redirector starting here. Redirector is currently built, so maybe not really a priority topic.
    http://www.assettocorsa.net/forum/i...hat-maybe-server-api.24360/page-4#post-502868 and http://www.assettocorsa.net/forum/i...hat-maybe-server-api.24360/page-5#post-503410
    Update: I've moved this to "declined", as the acServer probably won't ever do that. The task is quite complex (e.g realtime update intervals) and partially solved by different approaches (Proxy function in acPlugins4python + acPlugins4net, ACSRelay). I don't see that Stefano will invest time here.

    - change the n realtime reports to 1 fat message
    http://www.assettocorsa.net/forum/i...hat-maybe-server-api.24360/page-8#post-506866 answer by the lord http://www.assettocorsa.net/forum/i...hat-maybe-server-api.24360/page-8#post-506961

    Misc stuff

    - Message data overview

    - clever thoughs regarding performance rating plugins

    - First authorization backend system

    - Quicksart the R&D github project
    Last edited: Mar 1, 2017
    SvenUilhoorn and Pascal Martin like this.
  2. Minolin

    Minolin Staff Member KS Dev Team

    Wohoo, yes.
    Stefano had a chat about the plugins in S01E04. Will try to summarize:

    #1 He's working on features 1.2 for 3 more days, so the plugin system could be included
    #2 As the server is written in Go, there isn't much choice about plugin systems due to the lack of dynamic bindings
    #3 Stefano initially went with the Go-RPC solution, but threw that over board to replace it with a language independant UDP interface *yesyesyes*
    #4 We will see manipulation, as example the plugins can be asked if a user (Stefano talked about steam name, I hope steam ID is a parameter as well) is authorized. The textbook example that the API is aiming at the right things
    #5 In the stream he also hacked a client-sided collision detection. The result (collision partner + relative speed, later maybe position) is logged to the server and should be accessible via UPD (or a result json after a session)
    Epocx, wedge_one, tabis and 1 other person like this.
  3. nonnex

    nonnex Alien

    UDP is perfect, wow. This would open toally new local and remote possibilities.

    Can see the future PHP wrappers/libs already.
  4. Minolin

    Minolin Staff Member KS Dev Team

    Accidentially I'm planning 3 weeks vacations, hopefully the release overlaps. I'll do a C# wrapper.

    Just realized I bought a Rift for nothing
    Epocx and steno like this.
  5. nonnex

    nonnex Alien

    Yup, a C# option would be nice too, but I do have some http ideas currently, therefore PHP is my choice...
    Well lets see what the Cat will giv us for playing.

    PS: 3 weeks??? lucky you. Mine 2 weeks in the begining of august, but since I'm self employed and have to run a company I fear my vacation will not be without any work. dammit. If I would knew that before ;)
  6. ArYeS

    ArYeS Gamer

    I think many people don't understand how powerful this could be. I really hope we get it in 1.2, at least something that we can start to work with. We should make IRC or something, so we all help each-other out in first days trying to figure out available stuff.
    cooknn likes this.
  7. Minolin

    Minolin Staff Member KS Dev Team

    Take this thread, it's nice to have a log of the evolution of excitement
  8. Dominic28

    Dominic28 Rookie

    Sessions-results are really nice for leagues. I was trying to build something like this on my own. So this comes at the right time :)

    @nonnex I already got a small php wrapper for server data and will extend it with 1.2. Right now it just reads out session data and displays it like this:
    nonnex and snyperal like this.
  9. nonnex

    nonnex Alien

    I would wonder if not someone else had not the same intension todo a PHP Wrapper.
    There are UDP telemetry, Server web control tool, interfaces, League websites etc. already, so.

    But good to know, then I have to find another toy to play with, no need to double the work or maybe I can help on one or the other thing then.

    My thoughts where more organisation wise, like event enlisting, scheduling etc... liked to the server. But first we need to see what we will get.
  10. norbs

    norbs Alien

    Lets hope this helps with leagues. It isnt easy as it stands.
    Niki Đaković likes this.
  11. This will give a well organized league the ability to make a 'mini-iracing' service; complete with individual safety rating and performance rating. I am pretty sure that there will be the ability to join a server from a webpage, so with a server farm a workaround to not having track rotation availability could be implemented. (sorta like iracing; when a server shuts down another one starts up)
    Last edited: Jul 15, 2015
    wedge_one likes this.
  12. Ben Lee

    Ben Lee Alien

    So will the server plug-in autodownload to the client upon connection? That was such a great feature of past MP games I used to play.

    Otherwise all you are going to get is people trying to connect to a server and then getting booted because they don't have XYZ plugin etc.
  13. Minolin

    Minolin Staff Member KS Dev Team

    No, the plugins aren't like python apps and run exclusively on the server. This enables another dimension of meaning (and security).
    Auto-upload executable code is never a good idea. Don't let yourself fool from every website that needs javascript, this is like "million dead people can't be wrong".

    And you don't need a plugin to connect to that server; although the plugin can block you.
    Imagine RSR Live timing as a server plugin - you don't have a client, but your laptimes are recorded though.
  14. ArYeS

    ArYeS Gamer

    You mentioned server-side RSR, you could extend that that you don't let people join race if they don't have 105% of WR time in their RSR timings. And they have to join separate qualify server to prove they are "qualified" to join race server. This is easy-peasy.
    Niki Đaković and Kopiller like this.
  15. Ben Lee

    Ben Lee Alien

    Ok so it works differently then to say Counterstrike or Call Of Duty 1 where files / maps / plugins / aweMod etc would autodownload?
  16. Minolin

    Minolin Staff Member KS Dev Team

    Yep. It changes the behaviour of the server works, and therefore we can add elements Stefano doesn't want or can't do due to limited time.
    CS maps would really be like auto-upload modded cars, tracks and python Apps.
    Ben Lee likes this.
  17. Minolin

    Minolin Staff Member KS Dev Team

    I realize that the concept of the server API isn't obvious for everyone - of course not. It's sometimes not easy to come out of the corridor, sorry.

    A while ago I did a little writeup with some examples of what could be realized in a more-than-complete plugin system (we can't expect all that in a first throw). Maybe this sharpens the picture:

    7.1 PLP chat message plugin: simple handler that may be used to ignore the app broadcast messages, or invert the entry msg
    7.2 PLP server plugin: the same functionality, but centralized + server sided
    7.3 wreckers: Calculate and show ratings in order to votekick/autokick destructive people who ruin our online time
    7.4 rsr live timing server plugin: More reliable, maybe less bandwith/resources, more security against cheaters
    7.5 acSafetyRating: maybe some iRating clone
    7.6 sTracker server plugin: Laptimes, telemetry, championship management
    7.8 SteamGroup-Whitelist
    7.9 AdminBySteamId
    7.10 Autokick wreckers
    (for obvious things like reverse driving)
    7.11 Grid manipulation (random, reverse, last race)
    7.12 Autokick on unraceable ping
    7.13 Lock Midrace-Joiner
    7.14 steam name logging / client app
    : Add players as friends more easily!
    7.15 alternative kickvoting system (there was a cool report based system mentioned I couldn't find)
    7.16 Blacklist vote system
    7.17 chat systems
    : Group/league chat, whispers, admin chat w/o beeing on the server
    7.18 server sided replay generation

    But again, please do not freak out. We'll see a lot of problems that will be solved slowly, if at all. For example the whitelist-plugin might lead to users that cannot enter a server without having a chance to realize that before (unlike the locked-symbol for password protected servers). Kunos can't anticipate all problems efficiently, so this is a learning by experience thing.
  18. f_deutsch

    f_deutsch Hardcore Simmer

    Server api plugin would allow, if access to all cars stats is provided, to very nice livetiming web UIs. I did some long time ago for rFactor, including a track map and realtime car position. Would be nice to have that on AC.
    Pascalwb, Hany and Alessandro Greghi like this.
  19. Ben Lee

    Ben Lee Alien

    Simple things like;

    - server message "Welcome to XXX server" perhaps with rules displayed also.
    - display when a player connects.
    - display when a player disconnects.
    - How about a splash page when joining a server with information, stats, league info, "your admins are.....XXX" etc
    Niki Đaković likes this.
  20. wedge_one

    wedge_one Simracer

    Yes please. This is the kind of thing RaceDepartment would easily do. Tho I think track rotation is not that cool. I like iRacing system where you race the whole week on a single track.

    But overall this is great for AC, it's great that they're working on something like this. Like Stefano said on the Stream, it will make AC again a good (not to say great) choice for leagues - which is currently not.

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