Jump to content
Bug Reporting - PLEASE FOLLOW RULES AND COMPLETE REPORTS Read more... ×

F1 2020 UDP Specification

Recommended Posts

3 minutes ago, DaveyGravy said:

From what I'm hearing, it looks like there is some kind of issue with telemetry on Xbox as every user with issues appears to be on that platform.

Just to add to that, they too are on v1.01

Share this post


Link to post
Share on other sites

To confirm, the final UDP spec listed in the first post in this thread applies to v1.02 or later of the main game. Xbox users will need the next update to bring the UDP in line with this specification. I think a couple of the later changes were not available in v1.01. Apologies for the confusion with this.

  • Thanks 1

Share this post


Link to post
Share on other sites
4 minutes ago, Hoo said:

To confirm, the final UDP spec listed in the first post in this thread applies to v1.02 or later of the main game. Xbox users will need the next update to bring the UDP in line with this specification. I think a couple of the later changes were not available in v1.01. Apologies for the confusion with this.

Thanks @Hoo for clarifying. Do you know:

a) which changes missed the cut on Xbox - was it just the 'beta 3.1 changes'?

b) when the v1.02 update is due on Xbox?

Many thanks

Share this post


Link to post
Share on other sites
11 minutes ago, DaveyGravy said:

Thanks @Hoo for clarifying. Do you know:

a) which changes missed the cut on Xbox - was it just the 'beta 3.1 changes'?

b) when the v1.02 update is due on Xbox?

Many thanks

a) That looks correct. v1.01 is missing the DRS activation zone, suggested gear changes and a few bug fixes.

b) Hopefully soon!  

Share this post


Link to post
Share on other sites
Posted (edited)

@Hoo

Found two issues during testing today

1) The tyreInnerTemperature in CarTelemetry is different, that what is being shown in the MFD. I suspect, that the value is the real inner air temperature, not "carcass" temp, which is shown in MFD. I think with F1 2019 and maybe even with the beta (cannot be sure on that), the tyresInnerTemperature was same as in MFD. Any change for a fix?

2) During Time Trial in F1 2019 the lap data info was sent, which contained e.g. the lap distance and some other info of the ghost. Now in F1 2020 only players data is available, all other data (even the personal best ghost) is just 0's. I hope this is bug and not intentional. It would be great, if at least for the active Ghost there would be the laptime + sector times and the lapdistance per each packet. I used the lapdistance with F1 2019 to show laptime trace for the ghost, so my users could see where they were gaining on the ghost and where they lost time to the ghost. So any change, we could get the ghost's LapData filled with data as it was in F1 2019?

Extra: And one request for F1 2021. Any change you could change Sainz driverId to be something else than 0. Would make life easier, if/when we have to do data massage to fix/notice problems in the feed.

Edit: The tyreInnerTemperature is ok. Just a note to self, if you change from using direct index number to using special method, it is a good idea to update all locations, where the direct index number was used. ;-.)

Fix request: The lapdata for Ghost in Time Trial is still just 0's. Checked and in F1 2018 and f1 2019 the data was there. Would be great, if in addition to the players car, also Personal Best ghost + Active Ghost data would be filled in the PacketLapData in Time Trial.

Cheers.

Edited by LonelyRacer
The 1) bug was in my end. The 2) is still there.

Share this post


Link to post
Share on other sites
29 minutes ago, EnsiFerrum said:

@Hoo UDP Data in My Team is only in 2020 format?
 

Yes, thats only available in 2020 Format:

On 5/17/2020 at 5:30 PM, Hoo said:

My Team allows an extra team to race – this means that all the places in the packets where 20 cars were used, 22 are now needed. N.B. this will not be fixed in old formats (2019, 2018, legacy) – if you are in the “My Team” career mode with any format other than 2020 specified, no data will be output. All other game modes will function as before 

 

Share this post


Link to post
Share on other sites
Just now, StryderIT said:

Yes, thats only available in 2020 Format:

 

Ah, sure, makes sense.
My bad I forgot about this.
Thanks a lot.

Share this post


Link to post
Share on other sites
Posted (edited)

