ACC - Plugin Simhub pour ACC

  • Salut à tous, il y a quelques semaines je m'étais lancé dans le développement d'un petit plugin pour ajouter quelques informations utiles à SimHub.

    Depuis j'ai eu des petites idées mais surtout des demandes assez précises et aujourd'hui le plugin commence à être relativement complet, avec notamment l'intégration des données issues de l'API RaceApp .

    Voici le contenu de la description du plugin. pour ceux que ca intéresse on peut le faire évoluer.


    Le plugin est, pour le moment, spécifique à ACC car il utilise les données natives du jeux pour proosers des données plus précises que celles fournies par Simhub.

    Initialement, le projet était de pouvoir obtenir des informations précises sur le classement et sur les concurrents qui se trouvent devant ou derrière moi au classement.

    Petit à petit des demandes m'ont été formulé et on est arrivé à quelque chose d'assez complet.


    Que propose le plugin ?

    4 grand types de données

    1. Des données globales

    2. Des données sur moi et ma voiture

    3. Des données sur des opposants devant ou derrière moi au classement (et non juste sur la piste)

    - Au classement général

    - Au classement par série (GT3 GT4)

    - Au classement par Cup Categorie (Pro, ProAM, AM etc.)

    - Au classement par Driver Categorie (Platinum, Gold, Silver, Bronze)

    - Au classement selon un RaceApp Tag (si on utilise l'intégratio avec RaceApp, cf RaceApp Integration)

    Pour chaque concurrent(devant ou derrière) on aura une liste d'informations disponible

    4. Des données sur chaque concurrent permettant de faire un leader board complet.


    1. les données globales-

    AllCarsBestLap => meilleur tour, toutes catégories confondues

    SameSerieBestLap => meilleur tour dans la même série

    SameDriverCategoryBestLap => meilleur tour dans la même catégorie de pilote

    SameCupCategoryBestLap => meilleur tour dans la même Cup catégorie

    SameRaceAppTagBestLap => meilleur tour dans le même tag RaceApp

    HaveAllCarBestLap => Do my car have the best lap ?

    HaveSameSerieBestLap => Do my car have the best lap in the serie ?

    HaveSameCupCategoryBestLap => Do my car have the best lap in my serie and same cup category ?

    HaveSameDriverCategoryBestLap => Do my car have the best lap in my serie and same driver category?

    HaveSameRaceAppTagBestLap => Do my car have the best lap in my RaceApp Tag ?


    SameSerieFirstPosition => What is the best position in my serie

    SameDriverCategoryFirstPosition => What is the best position in my serie and driver category

    SameCupCategoryFirstPosition => What is the best position in my serie and car cup category

    SameRaceAppTagFirstPosition => What is the best position in my RaceApp Tag


    ChampionShip.Name => Nom de la série RaceApp (si intégration RaceApp)

    ChampionShip.Info => informations sur la série RaceApp (si intégration RaceApp)

    ChampionShip.CommunityName => Nom de la communauté RaceApp (si intégration RaceApp)


    MultiSerieRace => Est ce qu'il y a plusieurs séries dans la course

    MultiDriverCategoryRace => Est ce qu'il y a plusieurs catégories de pilotes dans la course

    MultiCupCategoryRace => Est ce qu'il y a plusieurs Cup catégories dans la course

    LastDriveThroughTime => Temps nécessaire à la traversée de la pilane sur la piste en cours. Cette donnée est persistante mais il faut faire un DT au moins une fois (en practice par exemple) sur la piste pour disposer de cette information.

    Cette données a été demandé poru faire des calculs de prédictions de dépassement lors des arrêts au stands.


    2. Des données sur moi et ma voiture

    BestlapTime => Mon meilleur temps

    CurrentDriverCategoryString => Ma Categorie de pilote

    InPitSince => TImer de durée de pit stop

    IsPiting => Est ce que la voiture est dans les stands ou dans la voie des stands

    MyCarCurrentDriverIndex => Index du pilote en piste (si plusieurs pilotes)

    MyCarDriverCount => Combien de pilote pour la voiture

    MyCarLocation => Position de la voiture (parmis NONE = 0,Track = 1,Pitlane = 2,PitEntry = 3,PitExit = 4)

    MyCarModelType => Id numérique de ma voiture(id KUNOS)

    MyCategory => Categorie du pilote en cours dans la voiture

    MyChampionShipPoints => Mes points dans la série RaceApp (si intégration RaceApp)

    MyChampionShipPosition => Ma position dans la série RaceApp (si intégration RaceApp)

    MyChampionShipPredictedPoints => Mes points en fin de course dans la série RaceApp (si intégration RaceApp)

    MyChampionShipPredictedPosition => Ma position en fin de course selon le classement actuel dans la série RaceApp (si intégration RaceApp)

    MyCupCategory => Ma cup catégorie (Pro, ProAm, Am, etc.) au format numérique

    MyCupCategoryString => idem au format chaine de caractère

    MyCupCategoryPosition => Ma position dans ma cup catégorie

    MyDriverCategoryPosition => Ma potition dans ma catégorie de pilote (Platinum, Gold, Silver etc.)

    MyFirstName => Prenom

    MyFullName => Nom complet du pilote

    MyLapsSinceLastPitStop => Nombre de tours depuis le dernier pit stop

    MyLastName => Nom de Famille

    MyLastPitStopLap => Tour du dernier pitstop

    MyLastPitStopDuration => Durée du dernier pitstop

    MyPitStopCount => Nombre de pitstop effectué

    MyRaceAppTag => Mon TAG RaceApp (si intégration RaceApp)

    MyRaceNumber => Mon numéro de course

    MyRacePosition => Ma position au général

    MySerie => Ma série (GT3 / GT4)

    MySeriePosition => Ma position au classement par série

    MyShortName => Surnom

    MyTeamName => Nom de l'équipe


    3. Des données sur des opposants devant ou derrière moi au classement (et non juste sur la piste)

    L'idée est d'avoir accès aux même informations que pour Ma voiture mais pour des concurrent identifiés.

    Concurrents devant ou derrière moi au au classement général

    -->Ahead OR Behind

    Concurrents devant ou derrière moi au au classement par série (GT3 / GT4)

    -->SameSerieAhead OR SameSerieBehind

    Concurrents devant ou derrière moi au au classement par CupCategorie (Pro, ProAM, AM etc.)

    -->SameCupCategoryAhead OR SameCupCategoryBehind

    Concurrents devant ou derrière moi au au classement par Driver Catégorie (Platinum, Gold, Silver, Bronze)

    -->SameDriverCategoryAhead OR SameDriverCategoryBehind

    Concurrents devant ou derrière moi au au classement par RaceApp Tag (si intégration RaceApp=

    -->SameRaceAppTagAhead OR SameRaceAppTagBehind

    Pour chacun de ces concurrents ont va retrouver les mêmes informations que pour ma voiture avec quelques données en plus (Exemple pour le concurrent devant moi au classement général)

    Ahead_GapToPlayer => Ecart avec moi

    Ahead_LapsToPlayer => Ecart avec moi en tours

    Ahead_PredictLapCountBeforeContact => si je suis à plus d'une seconde du pilote devant et que je roule plus vite, combien de tours avant que je ne sois au contact.

    Ahead_RaceNumber

    Ahead_CarModelType

    Ahead_CupCategory

    Ahead_CupCategoryString

    Ahead_DriverCount

    Ahead_TeamName

    Ahead_CurrentDriverIndex

    Ahead_RacePosition

    Ahead_CupCategoryPosition

    Ahead_DriverCategoryPosition

    Ahead_BestlapTime

    Ahead_LastlapTime

    Ahead_IsPiting

    Ahead_LapDelta

    Ahead_FirstName

    Ahead_LastName

    Ahead_ShortName

    Ahead_FullName

    Ahead_DriverCategory

    Ahead_Serie

    Ahead_InPitSince

    Ahead_PitStopCount

    Ahead_LastPitStopLap

    Ahead_LastPitStopDuration

    Ahead_LapsSinceLastPitStop

    Ahead_ChampionShipPosition

    Ahead_ChampionShipPoints

    Ahead_ChampionShipPredictedPoints

    Ahead_ChampionShipPredictedPosition

    Ahead_RaceAppTag


    4. Des données sur chaque concurrent permettant de faire un leader board complet.

    L'idée ici est de pouvoir faire un leaderboard complet avec les informations calculées par le plugin.

    Le souci c'est que SimHub ne permet pas d'accéder a un tableau de concurrents, donc on va retrouver des concurrents indexé par leur position au classement.

    SimHubSwoopPlugin.SWLeaderBoard.Position1.

    SimHubSwoopPlugin.SWLeaderBoard.Position2.

    SimHubSwoopPlugin.SWLeaderBoard.Position3.

    ...

    SimHubSwoopPlugin.SWLeaderBoard.PositionN.

    Et pour chaque position on va retrouver toujours les mêmes informations avec quelques données en plus

    IsPlayer => Permet de savoir si le concurent est le joueur en cours

    GridPosition => Position sur la grille de départ

    Movements = positions gagnées ou perdues

    GapToPlayer => Ecart en temps avec le joueur

    GapToLeader => Ecart en temps avec le leader

    GapAhead => Ecart en temps avec le concurent de devant

    RaceNumber

    CarModel

    CarModelType

    CupCategoryString

    TeamName

    Serie

    DriverFullName

    DriverShortName

    DriverCategory

    RaceAppTag

    RacePosition

    SeriePosition

    DriverCategoryPosition

    CupCategoryPosition

    LastlapTime

    BestlapTime

    Laps

    CurrentLapNumber

    LapDelta

    LapsToPlayer

    CarLocation

    Kmh

    InPitSince

    IsPiting

    LapsSinceLastPitStop

    LastPitStopDuration

    LastPitStopLap

    LastPitWasDriveThrough

    PitStopCount

    ChampionShipInfo.Points

    ChampionShipInfo.Position

    ChampionShipInfo.PredictedPoints

    ChampionShipInfo.PredictedPosition

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

    Message modifié 1 fois, dernière modification par swoop (2 mars 2022 à 10:25).

  • As tu jeté un oeil sur les dommages... Les données sont présentes dans la mémoire partagée mais je n'ai pas réussi à comprendre quelle donnée concerne quel dommage ?

    -Aérodynamique

    -Carrosserie

    -Moteur

    -Suspension

    -Boite de vitesses

    Core I5-12600K - ASUS Z690 - Sound BlasterX AE-5 Plus - RTX 3080 FE - 32Go RAM - Châssis Motedis X-Dream - Volant Thomconcept Simucube 1 small mige 130ST-M10010 (20 Nm) Biss-c - Samsung 32/9 G9 49" 5120x1440 - Bass-shakers - Heusinkveld Pédales Sim Ultimate+ - Heusinkveld Handbrake - Shifter Manu-Factory SSH14 - OSP Simpro Vocore 5"

    Mon cockpit     Mon SimXperience G-Belt      Mes Dash

  • Salut.

    J'ai bien des données effectivement mais même en regardant le SDK d'ACC je trouve pas de documentation...

    Ce que j'avais pensé faire c'est ouvrir ACC, mettre des dégats volontairement sur la voiture puis les afficher (il me semble qu'on peut avec un HUD en particulier non ?)

    Puis regarder ce que je récupère dans les données que le jeux transmet.

    Ca fait un moment que j'y pense mais depuis j'ai eu pas mal de demande pour faire des devs divers et j'ai pas poursuivis la démarche.

    En gros dans les données d'ACC, on a un paragraphes "Physics" et dedans on a un petit tableau de 5 valeurs :

    "CarDamage":[

    0.0,

    0.0,

    0.0,

    0.0,

    0.0

    ],

    puis un autre pour les suspensions (j'imagine une valeur pour chaque suspension mais dans quel ordre?)

    "suspensionDamage":[

    0.0,

    0.0,

    0.0,

    0.0

    ],

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

    Message modifié 1 fois, dernière modification par swoop (2 avril 2022 à 10:42).

  • j'ai trouvé ça et j'ai mis les mains dans le cambouis

    https://www.assettocorsa.net/forum/index.ph…entation.59965/

    et j'en suis là pour l'instant

    Les dégats ne semblent pas avoir un % max genre 100% car je peux monter à 300 voire plus

    Core I5-12600K - ASUS Z690 - Sound BlasterX AE-5 Plus - RTX 3080 FE - 32Go RAM - Châssis Motedis X-Dream - Volant Thomconcept Simucube 1 small mige 130ST-M10010 (20 Nm) Biss-c - Samsung 32/9 G9 49" 5120x1440 - Bass-shakers - Heusinkveld Pédales Sim Ultimate+ - Heusinkveld Handbrake - Shifter Manu-Factory SSH14 - OSP Simpro Vocore 5"

    Mon cockpit     Mon SimXperience G-Belt      Mes Dash

  • Pas mal le lien, merci. Dans la doc on trouve ça :

    float carDamage[5]

    Car damage: front 0, rear 1, left 2, right 3, centre 4

    Et la partie suspension n'est plus supportée a priori car elle est en rouge.

    Concernant la valeur de chaque dégat j'avais déja constaté également qu'elle est exprimée en "points" et je me suis demandé s'il y avait un ratio fixe entre le nombre de points et le temps nécessaire aux réparations.

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

  • j'ai fait ça après plusieurs essais

    oui certainement des "points" mais j'imagine qu'il y a un maximum......que je n'ai pas trouvé

    damage5 : cela semble être le centre ou l'ensemble de la voiture ?

    pour le temps nécessaire aux réparations, j'ai pas encore regardé

    Core I5-12600K - ASUS Z690 - Sound BlasterX AE-5 Plus - RTX 3080 FE - 32Go RAM - Châssis Motedis X-Dream - Volant Thomconcept Simucube 1 small mige 130ST-M10010 (20 Nm) Biss-c - Samsung 32/9 G9 49" 5120x1440 - Bass-shakers - Heusinkveld Pédales Sim Ultimate+ - Heusinkveld Handbrake - Shifter Manu-Factory SSH14 - OSP Simpro Vocore 5"

    Mon cockpit     Mon SimXperience G-Belt      Mes Dash

  • oui le 5 c'est le centre, a priori le dessous de la voiture ou un truc de ce genre

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta