DarkSuLL Posted March 8, 2021 Share Posted March 8, 2021 17 hours ago, LonelyRacer said: I did few years ago a "league admin" version of my tool, where I collected statistics of key parameters of the cars and then displayed them in a way, which let league admins to check, if people were using cheats. This included odd g-forces, odd tire wear values, odd ERS usage etc. But this work got bit of a cold shower, when in F1 2019 and F1 2020 the telemetry data got mostly hidden, unless a person makes it available. You can still do some of that stuff (and my tool is still doing that), but it is bit harder, when you e.g. don't get the fuel usage and tire wear data from the other cars. Cheers. good morning i also have a league www.plf1.com.br is a totally free league, it is mandatory to make public the telemetry data to play in our league and run applications that are requested by the administrators. I know that players use a cheat engine to access the data in the memory and inject data to increase the car's grip, can you make your code available to me ?, so I gain time in creating mine, another doubt will we be able to do something to detect this change directly in memory by installing some application on the client for detection? thanks Link to comment Share on other sites More sharing options...
Neospin_ Posted March 20, 2021 Share Posted March 20, 2021 Hey guys, i am writing an application to save race data to display them on a website. Does anyone receives other m_tractioncontrol values then 0 and 2 in car status packets? Here there is only full and none TC and i think it's a bug. Thanks in advance. Link to comment Share on other sites More sharing options...
emln22 Posted March 23, 2021 Share Posted March 23, 2021 (edited) Hello, for the 2021 release would it possible to have m_tyresAgeLaps public? Since 2020 it's shown in the spectator menu, so it would make sense to have this property public also to telemetry data thanks! Edited March 23, 2021 by emln22 Link to comment Share on other sites More sharing options...
sim913 Posted March 25, 2021 Share Posted March 25, 2021 Hi all - does anybody know which teams/cars the team IDs 74 and 77 refer to? Sorry if this has been asked before, I couldn't find anything via search. Thanks in advance! Link to comment Share on other sites More sharing options...
Codemasters Staff Hoo Posted March 25, 2021 Author Codemasters Staff Share Posted March 25, 2021 Sorry - I probably need to update the original doc. 74 Dams ‘20 75 Uni-Virtuosi ‘20 76 MP Motorsport ‘20 77 Prema ‘20 78 Trident ‘20 79 BWT ‘20 80 Hitech ‘20 1 Link to comment Share on other sites More sharing options...
cjorgens79 Posted March 26, 2021 Share Posted March 26, 2021 Hi @Hoo, just wondering if there has been any movement on the whole player names GDPR thing? Thanks Link to comment Share on other sites More sharing options...
Codemasters Staff Hoo Posted March 26, 2021 Author Codemasters Staff Share Posted March 26, 2021 33 minutes ago, cjorgens79 said: Hi @Hoo, just wondering if there has been any movement on the whole player names GDPR thing? Thanks It's still disabled in game, but is actively being discussed at the moment. 1 1 Link to comment Share on other sites More sharing options...
sim913 Posted March 27, 2021 Share Posted March 27, 2021 On 3/25/2021 at 8:36 PM, Hoo said: Sorry - I probably need to update the original doc. 74 Dams ‘20 75 Uni-Virtuosi ‘20 76 MP Motorsport ‘20 77 Prema ‘20 78 Trident ‘20 79 BWT ‘20 80 Hitech ‘20 Thank you so much! It would be super useful if you could either update the original post, or share the full team ID table here. As an example, I'm a bit confused by what the other F2 '20 IDs are. Thank you in advance, I really appreciate the support 🙌 Link to comment Share on other sites More sharing options...
Neospin_ Posted March 27, 2021 Share Posted March 27, 2021 On 3/20/2021 at 1:36 PM, Neospin_ said: Hey guys, i am writing an application to save race data to display them on a website. Does anyone receives other m_tractioncontrol values then 0 and 2 in car status packets? Here there is only full and none TC and i think it's a bug. Thanks in advance. Hey there, does nobody use this field? Link to comment Share on other sites More sharing options...
cgfdoo Posted March 27, 2021 Share Posted March 27, 2021 3 hours ago, Neospin_ said: Hey there, does nobody use this field? I am using it and haven't seen any problems so far. Maybe a bug in your code? It is hard to say without any of your code to look at. Can of course also be a bug in the game on whichever platform you're playing on. Link to comment Share on other sites More sharing options...
Neospin Posted March 31, 2021 Share Posted March 31, 2021 On 3/27/2021 at 1:03 PM, cgfdoo said: I am using it and haven't seen any problems so far. Maybe a bug in your code? It is hard to say without any of your code to look at. Can of course also be a bug in the game on whichever platform you're playing on. Hey there, thanks for your answer. I am on PC, and i don't see any value with medium tractioncontrol even in raw data. So i think its a bug. Are you on PC and can confirm? Thanks in advance Link to comment Share on other sites More sharing options...
emln22 Posted April 1, 2021 Share Posted April 1, 2021 Actually I'm on ps4 and I have the same issue. Just 0 or 2 1 Link to comment Share on other sites More sharing options...
101jez101 Posted April 2, 2021 Share Posted April 2, 2021 Hi - two things you can maybe help with? 1. where can I find the official track map data? 2. how long and wide is the car using the worldPosition XZ scale? Presumably that point is the centre of the car seen from above? Link to comment Share on other sites More sharing options...
MrViSiOn Posted April 19, 2021 Share Posted April 19, 2021 Hi! I've been reading documentation and I didn't see any field about session or "in-menu" game. How can I "know" if we are in session (driving our car) or other part of the game (menu, my team, etc)? Thank you Link to comment Share on other sites More sharing options...
cgfdoo Posted April 19, 2021 Share Posted April 19, 2021 1 hour ago, MrViSiOn said: Hi! I've been reading documentation and I didn't see any field about session or "in-menu" game. How can I "know" if we are in session (driving our car) or other part of the game (menu, my team, etc)? Thank you The m_driverStatus field of the LapData packet will tell you the status of the car (in garage, flying lap, in lap, out lap, on track) and the m_gamePaused field of the Session Data packet will tell you whether the game is currently paused. Link to comment Share on other sites More sharing options...
MrViSiOn Posted April 19, 2021 Share Posted April 19, 2021 2 hours ago, cgfdoo said: The m_driverStatus field of the LapData packet will tell you the status of the car (in garage, flying lap, in lap, out lap, on track) and the m_gamePaused field of the Session Data packet will tell you whether the game is currently paused. Oh thank you, I will check that info! Link to comment Share on other sites More sharing options...
Kafumanto Posted April 19, 2021 Share Posted April 19, 2021 Hi @Hoo, accordingly to @BarryBL it appears that a beta program for F1 2021 is not confirmed at this time. If an official beta will not be run this time, I hope some sort of closed beta for devs working on third-party tools could be planned to give us the opportunity to have integrations ready on day-one. Link to comment Share on other sites More sharing options...
cgfdoo Posted April 19, 2021 Share Posted April 19, 2021 Just now, Kafumanto said: Hi @Hoo, accordingly to @BarryBL it appears that a beta program for F1 2021 is not confirmed at this time. If an official beta will not be run this time, I hope some sort of closed beta for devs working on third-party tools could be planned to give us the opportunity to have integrations ready on day-one. Would definitely be cool, I would even be fine with only getting updated docs for the fields ahead of time to be honest, that would at least allow us to write some of the code ahead of time - anyways, there is still plenty of time until July to run a (public) beta program so I wouldn't sweat it just yet. Link to comment Share on other sites More sharing options...
ThibaudPHP Posted April 19, 2021 Share Posted April 19, 2021 Just now, Kafumanto said: Hi @Hoo, accordingly to @BarryBL it appears that a beta program for F1 2021 is not confirmed at this time. If an official beta will not be run this time, I hope some sort of closed beta for devs working on third-party tools could be planned to give us the opportunity to have integrations ready on day-one. I want be part of the beta program. but the beta program is not here to help you to have your program ready, but it's made to be sure they will have NO bugs. We have some bugs on telemetry and we need beta to fix them. (last bug found, the traction control never display intermediate, only full or off) I was already angry against some of you who are selfish on beta 2020 and think more to their app than to found bug. So please. Think for the developer's community before think to your personnal app. Thanks 1 Link to comment Share on other sites More sharing options...
BernoAU Posted April 20, 2021 Share Posted April 20, 2021 13 hours ago, ThibaudPHP said: I want be part of the beta program. but the beta program is not here to help you to have your program ready, but it's made to be sure they will have NO bugs. We have some bugs on telemetry and we need beta to fix them. (last bug found, the traction control never display intermediate, only full or off) I was already angry against some of you who are selfish on beta 2020 and think more to their app than to found bug. So please. Think for the developer's community before think to your personnal app. Thanks Last time I checked it was mutually beneficial for the Codemasters devs to have third party app developers testing and consuming updates to the UDP data during beta? We have found and reported many bugs in the data for all the betas I've been involved in since 2017. Bugs remain in the data usually due to lack of time and resources for them to be fixed not due to lack of reporting. Also the developers community includes users of our apps many of whom expect our apps to be ready and working with the games release on day 1. This isn't going to happen if we don't get early access to the structure. Not sure how this is selfish? 1 Link to comment Share on other sites More sharing options...
e1smann Posted April 24, 2021 Share Posted April 24, 2021 +1 for this answer, such a thing is always mutually beneficial. We find bugs while developing and our programs may bring more people to the game or keep them here longer. But nowadays game devs tend to give influencers earlier access than 3rd party devs 🤷♂️ On another note, here are the additional IDs for F2 2020 that @Hoo was unable to add to the docs yet: Teams: 70: ART Grand Prix 71: Campos Racing 72: Carlin 73: Charouz Racing System 74: DAMS 75: UNI-Virtuosi Racing 76: MP Motorsport 77: Prema Racing 78: Trident 79: BWT HWA Racelab 80: Hitech Grand Prix Drivers: 91: Dan Ticktum 92: Marcus Armstrong 93: Christian Lundgaard 94: Yuki Tsunoda 95: Jehan Daruvala 96: Guilherme Samaia 97: Pedro Piquet 98: Felipe Drugovich 99: Robert Shwartzman 100: Roy Nissany 101: Marino Satō Visual Tyre Compound: 23: supersoft 24: soft 25: medium 26: hard 1 Link to comment Share on other sites More sharing options...
Poulpix Posted April 24, 2021 Share Posted April 24, 2021 12 hours ago, e1smann said: +1 for this answer, such a thing is always mutually beneficial. We find bugs while developing and our programs may bring more people to the game or keep them here longer. But nowadays game devs tend to give influencers earlier access than 3rd party devs 🤷♂️ On another note, here are the additional IDs for F2 2020 that @Hoo was unable to add to the docs yet: Teams: 70: ART Grand Prix 71: Campos Racing 72: Carlin 73: Charouz Racing System 74: DAMS 75: UNI-Virtuosi Racing 76: MP Motorsport 77: Prema Racing 78: Trident 79: BWT HWA Racelab 80: Hitech Grand Prix Drivers: 91: Dan Ticktum 92: Marcus Armstrong 93: Christian Lundgaard 94: Yuki Tsunoda 95: Jehan Daruvala 96: Guilherme Samaia 97: Pedro Piquet 98: Felipe Drugovich 99: Robert Shwartzman 100: Roy Nissany 101: Marino Satō Visual Tyre Compound: 23: supersoft 24: soft 25: medium 26: hard I didn't check everything, but in my experience, driver #100 is used to represent the player in My Team mode. Figured it out when I witnessed I was appearing as Roy Nissany when playing in My Team mode using my telemetry app :) Could #100 be used to mean different drivers depending on the context? That would not be cool since I'm not sure the type of game (career, My Team, championship etc.) can be inferred from the raw telemetry data... Link to comment Share on other sites More sharing options...
luis8h Posted April 25, 2021 Share Posted April 25, 2021 Hi, I just started to play around with the data you receive from the game. I wonder if there is a possibility to show the delta of the current lap to the session fastest. Like in TT in the game but also for other sessions e. g. race. Link to comment Share on other sites More sharing options...
Tempo1o1 Posted April 25, 2021 Share Posted April 25, 2021 On 11/13/2020 at 2:00 PM, codeslave said: So for sure the first proposed solution remain the best, with somes improvement (array in place of multiple declarations). struct PacketHeader { uint16_t m_packetFormat; // 2020 uint8_t m_gameMajorVersion; // Game major version - "X.00" uint8_t m_gameMinorVersion; // Game minor version - "1.XX" uint8_t m_packetVersion; // Version of this packet type, all start from 1 uint8_t m_packetId; // Identifier for the packet type, see below uint16_t m_sessionUID[4]; // Unique identifier for the session uint16_t m_sessionTime[2]; // Session timestamp uint16_t m_frameIdentifier[2]; // Identifier for the frame the data was retrieved on uint8_t m_playerCarIndex; // Index of player's car in the array // ADDED IN BETA 2: uint8_t m_secondaryPlayerCarIndex; // Index of secondary player's car in the array (splitscreen) }; struct CarTelemetryData { uint16_t m_speed; // Speed of car in kilometres per hour uint16_t m_throttle[2]; // Amount of throttle applied (0.0 to 1.0) uint16_t m_steer[2]; // Steering (-1.0 (full lock left) to 1.0 (full lock right)) uint16_t m_brake[2]; // Amount of brake applied (0.0 to 1.0) uint8_t m_clutch; // Amount of clutch applied (0 to 100) int8_t m_gear; // Gear selected (1-8, N=0, R=-1) uint16_t m_engineRPM; // Engine RPM uint8_t m_drs; // 0 = off, 1 = on uint8_t m_revLightsPercent; // Rev lights indicator (percentage) uint16_t m_brakesTemperature[4]; // Brakes temperature (celsius) uint8_t m_tyresSurfaceTemperature[4]; // Tyres surface temperature (celsius) uint8_t m_tyresInnerTemperature[4]; // Tyres inner temperature (celsius) uint16_t m_engineTemperature; // Engine temperature (celsius) uint16_t m_tyresPressure[8]; // Tyres pressure (PSI) uint8_t m_surfaceType[4]; // Driving surface, see appendices }; struct PacketCarTelemetryData { PacketHeader m_header; // Header CarTelemetryData m_carTelemetryData[22]; uint16_t m_buttonStatus[2]; // Bit flags specifying which buttons are being pressed // currently - see appendices // Added in Beta 3: uint8_t m_mfdPanelIndex; // Index of MFD panel open - 255 = MFD closed // Single player, race – 0 = Car setup, 1 = Pits // 2 = Damage, 3 = Engine, 4 = Temperatures // May vary depending on game mode uint8_t m_mfdPanelIndexSecondaryPlayer; // See above int8_t m_suggestedGear; // Suggested gear for the player (1-8) // 0 if no gear suggested }; #include <WiFi.h> #include <WiFiUdp.h> static const int servoPin = 13; const char* ssid = "XXXXXXXXXX"; const char* password = "XXXXXXXXXX"; WiFiUDP Udp; unsigned int localUdpPort = 20777; // local port to listen on WiFiClient espClient; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("Connecting to WiFi.."); } Serial.println("Connected to the WiFi network"); Udp.begin(localUdpPort); Serial.println(sizeof(PacketHeader)); Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort); delay(2000); } void loop() { int packetSize = Udp.parsePacket(); //If we received something. if(packetSize) { char packetBuffer[packetSize]; //Serial.printf("Received %d bytes from %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort()); Udp.read(packetBuffer, packetSize); int idPacket = int(packetBuffer[5]); // Serial.printf(" %d",idPacket); if (idPacket==6){ PacketCarTelemetryData *tmp_pckt = (PacketCarTelemetryData *) packetBuffer; Serial.printf("%u %u %u %u %u %u %u %u %u %u speed %d acc %f \n",tmp_pckt->m_header.m_packetFormat, tmp_pckt->m_header.m_gameMajorVersion, tmp_pckt->m_header.m_gameMinorVersion, tmp_pckt->m_header.m_packetVersion, tmp_pckt->m_header.m_packetId, tmp_pckt->m_header.m_sessionUID[0], tmp_pckt->m_header.m_sessionTime[0], tmp_pckt->m_header.m_frameIdentifier[0], tmp_pckt->m_header.m_playerCarIndex, tmp_pckt->m_header.m_secondaryPlayerCarIndex, tmp_pckt->m_carTelemetryData[tmp_pckt->m_header.m_playerCarIndex].m_speed, *(float *)&tmp_pckt->m_carTelemetryData[tmp_pckt->m_header.m_playerCarIndex].m_throttle[0] ); } } } Let me know if the solutions proposed solve your problem and I will appreciate tips. Bye I know the post is old but i wanna say that the solution proposed by codeslave is working ! Thank you a lot. I also tried to replicate the same thing with te carStatusData but with no result. I added this piece of code else if (idPacket==7){ PacketCarStatusData *tmp_pckt2 = (PacketCarStatusData *) packetBuffer; Serial.printf("%u %u %u %u %u %u %u %u %u %u traction %u antilock %u fuelmix %u \n",tmp_pckt2->m_header.m_packetFormat, tmp_pckt2->m_header.m_gameMajorVersion, tmp_pckt2->m_header.m_gameMinorVersion, tmp_pckt2->m_header.m_packetVersion, tmp_pckt2->m_header.m_packetId, tmp_pckt2->m_header.m_sessionUID[0], tmp_pckt2->m_header.m_sessionTime[0], tmp_pckt2->m_header.m_frameIdentifier[0], tmp_pckt2->m_header.m_playerCarIndex, tmp_pckt2->m_header.m_secondaryPlayerCarIndex, tmp_pckt2->m_carStatusData[tmp_pckt2->m_header.m_playerCarIndex].m_tractionControl, tmp_pckt2->m_carStatusData[tmp_pckt2->m_header.m_playerCarIndex].m_antiLockBrakes, tmp_pckt2->m_carStatusData[tmp_pckt2->m_header.m_playerCarIndex].m_fuelMix //*(float *)&tmp_pckt2->m_carStatusData[tmp_pckt2->m_header.m_playerCarIndex].m_throttle[0] ); Serial.println(tmp_pckt2->m_carStatusData[tmp_pckt2->m_header.m_playerCarIndex].m_fuelMix); } Can someone please tell me why its not working? it gives me all zerso for the values of traction, antilock and fuelmix Link to comment Share on other sites More sharing options...
e1smann Posted April 25, 2021 Share Posted April 25, 2021 On 4/24/2021 at 2:27 PM, Poulpix said: I didn't check everything, but in my experience, driver #100 is used to represent the player in My Team mode. Figured it out when I witnessed I was appearing as Roy Nissany when playing in My Team mode using my telemetry app 🙂 Could #100 be used to mean different drivers depending on the context? That would not be cool since I'm not sure the type of game (career, My Team, championship etc.) can be inferred from the raw telemetry data... Yeah you're right. Also in multiplayer 101, 102 etc are used for other players. Not a smart move from the game devs, but you can separate them pretty good. In my code I have some conditionals which don't look pretty, but work fine for me: - if AI controlled lookup name by driver ID - if it's a local game (e.g. My Team) use the Name in the Participants packet - but this is uppercase, so with first & last name you have to handle it correctly (which I don't do yet) - if it's a network game just use "Player {ID}" (how can it take so long to just send the username in telemetry data?) Hope this helps! @luis8h In the event packet you can select "Fastest lap" events, store the time and compare it to other lap times afterwards. 1 Link to comment Share on other sites More sharing options...
codeslave Posted April 26, 2021 Share Posted April 26, 2021 (edited) 16 hours ago, Tempo1o1 said: I know the post is old but i wanna say that the solution proposed by codeslave is working ! Thank you a lot. I also tried to replicate the same thing with te carStatusData but with no result. I added this piece of code else if (idPacket==7){ PacketCarStatusData *tmp_pckt2 = (PacketCarStatusData *) packetBuffer; Serial.printf("%u %u %u %u %u %u %u %u %u %u traction %u antilock %u fuelmix %u \n",tmp_pckt2->m_header.m_packetFormat, tmp_pckt2->m_header.m_gameMajorVersion, tmp_pckt2->m_header.m_gameMinorVersion, tmp_pckt2->m_header.m_packetVersion, tmp_pckt2->m_header.m_packetId, tmp_pckt2->m_header.m_sessionUID[0], tmp_pckt2->m_header.m_sessionTime[0], tmp_pckt2->m_header.m_frameIdentifier[0], tmp_pckt2->m_header.m_playerCarIndex, tmp_pckt2->m_header.m_secondaryPlayerCarIndex, tmp_pckt2->m_carStatusData[tmp_pckt2->m_header.m_playerCarIndex].m_tractionControl, tmp_pckt2->m_carStatusData[tmp_pckt2->m_header.m_playerCarIndex].m_antiLockBrakes, tmp_pckt2->m_carStatusData[tmp_pckt2->m_header.m_playerCarIndex].m_fuelMix //*(float *)&tmp_pckt2->m_carStatusData[tmp_pckt2->m_header.m_playerCarIndex].m_throttle[0] ); Serial.println(tmp_pckt2->m_carStatusData[tmp_pckt2->m_header.m_playerCarIndex].m_fuelMix); } Can someone please tell me why its not working? it gives me all zerso for the values of traction, antilock and fuelmix Can you put all the code? How did you declare PacketCarStatusData? Why did you omit *(float *)& ... ?The variables has to be such an array .. I think you have missed something. Edited April 26, 2021 by codeslave Link to comment Share on other sites More sharing options...
luis8h Posted April 27, 2021 Share Posted April 27, 2021 On 4/25/2021 at 11:45 PM, e1smann said: @luis8h In the event packet you can select "Fastest lap" events, store the time and compare it to other lap times afterwards. Thank you for your answer, but I mean sonething else (sorry for explaining it a bit bad😅). I want to calculate the delta live, so you see while driving a lap, how fast you are compared to another. E. g. You drive trough a turn and know instantly if you did it better or not as good as in the other lap. Another thing that would be interesting for me is, how to calculate the delta to the driver in front in a race. Sorry for these basic questions, but I am completely new to this stuff😁 Link to comment Share on other sites More sharing options...
Codemasters Staff Hoo Posted April 27, 2021 Author Codemasters Staff Share Posted April 27, 2021 3 Link to comment Share on other sites More sharing options...
ThibaudPHP Posted April 27, 2021 Share Posted April 27, 2021 14 hours ago, luis8h said: Thank you for your answer, but I mean sonething else (sorry for explaining it a bit bad😅). I want to calculate the delta live, so you see while driving a lap, how fast you are compared to another. E. g. You drive trough a turn and know instantly if you did it better or not as good as in the other lap. Another thing that would be interesting for me is, how to calculate the delta to the driver in front in a race. Sorry for these basic questions, but I am completely new to this stuff😁 read first pages of this topic. and use search function next time. people ask this one by month almost Link to comment Share on other sites More sharing options...
luis8h Posted April 28, 2021 Share Posted April 28, 2021 I already searched in Google and in the Forum but I found nothing about the delta... The problem is, that at the first page I could not find a value like delta. I think to calculate this you need to use x and y position in connection to the time of the current lap and the lap which is used as reference. That makes it very complicated to calculate and I thought there would maybe be a formula for this. Or is there another trick to make it more simple, maybe I just think to complicated... Link to comment Share on other sites More sharing options...
ThibaudPHP Posted April 28, 2021 Share Posted April 28, 2021 (edited) 8 minutes ago, luis8h said: I already searched in Google and in the Forum but I found nothing about the delta... LOL Lying is bad and boring. https://forums.codemasters.com/search/?q=delta &type=forums_topic&item=50942 And go read this message who is PAGE 1 of this topic... Edited April 28, 2021 by ThibaudPHP link Link to comment Share on other sites More sharing options...
luis8h Posted April 28, 2021 Share Posted April 28, 2021 7 minutes ago, ThibaudPHP said: LOL Lying is bad and boring. https://forums.codemasters.com/search/?q=delta &type=forums_topic&item=50942 And go read this message who is PAGE 1 of this topic... *** i am very sorry... I swear I searched after it, but it showed completely difrent solutions... maybe I did something weong in the filter but I don‘t know what. But anyway thank you for the link. This schould help me out. Link to comment Share on other sites More sharing options...
cjorgens79 Posted April 28, 2021 Share Posted April 28, 2021 20 hours ago, Hoo said: Thanks @Hoo. I have applied for the beta however I noticed there was nowhere to indicate that I was signing up with the primary purpose of testing the updated telemetry api, hopefully this gets taken into consideration when deciding who gets access to the beta. Cheers Link to comment Share on other sites More sharing options...
ThibaudPHP Posted April 28, 2021 Share Posted April 28, 2021 1 minute ago, cjorgens79 said: Thanks @Hoo. I have applied for the beta however I noticed there was nowhere to indicate that I was signing up with the primary purpose of testing the updated telemetry api, hopefully this gets taken into consideration when deciding who gets access to the beta. Cheers I create a post on the topic to said that i want be part for the telemetry. i invite you to do the same. I hope it can increase our chance to be taken to explain on the topic why we apply ;) Link to comment Share on other sites More sharing options...
Codemasters Staff Hoo Posted April 28, 2021 Author Codemasters Staff Share Posted April 28, 2021 If any regular contributors to this UDP thread have applied to the beta then please send me a PM and I will pass on your details to the "Beta Application Review Committee" for consideration. 1 6 Link to comment Share on other sites More sharing options...
101jez101 Posted May 2, 2021 Share Posted May 2, 2021 Hi - fyi - on page 1 you have m_tyreVisualCompound as ...visualTyre... Link to comment Share on other sites More sharing options...
LonelyRacer Posted May 2, 2021 Share Posted May 2, 2021 (edited) @Hoo I know you must be quite far into the development, but here is the list I promised containing some items I would like to see fixed/changes (hopefully maybe even before the BETA hits the road), which would make life easier for the tool devs. 1) No enum value 0: All places, where there is an enum (e.g. like with Team IDs), can you alter them so, that 0 is never valid value (e.g. with TeamID, Mercedes' ID would be something else than 0 and same in driverIds for Carlos Sainz). Now e.g. if there is no data in some packets, the data sent out is 0, so it becomes hard to see, if the data is missing or if the data is for the ID with 0. Would make the life of the developers so much easier. 2) Tyre wear as floats. Now the tyre wear is an int, which has forced me and other developers to build systems to estimate tyre wear from those int values with lapdistance. But e.g. in the tyre wear practice session the tyre wear values shown by the game are floats, not ints, so it is hard to add proper tyre wear analysis as shown in the game into our tools. 3) DriverIDs are now conflicting. In some mode the player car ID is reported as 100, but in the 2020 F2 driver list there is now drivers with ID 100 and 101 and 100 and 101 are driver IDs e.g. in league racing. 4) TC is either 0 or 2. This is the issue which was raised earlier and has been in the game, since the TC values have been reported. I.e. in the game there are 3 different TC modes, but the UDP only reports it either 0 or 2. Would be great to see this set that the proper values are shown. Bugs/issues in F1 2020 and older: Laptime for Quali inlap. At least in F12020, when a player drives back to pit after quali lap, the game reports for the inlap as last laptime from the previous quali lap. So the time is not from the inlap. Again this little thing forces the devs to look at, if a lap in quali session ends in pits, after which the laptime must be "guessed"/calculated. If one relies on the laptime sent by the game, the data will be bad. Lapdata for Ghost. In F1 2018 and F12019 in Time Trial the LapData contained the lapdistance data etc. for the Ghost. This was removed from F12020, which made it pretty hard to get the proper data for the Ghost for comparison purposes. I would like to see the Ghost's LapData, at least laptime, times + lapdistane, but preferably all the data to be added back. Cheers Edited May 2, 2021 by LonelyRacer Just fixed a typo 3 Link to comment Share on other sites More sharing options...
Codemasters Staff Hoo Posted May 4, 2021 Author Codemasters Staff Share Posted May 4, 2021 On 5/2/2021 at 11:20 AM, LonelyRacer said: @Hoo I know you must be quite far into the development, but here is the list I promised containing some items I would like to see fixed/changes (hopefully maybe even before the BETA hits the road), which would make life easier for the tool devs... Thanks for these. Here's a quick response on the issues that you posted: 1) No enum value 0. As this is based on the data coming directly from the game, this isn't an easy thing for us to change without reorganising the game data itself (which we can't do at this stage). As such, we will leave this as it is, unless we can find another way to flag valid / invalid values containing 0. 2) Tyre wear as floats. We will change this to floats. 3) DriverIDs are now conflicting. We understand the issue, but aren't yet sure how we can fix it as it again ties in with other data coming from the game. We will need to consider this issue further. 4) TC is either 0 or 2. We've logged a bug to investigate this. I'm assuming that medium TC (value = 1) is the one not coming through correctly. Laptime for Quali inlap. Again, the data just reflects what the game itself does (discards inlaps from the results), so not sure we can fix this with the telemetry system. We've logged this issue for further investigation. Lapdata for Ghost. We will revert this back to the 2019 implementation as suggested. 1 1 Link to comment Share on other sites More sharing options...
LonelyRacer Posted May 4, 2021 Share Posted May 4, 2021 25 minutes ago, Hoo said: Thanks for these. Here's a quick response on the issues that you posted: 1) No enum value 0. As this is based on the data coming directly from the game, this isn't an easy thing for us to change without reorganising the game data itself (which we can't do at this stage). As such, we will leave this as it is, unless we can find another way to flag valid / invalid values containing 0. 2) Tyre wear as floats. We will change this to floats. 3) DriverIDs are now conflicting. We understand the issue, but aren't yet sure how we can fix it as it again ties in with other data coming from the game. We will need to consider this issue further. 4) TC is either 0 or 2. We've logged a bug to investigate this. I'm assuming that medium TC (value = 1) is the one not coming through correctly. Laptime for Quali inlap. Again, the data just reflects what the game itself does (discards inlaps from the results), so not sure we can fix this with the telemetry system. We've logged this issue for further investigation. Lapdata for Ghost. We will revert this back to the 2019 implementation as suggested. @Hoo Great stuff. Thank you for the update and for relaying this to the devs. For 1), maybe invalid data for the enums could be -1 (but I don't remember, if all those are signed ints). In some other games invalid values are sometimes max possible values, i.e. e.g. for int16 it is set to 32767 for invalid/bad value. 4) You are correct. No TC is 0 and TC med or high is sent out as 2. Cheers 1 Link to comment Share on other sites More sharing options...
ThibaudPHP Posted May 4, 2021 Share Posted May 4, 2021 40 minutes ago, Hoo said: Thanks for these. Here's a quick response on the issues that you posted: 1) No enum value 0. As this is based on the data coming directly from the game, this isn't an easy thing for us to change without reorganising the game data itself (which we can't do at this stage). As such, we will leave this as it is, unless we can find another way to flag valid / invalid values containing 0. 2) Tyre wear as floats. We will change this to floats. 3) DriverIDs are now conflicting. We understand the issue, but aren't yet sure how we can fix it as it again ties in with other data coming from the game. We will need to consider this issue further. 4) TC is either 0 or 2. We've logged a bug to investigate this. I'm assuming that medium TC (value = 1) is the one not coming through correctly. Laptime for Quali inlap. Again, the data just reflects what the game itself does (discards inlaps from the results), so not sure we can fix this with the telemetry system. We've logged this issue for further investigation. Lapdata for Ghost. We will revert this back to the 2019 implementation as suggested. Hello @Hoo I found something who is a bug for me. When a Player join a lobby in qualification after everyone and took a car, the car number send by the telemetry is not his but the official one. ex : if i join late and i took the hamilton car, my number send via telemetry will be 44 I have a lot of features i would like implement, but maybe it's not the moment. Tell me when i can share my list and let see what can be accepted. Thanks Link to comment Share on other sites More sharing options...
Codemasters Staff Hoo Posted May 4, 2021 Author Codemasters Staff Share Posted May 4, 2021 1 hour ago, LonelyRacer said: For 1), maybe invalid data for the enums could be -1 (but I don't remember, if all those are signed ints). In some other games invalid values are sometimes max possible values, i.e. e.g. for int16 it is set to 32767 for invalid/bad value. That looks like a good idea. We'll see if we can implement something along those lines. Link to comment Share on other sites More sharing options...
Codemasters Staff Hoo Posted May 4, 2021 Author Codemasters Staff Share Posted May 4, 2021 1 hour ago, ThibaudPHP said: Hello @Hoo I found something who is a bug for me. When a Player join a lobby in qualification after everyone and took a car, the car number send by the telemetry is not his but the official one. ex : if i join late and i took the hamilton car, my number send via telemetry will be 44 I have a lot of features i would like implement, but maybe it's not the moment. Tell me when i can share my list and let see what can be accepted. Thanks Now is a good time! If anything is too complex to add for F1 2021 then it is still useful to know now for the future. Link to comment Share on other sites More sharing options...
ThibaudPHP Posted May 4, 2021 Share Posted May 4, 2021 1 minute ago, Hoo said: Now is a good time! If anything is too complex to add for F1 2021 then it is still useful to know now for the future. My wish list for telemetry 1. like penalty, a warning field in packet 2 will be welcome. Actually warnings are send only via packet 3, if you miss the packet or it is lost on the internet you miss the warning. 2. I would like to know when a stop and go is did/paid by a racer. We know when he receive one (packet 3) but never when he paid one. 3. The full list of assist used. not only abs and traction. line, breaking assist, pit, etc. 4. On a lot of league where i work with, it's forbiden to put start during the race. To detect start i use a combo when i detect that the assists change. (the AI is lazy and don't drive with TC off :D) It will help me a lot to know who press start. 5. i know that is impossible to have delta, because the way there are calculate are not the same in TT and in race. But, if we can have like some checkpoint to have a better way to calcul delta without it cost us a lot on calcul. Right now, my solution is calcul gap with sector. I wish have like 10 checkpoint by track to be able to afine this kind of delta. 6. I don't need personnaly because i found a great solution to solve this problem but, for the community on this topic I must ask, the name of the racer. I know with rgpd it's complicated and it's asked so many times. i am sorry, but it was a mandatory to put on my wishlist for my collegues programmers 7. i wish that the formation lap stay with (on packet 1) value safetyCarStatus = 3 (data not put on the help). This is a very good way to detect the formation lap and i am, very afraid to loose this feature. i am aware that this list is very personna, thanks for what you can implement. I forgot to told an old bug the m_resultStatus give us a data 7 who is not listed. The 7 is equal to 6. When we receive it, the car is retired of the race. Thanks !! Link to comment Share on other sites More sharing options...
sim913 Posted May 4, 2021 Share Posted May 4, 2021 On 4/2/2021 at 5:22 PM, 101jez101 said: Hi - two things you can maybe help with? 1. where can I find the official track map data? 2. how long and wide is the car using the worldPosition XZ scale? Presumably that point is the centre of the car seen from above? Late response to this - we just open sourced our SVG track maps here https://github.com/f1laps/f1-track-vectors. Maybe they're helpful for you or others. 3 hours ago, Hoo said: Now is a good time! If anything is too complex to add for F1 2021 then it is still useful to know now for the future. Some mechanism to identify the end of a lap / start of a new lap. We have several workarounds in place to calculate total lap time or the telemetry set of a specific lap. Exposing the AI difficulty level set for the (offline) session Exposing an identifier for the Grand Prix weekend across sessions (so that qualifying and race sessions can be tied together, for instance). And exposing an identifier for, or the name of, the career mode season (like "My Team, Nickname ABC, Season 1"). Persisting the session ID of an offline session across game restarts (when using "mid session save & exit") A mechanism to clean telemetry data of flashbacks (for instance removing/skipping the telemetry data that is being overwritten because the user is driving the same distance again after a flashback) Thank you in advance for considering these. I appreciate your engagement with the community on this. 👍 1 1 Link to comment Share on other sites More sharing options...
101jez101 Posted May 4, 2021 Share Posted May 4, 2021 3 hours ago, Hoo said: Now is a good time! If anything is too complex to add for F1 2021 then it is still useful to know now for the future. For me the negative lap distance, same lap number on flying outlaps is not ideal. If, every time you cross the start finish line, even if in the pits or if you abort the lap, the lap number increments would be better. My current solution is a bit of a hack but I'm probably missing something. Please explain how I should identify the start of a new lap if I am. Also, with flashbacks, a 'this is a replacement frame' flag would be useful. I get that you can't do a 'this frame is going to be deleted' flag 😊. 1 Link to comment Share on other sites More sharing options...
LonelyRacer Posted May 7, 2021 Share Posted May 7, 2021 @Hoo One little request for F1 2021 (and might be valid for 2020, if there is still a patch coming for it). I just tested the new Thrustmaster SF1000 and it has 25 buttons , but the game only reports values for controller buttons. i.e. up to 14. Would it be possible, that the game would also enumerate to the UDP feed the other buttons, if the wheel has more than 14 buttons. The m_buttonStatus is int32, so it would be possible to send the data up-to 32 buttons. I am sure this is an issue with other new steering wheels from Fanatec too, which have more than 14 buttons. It would be great, if that could also be added to F1 2020, but hopefully it will be added at least to F1 2021. Cheers Link to comment Share on other sites More sharing options...
Codemasters Staff Hoo Posted May 7, 2021 Author Codemasters Staff Share Posted May 7, 2021 On 5/4/2021 at 1:08 PM, ThibaudPHP said: My wish list for telemetry... Here's an initial response to your requests: Add a new, separate event for warnings in packet 3. We’ve added this to our backlog Add a means of detecting when a stop-go penalty has been served We’ve added this to our backlog Provide information about all assists used (currently just does a subset of them) We’ve added this to our backlog Add a way of indicating when a real player is in a paused state We’ve added this to our backlog Add checkpoints to help with delta calculation You should be able to use the m_lapDistance from LapData packet in conjunction with the m_trackLength from the Session Packet to give the a fraction the car is round the track. This should give “checkpoints” round the track from which you can work out the delta. Include the name of the player in the UDP data. We have a proposed solution that is with our legal team for review. Include formation lap status in safetyCarStatus field (using value 3). We will keep this in and update the documentation to show what this value does. Bug where m_resultStatus gives an unlisted value of 7 This has been fixed. We'll let you know if anything on the backlog gets implemented. 1 Link to comment Share on other sites More sharing options...
ThibaudPHP Posted May 7, 2021 Share Posted May 7, 2021 32 minutes ago, Hoo said: Here's an initial response to your requests: Add a new, separate event for warnings in packet 3. We’ve added this to our backlog Add a means of detecting when a stop-go penalty has been served We’ve added this to our backlog Provide information about all assists used (currently just does a subset of them) We’ve added this to our backlog Add a way of indicating when a real player is in a paused state We’ve added this to our backlog Add checkpoints to help with delta calculation You should be able to use the m_lapDistance from LapData packet in conjunction with the m_trackLength from the Session Packet to give the a fraction the car is round the track. This should give “checkpoints” round the track from which you can work out the delta. Include the name of the player in the UDP data. We have a proposed solution that is with our legal team for review. Include formation lap status in safetyCarStatus field (using value 3). We will keep this in and update the documentation to show what this value does. Bug where m_resultStatus gives an unlisted value of 7 This has been fixed. We'll let you know if anything on the backlog gets implemented. 1. Thanks a lot 2. on your point 1 you wrote in packet 3. you wanted to say packet 2, right ? 3. on your point 5, i think the m_lapDistance is giving the lap distance even if i do donuts (I need to check that). so for me, it's not a reliable value, but i will check Thanks a lot for this ! Link to comment Share on other sites More sharing options...
Codemasters Staff Hoo Posted May 7, 2021 Author Codemasters Staff Share Posted May 7, 2021 1 minute ago, ThibaudPHP said: 2. on your point 1 you wrote in packet 3. you wanted to say packet 2, right ? I assumed you wanted something in the event packet, like we provide for penalty notification. Did you mean for this to be included in the LapData packet to indicate how many warnings a player received in a that lap? Link to comment Share on other sites More sharing options...
ThibaudPHP Posted May 7, 2021 Share Posted May 7, 2021 Just now, Hoo said: I assumed you wanted something in the event packet, like we provide for penalty notification. Did you mean for this to be included in the LapData packet to indicate how many warnings a player received in a that lap? The warning are already send on packet 3, it's an event. but if you don't receive the packet (some packet are lost) you never know the real number of warnings. So yes, I would like the number total of warning have his own field (on packet 2) like penalty have it on packet 2 (lapdata). Link to comment Share on other sites More sharing options...
Recommended Posts