Hi,

I think not all penalties are stored in m_penalties. And if I clear a penalty in the pit I am not able to get this information.

Could you add/fix this?

 

Kind regards,

Mark

Edited by markundsteffi

Share this post


Link to post
Share on other sites
Posted (edited)

My list :

@Hoo i am on PS4 and it's seem on PC we don't have the same result with the nationality.


1. In unranked lobby (spectator or race), the game does not send the nationality. The car number sent is not the one of the player's avatar. If I take lewis, I receive a 0 for the nationality and a 44 for the number. Whereas as I configured my avatar, I expect a 28 for the nationality and a 15 for the number.

2. In ranked lobby (spectator or race), the game does not send nationality.

3. When I'm in a lobby, before the session starts, we get the 9 packet. I received for my case a 17 (or other weird number) for the AIControlled, 255 for my teamId. I see the real names of players (which shouldn't happen) and I think that the nationalities sent are wrong because I didn't have my 28.

4. In packet 2 and obviously in the 8, the cars that gave up have not a 6 but a 7 for m_resultStatus.

5. For the event PENA I receive some 255. Seem "logic" for OtherVehicleIdx because the car index start to 0, but for time. I think I have see it for places gained. need to recheck.
Array
(
    [PenaltyType] => 6
    [InfringementType] => 18
    [VehicleIdx] => 6
    [OtherVehicleIdx] => 255
    [Time] => 255
    [LapNum] => 1
    [PlacesGained] => 0
)

6. In multiplayer(rank and unranked lobby), when i am broke my own car or if I press start to quit and became spectator, I receive ~25 seconds after a data who told me I pass the pit lane. I did 5 test, 5 success.

7. On 2019, in formation lap (in unranked lobby and grand prix), the safety car (in packet 1) send a value 3. It was not a possible data on the appendixe, but for me it was a good way to detect the formation lap. It's same in 2020 and for me, it's cool because i can detect easyly the formation lap. Can you add on the "Appendices" than -> 3 = formation lap ?

8. Still on the Appendices, there are Hockenheim in 8. This track is not on the game, or maybe if we do the konami code (↑ ↑ ↓ ↓ ← → ← → B A) we will deblock it ?

 

 

Edited by ThibaudPHP
Message for Hoo
  • Agree 1

Share this post


Link to post
Share on other sites

We went a bit off-topic. I've hidden some of the messages, but decided to kept the "important" ones available 🙂 

E: Some editing has been done and there is some context lacking with the current messages. Some more messages have been hidden

Share this post


Link to post
Share on other sites

Coucou @Hoo

I found a new bug (or weird behavior).

When a racer, in multiplayer is disqualified, I receive the event (Grosjean :: Disqualified :: Ignoring drive through :: 255 :: 0)

but in packet 2 the resultStatus 's value stay on 2. When the last player still in race pass the finish lane, the packet 2 with the racers who are disqualified pass to 2 to 4.

Share this post


Link to post
Share on other sites

Coucou @Hoo (you will hate me lol)

When I join a lobby  (before to be ready or go in spectator mode). I receive packet 9 BUT if the race is launch, I receive packet 3 too. 🤔

Share this post


Link to post
Share on other sites
Posted (edited)

I can't see the name of the players in lobby, i have always char with "iocatore" or "player" visualized for all. is it normal? 

 

and also tyre usage or fuel remaining aren't visualized in lobby

Edited by Oasis81

Share this post


Link to post
Share on other sites
3 minutes ago, Oasis81 said:

I can't see the name of the players in lobby, i have always char with "iocatore" or "player" visualized for all. is it normal?

if you do reference to packet 9. I think there are an error on the data who are send. And normally, since 2017, codemaster don't have the right to send the realname.
if you do reference to packet 4. Since 2017, codemaster don't have the right to send the realname
 

4 minutes ago, Oasis81 said:

and also tyre usage or fuel remaining aren't visualized in lobby 

packet 7  ? Telemetry not public Or even with that ?
 

If you give me more information, i can do test to see if I have the same result than you

Share this post


