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

Server plugins: neys's wishlist thread

Discussion in 'Chit Chat Room' started by never_eat_yellow_snow1, Aug 9, 2015.

  1. So here is my wishlist thread for stracker:

    New information I wish was included to the API:
    • [new] message when a car enters or leaves pitlane
    • [new] Message when a car enters or leaves pits.
    • [CarInfo] Add the assists used by the player to the CarInfo object (i.e. AutoClutch, AutoBrake, AutoGear, AutoThrottleBlib, RacingLine)
    • [NewSession] Add track name / track layout
    • [LapCompleted] Add TotalTime (same as in the ENTRY html page) of the driver (not necessarily to the leaderboard)
    • [LapCompleted] Information about which tyre a car uses in the lap completed messages (maybe with just an enum for the new (S), (SS), etc. codings)
    • [CarUpdate] Add the number of tyres out to the realtime messages
    • [CarUpdate] Add CurrentTime to the realtime objects, if possible (equivalent to what we get in the clien's shared memory interface acpmf_graphics.currentTime)
    • [CarUpdate] Add ABS and TC levels to the realtime object
    Changes of the current messages:
    • Change number of bits from 8 to 16 for the Laps member of the leaderboard (because the limit of 255 might easily be reached in endurance races)
    New interaction possibilities:
    • Possibility to kick a player
    • Possibility to ban a player
    • Possibility to send a player to pits
    • Add a requestable SessionInfo object equivalent to NewSession object (but requestable by the plugin)
    • Add the possibility to set the number of laps or session time for next session
    • Add the possibility to set the type of the next session (practice, qualify, race)
    • Grid manipulation for the next session
    Version information:
    I'm fine with your proposal for a requestable version message.
    Many thanks for your cooperation, Stefano! This is really highly appreciated.

    Forum:
    It would be nice to get a forum section to discuss this stuff :)
     
    Last edited: Aug 9, 2015
    coret3x, ChokDK, phil and 7 others like this.

  2. Similar Threads
    Forum Title Date
    ACC Multiplayer ACC server plugins Oct 24, 2019
    Multiplayer Bugs & Issues Multiple server plugins Mar 18, 2016
    Programming Language - Apps - GUI Themes Acsrelay - connect multiple udp plugins to the server Sep 28, 2015
    ACC Multiplayer CP Server - No servers in your region. Wednesday at 9:04 PM
    ACC Multiplayer [ALG] Server startup (need staff/interested persons) Apr 27, 2024
    ACC Troubleshooting Cant fetch any server (since UTC 1200 Sunday 21 Apr 2024) Apr 21, 2024
    ACC Multiplayer ACC dedicated server race start hangs, but only on Nordshleife Apr 13, 2024
    ACC Multiplayer ACC Server Setting Apr 7, 2024
    ACC Troubleshooting Dedicated Server Not Working After Update Apr 4, 2024
    ACC Multiplayer Missing information in ACC Server Admin Handbook Version 1.10.0 Apr 3, 2024
    Bug reports Lap 0 Laptime is way off! Multiplayer Server Mar 17, 2024
    ACC General Discussions An official Assetto Corsa discord server please. (iracing, raceroom, and gt7 has one) Mar 16, 2024
    ACC Multiplayer Communicating with accServer.exe (previously acRemoteServerUDP) Mar 14, 2024
    ACC Multiplayer Unplanned multiplayer server outage Mar 13, 2024
    Multiplayer Bugs & Issues Time of Day adjustment on AC Server Maker stuck at 8:00-18:00 even though I have full version ACCM Mar 2, 2024

  3. Minolin

    Minolin Staff Member KS Dev Team

    Sorted by personal "need" factor:

    [new]Possibility to send a player to pits (and lock him like the penalty does). This is superiour to every other action: The drvier can read the chat if he missed something; he is punished but always can get another chance after reading messages, he's effectively out-of the way. I think about a wrecker that is sent to the pits for 8minutes, then get's out again and is instantly sent back for 10 minutes due to the first contact. This is much better than plainly kick/ban him.
    ...
    ...
    ...
    [NewSession] Add track name / track layout and server name. Currently we check the .ini file, but there are system that copy&paste them around.
    [new] Add a Offtrack Event (car_id, splinepos, numbersOfTyresOut). Yes this is hard and new, but it would be a great help to judge consistancy, acciedents and create new "game types" like consistancy races.
    [new] ChatMessages including "/commands" (car_id, message). Users could simply interact with server plugins, like /rating could give your minorating stats and the admin app could chat via server messages to reduce the need of the chat.
    [new] message when a car enters or leaves pitlane. Yes please. Pitlane penalty apps/plugins as well as a reliable "time on track" determination.
    [new] Add a LostControl event (car_id, maybe Position/SplinePos). Could be triggered if the difference in x, z between car facing vector and velocity vector is getting too high. Both should be part of the regular Server-Client car info

    [new]Grid manipulation for the next session
    [new]Add the possibility to set the number of laps or session time for next session
    [new]Add the possibility to set the type of the next session (practice, qualify, race)

    [new]Possibility to initiate a kick-vote (or vote in general). If the plugin isn't really sure about it's actions, it still can ask drivers.
    [new] Add a requestable SessionInfo object equivalent to NewSession object (but requestable by the plugin). It's great that we can switch/update the plugin on-the-fly, but they (at least mine) do need a newsession to get a defined state
    [CarUpdate] Add the number of tyres out to the realtime messages (if not solved by Offtrack event)
     
  4. f_deutsch

    f_deutsch Hardcore Simmer

    Good thread for posting plugin requirements, thanks @never_eat_yellow_snow1 for the thread. Hope you do not feel we are hijacking it.

    ACSProtocol.ACSP_NEW_SESSION
    - Include track name and track configuration, just like the session result JSON file generated by acServer. I am currently complementing what my plugin generates with this JSON file, but will be hand to include it on this event.

    ACSProtocol.ACSP_END_SESSION
    - Sometimes, I cannot read (always using readonly mode) the acServer generated session result JSON file. It seems the file is still being written by the time this event it called. I set a 2 seconds delay before attempting to read the file. Not big deal but something you may need to know. May be a timing issue.

    ACSProtocol.ACSP_CLIENT_EVENT
    - For every contact between two cars I am always getting two events, with the same cars and with the different speed for each car, which is fine. What I would like to have is include some kind of server timer "tick" or someway to identify at what time on the race the contact happen. In this way we can identify if both events represents the same contact in order not to register two contacts for both drivers. Even if the tick is different, we could apply some threshold to know if both events represents the same contact.
    - Include the lap number and splinepos when the event happen

    ACSProtocol.ACSP_LAP_COMPLETED
    - Include the number of laps on the header information (after the laptime or cuts). I know the info comes also on the leaderboard, but it will be easier to access.
    - If possible include the sector times (as an array, seems to be very popular on some sites that shows stats)
    - As already mentioned, change the number of laps of the leaderboard collection from Byte to UInt32 to support long number of lap races.
    - Include the tyre type used, both on the header (after the laptime or cuts) and on the leaderboard for each driver
    - Not sure if welcome, as already being included the grip level, include the ambient temp and road temp, if they change going through the race, which I am not sure it happens.
    - Include fuel level in liters

    [NEW] ACSProtocol.ACSP_PIT_ENTRY (for proper count of pitstops)
    - Include, carId, guidDriver, lapNumber, server time or tick (to calculate pitstop time, optional)

    [NEW] ACSProtocol.ACSP_PIT_EXIT (for proper count of pitstops)
    - Include, carId, guidDriver, lapNumber, server time or tick (to calculate pitstop time, optional)

    [NEW] ACSProtocol.ACSP_CLIENT_OFF_TRACK (handly for generate driver rating)
    - This is similar to CLIENT_EVENT, but used to identify the off tracks
    - carId, guidDriver, lapNumber, number of tyres of track, splinepos (helpful somehow to measure the distance between off tracks for rating)

    [NEW] ACSProtocol.ACSP_CLIENT_LOST_CONTROL (handly for generate driver rating)
    - This is similar to CLIENT_EVENT, but used to identify lost of control (probably just a 180 spin)
    - carId, guidDriver, lapNumber, angle delta from track direction?, splinepos (helpful somehow to measure the distance between off tracks for rating)

    I know some of this information could be set on the ACSP_CAR_INFO event, but I would prefer to have them already included on the mentioned events, as using ACSP_CAR_INFO can be hard when trying to sync the data from the source event with the requested ACSP_CAR_INFO at many times.

    Interactions to the server

    Apply a blackflag, a stop & go pit penalty or a drive through to any driver.

    @Lord Kunos thank you so much for listening to us. Hope this feedback would be useful for you. Any questions or comments please let us know. Can reach me also on twitter if for any hurry.
     
    Last edited: Aug 9, 2015
    Tberg and never_eat_yellow_snow1 like this.
  5. THX guys.. I will update this POST with the changes I am doing in real time. The plan is to release 1.2.3 later today which will include all the changes to the UDP protocol up to that point. Then we'll have a server only release tomorrow with the changes I'll manage to put in tomorrow as well. So get ready for some refactoring :)

    UDP Plugin changelog:

    - Added ACSP_VERSION both as command and as incoming message.
    The server fires one up at startup (assuming the plugin is already there), you can also later re request the protocol version with an ACSP_VERSION command. However, I've also added the protocol version number to the ACSP_NEW_SESSION message because that used to be the entry point for the plugin.

    - ACSP_NEW_SESSION has now a brother ACSP_SESSION_INFO
    ACSP_SESSION_IFNO is more generic because it can be requested by a couple of commands and also return information about the next session.
    This is how it is deserialized now:

    var version = br.ReadByte(); // UDP Plugin protocol version, in case you miss the first ACSP_VERSION message sent by the server at startup
    var sess_index = br.ReadByte(); // The index of the session in the message
    var current_session_index = br.ReadByte(); // The index of the current session in the server
    var session_count = br.ReadByte(); // The number of sessions in the server
    var server_name = readStringW(br);
    var track = readString(br);
    var track_config = readString(br);
    var name = readString(br);
    var type = br.ReadByte();
    var time = br.ReadUInt16();
    var laps = br.ReadUInt16();
    var waitTime = br.ReadUInt16();
    var ambient_temp = br.ReadByte();
    var road_temp = br.ReadByte();
    var weather_graphics = readString(br);
    var elapsedMS = br.ReadInt32(); // Milliseconds from the start (this might be negative for races with WaitTime)

    - New ACSP_CHAT message
    Called every time a chat message is received by the server. Useful to interact with the plugins.

    - New ACSP_CLIENT_LOADED message
    Fired by the server when the first position update arrives from a client, which means, it's done loading

    - New ACSP_GET_SESSION_INFO command
    Use this to request a session info packet to be sent by the server

    - New ACSP_SET_SESSION_INFO command
    To change name, laps, time, wait time of a session. In theory this can change also the current session, but the client is not aware of that at the moment. This will open the door to have time limited races, although the support would be much more clearly implemented natively in AC and I have plans to do that.
    I might decide to have the server refusing to change the current session info

    - New ACSP_ERROR message
    The server will use this sending a stringW with the description of the problem. Used for stuff like out of bound indices and so on.

    - New ACSP_KICK_USER command
    It does what it says on the tin
     
    Last edited: Aug 10, 2015
  6. Minolin

    Minolin Staff Member KS Dev Team

    Thank you very much! Looks cool so far. Chat messages, amazing.

    Hehe, I'm refactoring that stuff "in realtime" (although I might fall asleep, 3 AM here).
     
  7. Today I am working on all the feature that don't involve the client and the client/server protocol because I don't want to touch it before releasing 1.2.3 . I'll get into the fun stuff tomorrow.
     
    Alessandro Greghi and Minolin like this.
  8. Minolin

    Minolin Staff Member KS Dev Team

    Typo to ACSP_VERSION?

    Do I guess correctly:

    ACSP_CHAT
    byte car_id
    stringW message

    ACSP_CLIENT_LOADED
    byte car_id

    ACSP_GET_SESSION_INFO

    What are the byte-values for the new commands?

    @Thomas Gocke
    > ACSP_NEW_SESSION is no more. It is now ACSP_SESSION_INFO (but same id)
    Should we let the NEW_SESSION stay and redirect a SESSION_INFO to the NewSession() when we detect a change? (should be new elapsedMS < old elapsedMS or session type changed. Would work even if a race gets /next_session while in pre-race mode)
    My first feeling would be to do so.
     
  9. Yes you guessed right, ACSP_GET_SESSION_INFO gets a byte with the session index you want to get or a -1 for the current session

    I think you can treat a SESSION_INFO as a NEW_SESSION every time the index==current_index, in other words, if that is the current session, also the elapsedMS will be <=0 or very very small.

    Nevermind, it was better.. I restored ACSP_NEW_SESSION, same format as SESSION_INFO but only sent when a new session starts.
     
    Last edited: Aug 10, 2015
  10. Minolin

    Minolin Staff Member KS Dev Team

    I wil never ever "realtime"-code with you again :p

    But yes, this is even better. I already handled it (for the .net layer), but this hasn't to be done for the other frameworks.
    Ah now I get what this session index is, wow pretty cool. Do I smell that this is a requirement / help for grid control?

    Thank you very much for this update, should keep us busy for a while. I will love chat control.

    @Thomas Gocke & other .net users:
    I'll go to bed soon. Will check in the changes without fork, if the update is tomorrow we'll have to finish this fast anyways.
    So maybe be careful with pulls and updates if you still want a working environment.


    ---
    edit: byte ... -1
     
    Last edited: Aug 10, 2015
    TDS likes this.
  11. Well spotted that -1 byte.. changed to a 16 bit integer.
     
    TDS likes this.
  12. The grid manipulation is tricky because it needs a blocking system from the plugin.. when a session is finished the server calls the plugin and the plugin needs to answer... or a couple of seconds to be added to the qual time.
    Do I understand correctly what you need.. end session.. the plugin sends me a list with the grid. the server obeys.

    It could also happen at any time, the plugin might send a new grid after every lap completed... but as I've said, need a couple of seconds at the end of a qualify session to wait for the plugin to process the last lap completed.

    Perhaps somebody can write down a possible scenario of what they want to do with grids?
     
  13. f_deutsch

    f_deutsch Hardcore Simmer

    My plugin is not planned to manage grids, but from what you explain, from my point of view, the best scenario would be to have an event where you expect the grid that will be applied in return, or null for no changes on the grid.

    Again, probably a best description of the scenario will be from those interested in manipulate the grid.
     
  14. Giving the plugin a few seconds after the qualify to change the grid sounds like a good idea. However, I also see the use case where the plugin sets a grid and then just restarts the session - wait I just went through my list and this was missing:

    [new] possibility for the plugin to move to the next session (and also define the next session as Minolin already suggested) equivalent to the /next_session admin command.

    This is evolving nicely :) I'm excited!
     
  15. Tberg

    Tberg Alien

    All this mp attention...did I die and go to heaven?


    Good vibes!
     
    bigbawmcgraw likes this.
  16. Kipke

    Kipke Rookie

    In ACSP_SESSION_INFO, could there also be a value maxclients?

    It seems that most of the new information is the same as what is available in the /INFO on the server. So could maxclients also be included in the session_info? Then I don't have to request the /INFO in my application anymore :D
     
    Last edited: Aug 10, 2015
  17. that is a constant during the execution easy to get from server_cfg.ini . But you would say that also other infos are constants (ie. track/config) and were included.. and you would be right.
     
    Kipke likes this.
  18. Minolin

    Minolin Staff Member KS Dev Team


    I think a little timeout at the end is the way to go. Of course there's a problem with the guys who are joining while pre-race, but I would think the client couldn't handle grid changes inside the race session without big effort anyways. @Stereo described this somewhere.

    Scenarios I see:
    #1 Reverse grid:
    A simple plugin that reverts the qualifying result in order to get an exciting race with a lot overtakes. Estimated timeout requirement: 35ms

    #2 Rating based grid:
    We could setup the grid position after the safety rating of minorating.com, so the most clean guys are in front. Estimated timeout: 1-2s because of a web request.
    Performance ratings could also be used for that (straight or reversed).
    But what to do with the newcomers? Are they in the back by default?

    #3 Simple penalties:
    Maybe we also see things like "oh, you hit 3 people while qualifying? go to the back please". Local as well, almost no timeout required.

    #4 League-based grid:
    Very similar to Rating-based, maybe you want to start in the last race (a week ago) result or reverted.
     
  19. Minolin

    Minolin Staff Member KS Dev Team

    Maybe we could just let the plugin be admin and just process /commands via chat? This way the plugins would always have the same control as server admins, even for new commands implemented in the future.

    And no, there is no point in "hiding" admin features from a plugin. We already can read the server_config.ini with the password.
     
  20. Ya I agree that admin should be accessed via chat, that way any new addition is automatically exposed to the plugins.
     
  21. Minolin

    Minolin Staff Member KS Dev Team

    Will it be replaced by a "/kick_id n" - chat command?
    Disadvantage: No feedback (message) possible, but this is inherintly bad with the /kick admin command as well. Feedback is always good.

    But overall I think it's better not to introduce a special UPD message if we could use the admin commands (soon).
     

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