Link to post
Share on other sites
Posted (edited)
25 minutes ago, ThibaudPHP said:

if you do reference to packet 9. I think there are an error on the data who are send. And normally, since 2017, codemaster don't have the right to send the realname.
if you do reference to packet 4. Since 2017, codemaster don't have the right to send the realname
 

packet 7  ? Telemetry not public Or even with that ?
 

If you give me more information, i can do test to see if I have the same result than you

 

for names packet 4 give me "player" or something like that, packet 9 give me nothing or 2/3 char without sense

but i don't understand, if i see it in the game there are just public. so why there aren't sent by udp?

 

about the packet 7, yes seems telemetry are not publi, i test it only with unranked lobby randomly to chek if it works. but also this, is nosense

Edited by Oasis81

Share this post


Link to post
Share on other sites

For the name, I invite you to read 2017,2018 and 2019 udp telemetry spec and you will see hoo, each year, explain than codemaster don't have the right to send name. We all tell than we can record them, stream them, etc, but the position of codemaster will never change. They will not send us nickname. ->

------

For the packet 7, it's the telemetry of all player are not public. I invite you to found a lobby with AI or go in grand prix mode. you will have the telemetry from the ai racers.

Quote

The following data items are set to zero if the player driving the car in question has their “Your Telemetry” set to “Restricted”:

Car status packet

  • m_fuelInTank
  • m_fuelCapacity
  • m_fuelMix
  • m_fuelRemainingLaps
  • m_frontBrakeBias
  • m_frontLeftWingDamage
  • m_frontRightWingDamage
  • m_rearWingDamage
  • m_engineDamage
  • m_gearBoxDamage
  • m_tyresWear (All four wheels)
  • m_tyresDamage (All four wheels)
  • m_ersDeployMode
  • m_ersStoreEnergy
  • m_ersDeployedThisLap
  • m_ersHarvestedThisLapMGUK
  • m_ersHarvestedThisLapMGUH
  • m_tyresAgeLaps

 

  • Thanks 1

Share this post


Link to post
Share on other sites
1 hour ago, Oasis81 said:

I can't see the name of the players in lobby, i have always char with "iocatore" or "player" visualized for all. is it normal? 

 

and also tyre usage or fuel remaining aren't visualized in lobby

Hi,

I see those names too, i.e. player and "giocatore" (player in Italian), haven't seen yet 'joueur'. My wild guess is that these are PS4 or XBox players.

I don't use the lobby packet for anything, as the player order in that packet is different than in any other packets. I was just checking it during the last days to see, if I could use it for something, but to no avail.

Cheers.

  • Thanks 1

Share this post


Link to post
Share on other sites

Thanks for all the feedback so far. We will be going through this next week with the team to identify any bugs that we can fix.

Regarding the player names issue, if anyone can provide examples of other current games that also provide player names through a similar API or output system, that would be very helpful for us to use as reference. 🙂 

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)
18 minutes ago, Hoo said:

Thanks for all the feedback so far. We will be going through this next week with the team to identify any bugs that we can fix.

Regarding the player names issue, if anyone can provide examples of other current games that also provide player names through a similar API or output system, that would be very helpful for us to use as reference. 🙂 

ACC has this through the Broadcast API. In ACC there can be many drivers per car. There is EntryListCar, which has car data (racenumber etc) and that has BroadcastDriverInfo[], which has first name, last name, short name, category and nationality.

In Project Cars 2/AMS2 there is PacketParticipantsData, which has 3 arrays name[], nationality[], participantMPId[], name is String, 2 others are int16. There is also another struct ParticipantStatsInfo, which has array ParticipantStatsInfo[], which contains the players OnlineRep (has 2 elements, safety & "racecraft") + timing info.

The PC2 stucture is bit messy, the ACC model is quite nice. With ACC there are some other issues with their broadcast API, which has some lag/latency issues, i.e. data is not always super up-to-date.

Cheers.

Edited by LonelyRacer
Added names of the PC2 packets.
  • Agree 1

Share this post


Link to post
Share on other sites

Sorry if i overlooked this or it was already covered, or im just being dumb and missed something, but im a bit confused with the header data. Particularly the PacketID.

According to the docs for 2020 UDP, the PacketID should be the sixth byte, right? m_packetFormat is first two, major is third, minor is fourth, version is fifth, and packet id is sixth.


My problem is that if i go off of that packetID value, it is almost always a 7 (CarStatus) and occationally i get a random other one. But if i compare the size of the packet, i get a more correct result.

image.png.3dd40ee6f4de9e19d194ca95f780c923.png

Looking through this thread it doesnt seem like anyone else has this problem. So what am i doing wrong?

Share this post


Link to post
Share on other sites
Posted (edited)

maybe it's began to 0 ? And the byte you need to read is the 5th. Have you the 2020 for the first two bytes ? and 04 (ps4) 02(xbox) for the next one ?

Edited by ThibaudPHP
udapte version

Share this post


Link to post
Share on other sites
Posted (edited)

My array is zero based, so it is 5th index, but is still the sixth byte. Not sure what you mean about the 04 and 02 part? I'm using PC so idk if that is different? 

If you see my previous screenshot:

the first two bytes [0](228) and [1](7) are associated with the Packet Format (2020),

the next byte [2] is Game Major Version (1),

the next one [3] is Game Minor Version (3),

next is byte [4] is Packet Version (1)

and byte [5] should be the PacketID

Finally the last byte in my samples should be part of the SessionUID which only changes when i start a new session.

As far as i have seen,  the first 5 bytes never change, and the 7th byte only changes on a new session. So that means the sixth byte has to be the PacketID, right?

Edited by Mungoid

Share this post


Link to post
Share on other sites

04 -> minor version playstation
02 -> minor version xbox
I don't know what is the minor version for PC right now 😄

If yours two first bytes DON'T return 2020. You don't read the data correctly.
Do you unpack data from little endian ?

Share this post


Link to post
Share on other sites
5 hours ago, Hoo said:

Thanks for all the feedback so far. We will be going through this next week with the team to identify any bugs that we can fix.

Regarding the player names issue, if anyone can provide examples of other current games that also provide player names through a similar API or output system, that would be very helpful for us to use as reference. 🙂 

Hi Hoo,

PC1 and PC2 have always had player names for both the PC and consoles right from the moment they added their UDP telemetry protocol. iRacing does as well (although the interface itself is different), but they enforce the use of peoples real names, ie you can only play the sim using your real name, you cant use an alias or fake name at all, its tied to your payment information.

As far as I understand it, the customers data (ie name) can be used as is required for the provision of the services you provide to them (eg multiplayer sim racing), what you're not allowed to do is collect and store personal information for other reasons outside the expected service provisions, and you shouldn't be storing it for longer than is necessary. Any player that races online knows exactly what name is being used in that session, and i don't really see how the telemetry side is any different as their name is visible to every player/spectator in that session. Your not exposing additional information about them that is not already available on the screen, via an online live stream, or in the communications packets the games uses for synchronising the players in the session over the network.

I would think that all that should be necessary on your side is to state in the terms of service that the user agrees to when they start the game for the first time, is that their user name will be visible to all other users in a multiplayer session, that there is the possibility that it may be included in a video recording or live stream broadcast by another user in that session and that it will be transmitted to other users in the session who have the UDP telemetry output enabled. I would also just state that if they do not agree to that part then they should not participate in any online sessions. At the end of the day then they have been informed, and it is their choice whether they want to use multiplayer or not. Everyone that plays in online sessions is aware what their name shows up as, and that other players can see it. 

If there are concerns about the telemetry data being broadcast across the internet, then just restrict the IP that the player can enter to any of the valid private IP address ranges, there are only a couple so its easy to restrict. That way you also ensure telemetry output is restricted to each users internal home network.

I really hope this issue can be resolved, so many people complain about it and understand why its only an issue for the F1 games, when other games like PC1/2 have been doing it for many years.

I would be interested to know what the legal justification for blocking it currently is, or whether its just a case of taking an overly cautious approach to a complex regulation that may be hard to understand, especially for non-technical people in how it relates to software.

Cheers

 

  • Agree 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×