Welcome to the brand new Codemasters Forums! Be sure to check the FAQ and Forum Rules before you get started.

F1 2017 D-Box and UDP Output Specification

135

Comments

  • cjorgens79cjorgens79 Member New Car Smell
    edited July 8
    @Hoo - Its been hard to find any multiplayer sessions, I've only managed to come across one so far which only had one other player. Either way i recorded the session telemetry stream so i could review it later. I have noticed that the timing fields are a little bit out of sync for the other players, the sector/lap/lapDist change doesn't line up with the sector, last lap time, best lap time, current lap time change. For example, the opponent crosses the start finish line and the sector number will reset to 0, the lap number will increment by one, but the other timing fields will continue to have data from the previous sector/lap (including the running lap time exceeding the actual lap time) for about 10 packets or so. This only seems to occur for the data for the other opponents in the session. The actual players telemetry data updates slightly opposite, it seems the sector and lap number update are a packet behind the rest of the timing data for the player.

    Example screenshot of the player data in excel
    https://1drv.ms/i/s!ApGj0SbKlZGjgy2p9xsbEauBUpNV

    Example screenshot of the opponent data in excel
    https://1drv.ms/i/s!ApGj0SbKlZGjgy5GWsgUIWQSFSAy

    Here is the full XLS dump of the CarUDPData for the player (P1) and the opponent (P2)
    https://1drv.ms/x/s!ApGj0SbKlZGjgy8I2ktv7G1tXxmn

    The lap/sector/lapDist fields have been highlighted yellow, the other timing fields highlighted light brown. You can see that the sector/lap/lapDist changes occur out of sync for these between the two groups of data. Compare the player (out by 1 packet) with the opponent data (out by 10 packets).

    They should really update simultaneously, otherwise it makes processing the telemetry rather difficult as one would usually process timing changes on the sector boundaries.
  • cjorgens79cjorgens79 Member New Car Smell
    Another issue i noticed is that the CarUDPData "BestLapTime" can get set to an invalid lap's time. Ideally this should only represent the best valid lap completed, it means it will always contain the players fastest valid lap time for the session which is something that we need to know for qualifying.
  • HooHoo Member, Codemasters admin
    @cjorgens79
    • Hard to find multiplayer sessions. Try checking out the front page of the beta forum to see when the beta testers are arranging games. We are also hoping to increase the number of beta testers to encourage more games. If that doesn't work then we've got some other options that we could explore. 
    • Player info for lap and sector time arrives a packet late. This looks like a a one frame delay between some internal systems which handle progress and those which communicate the information to other systems. Is the timing of this critical to what you are doing?
    • Info for other players arrives 10 packets late. The network handles / predicts lap progress to keep the game in sync, whereas information about lap and sector times has to transmitted by the local machine so will be delayed by latency between to the two machines. I think this is what's happening here. I suspect if you looked at this in an offline race with AI that you'll get results similar to player's own lap info. If this presents a significant issue then we can look at the data we send and when we send it to try at group it together. 

  • KafumantoKafumanto Member New Car Smell
    @Hoo
    we are working on a similar system, and for us it's important that data are congruent: i.e. having related data changing at the same time. For us it's ok having some latency, but having related data changing together would be important.
  • HooHoo Member, Codemasters admin
    I'll ask the team to look into this and see what the impact would be.
  • cjorgens79cjorgens79 Member New Car Smell
    @Hoo
    Yes it is important to have the data in sync both for the player and opponents. I think using the real opponent data only in the telemetry would be best, rather than the predictive data. In the data i exported in the earlier post, there is a point in that race where the opponent was warping back and forth across a good hundred or so meter section of track, if this happened to occur over a sector boundary it would have made dealing with it very difficult. So true opponent data is what would be best IMO, even if it means its a little out of date in the event of network sync iss@Hoondog

    Re the MP sessions, i think some of it may be due to timezone, im in Perth, Western Australia (+8GMT), so the times i am able to work on this aren't usually when a lot of EU/US players are on, but ill make do. I may be able to get some of the other beta testers to record some MP sessions for me with my recording tool if necessary.
  • 1512marcel1512marcel Member, Drivers Petrol Head
    There kingmjj said:
    This may be the dumbest question ever but is their some UDP telemetry software I can use on PC to read back telemetry from my beta on Xbox?
    There might be just such a thing. Check out this post: http://forums.codemasters.com/discussion/comment/278327#Comment_278327
    Not sure however if there is a possibility to read back telemetry data from the XB1. Anyway, it's a step forward being able to use pc tools and apps in combination with the consoles.
    If you no longer go for a gap that exists, you are no longer a racing driver.
    Ayrton Senna
  • JuanCarMRJuanCarMR Member Unleaded
    @cjorgens79 in the app in F1 2017, we will need to do all the process of the link the app with the game or it will be on fly like Project Cars is???
    It is a little bit tedious because yo need first of all link them before do any other things, so I do not usually use it in F1 2016. I always forget and when I remember I don't want to exit to the main menu... moreover, the app do not give you much relevant information...
  • cjorgens79cjorgens79 Member New Car Smell
    JuanCarMR said:
    @cjorgens79 in the app in F1 2017, we will need to do all the process of the link the app with the game or it will be on fly like Project Cars is???
    It is a little bit tedious because yo need first of all link them before do any other things, so I do not usually use it in F1 2016. I always forget and when I remember I don't want to exit to the main menu... moreover, the app do not give you much relevant information...
    As far as I know the UDP telemetry settings in F1 2017 are supposed to persist now between restarts on the consoles, however i don't have a console myself to confirm this but we were told this was fixed.

    The new api has alot more information, so it will have pretty much everything (+ some extras) that pCars Dash has for project cars. 
  • DaveyGravyDaveyGravy Member New Car Smell
    @Hoo I'm testing UDP on a PS4 and I think there are some issues with the CarUDPData struct. Everything in the packet is fine until the CarUDPData  m_car_data[20];  part. It seems like something is mis-aligned in the data that is being sent as far as I can tell. 

    For example, the sector numbers are in the m_tyreCompound field whilst the tyre compounds are in the m_trackPosition.
  • HooHoo Member, Codemasters admin
    Thanks for the info. I'll get the team to test this out.
  • DaveyGravyDaveyGravy Member New Car Smell
    Thanks @Hoo - doing some further digging, it seems CarUDPData is out from the start as m_worldPosition[3] has weird, erratic data in it.
  • cjorgens79cjorgens79 Member New Car Smell
    Thanks @Hoo - doing some further digging, it seems CarUDPData is out from the start as m_worldPosition[3] has weird, erratic data in it.
    What language are you developing in, have you enabled structure packing? if not you will be getting incorrect data down that end of the struct
  • DaveyGravyDaveyGravy Member New Car Smell
    @cjorgens79 Objective C - I thought I had the struct in the right mode already as everything else lined up, but it turns out I didn't and needed to enable packing directly. Thanks for the nudge in the right direction, looks OK now.

    @Hoo Apologies for the false alarm, everything looks OK with this, my mistake.

    Thanks all
  • zappadoczappadoc Member New Car Smell
    edited July 14
    kingmjj said:
    This may be the dumbest question ever but is their some UDP telemetry software I can use on PC to read back telemetry from my beta on Xbox?
    Hi,
    Absolutely, you can use a supported device display or racing display emulator by SLIMax Mgr Pro and the F1 2017 Console Bridge. More info available on website and forum:
    http://www.eksimracing.com/slimax-manager-pro-console-bridge/

    100% FREE solution for XB1 or PS4 with SLIMax Mgr Pro + F1 Display Emulator on Android tablet/phone:
    http://www.eksimracing.com/forum/index.php?topic=3535.0

    Cheers,
    z


    Post edited by zappadoc on
  • baxbax Member New Car Smell
    edited July 15
    Sorry if I can not check by myself (I'm a beta tester now but not at home this week :( and I'm afraid to be late to give my feedback)
    I think there is an important info missing from the live broadcaster point of view: who is the currently viewed driver in "spectator mode". If I want to show dedicated informations about the viewed driver (delay evolution, battle with, sector times, position in the championship, even the picture), I need to know whom I'm watching.

    byte  m_player_car_index;         // index of player's car in the array

    Don't know which value this parameter is giving when I'm in the spectator mode... maybe null or zero because I'm not a "player".
    Maybe CM developers can add a field

    byte  m_viewed_car_index;         // index of viewed car in the array

    or, if not adding, giving "player index" when I'm a player, while "viewed index" when I'm a spectator
    Post edited by bax on
  • DaveyGravyDaveyGravy Member New Car Smell
    As far as I know the UDP telemetry settings in F1 2017 are supposed to persist now between restarts on the consoles, however i don't have a console myself to confirm this but we were told this was fixed.
    It's certainly the case on PS4.
  • DaveyGravyDaveyGravy Member New Car Smell
    @Hoo Quick question regarding pits:
    byte  m_inPits;           // 0 = none, 1 = pitting, 2 = in pit area

    My interpretation of this is that we should see a status of 1 followed by 2, but it seems to be the other way round. Do you know the intention with these status values?

    Thanks
    David
  • cjorgens79cjorgens79 Member New Car Smell
    I've had a chance to try out a full grid of cars now that the options for the MP sessions are unlocked. What i have found is that the team/driver mappings are all wrong, they appear to still be linked to F1 2016 combinations.

    These are the current driver combinations i am getting from the game based on the ID's you listed on the first page. Note that there are 4 driver Ids unaccounted for on the first page, 8 (rosberg), 4 (button), 24 (nasr) and 68 (gutierrez) which are 2016 drivers who are being output as the driverId's in 2017. The others you can see are in the wrong teams, bottas is in williams (2016 team), hulk is in force india (2016 team), magnussen at renault (2016 team)

    Mercedes - Lewis Hamilton
    Mercedes - DRIVER 8
    Ferrari - Sebastian Vettel
    Ferrari - Kimi Räikkönen
    RedBull - Daniel Ricciardo
    RedBull - Max Verstappen
    Force India - Sergio Perez
    Force India - Nico Hulkenburg
    Williams - Felipe Massa
    Williams - Valtteri Bottas
    McLaren - Fernando Alonso
    McLaren - DRIVER 4
    Haas - Romain Grosjean
    Haas - DRIVER 68
    Sauber - Marcus Ericsson
    Sauber - DRIVER 24
    Renault - Kevin Magnussen
    Renault - Jolyon Palmer
    Toro Rosso - Daniil Kvyat
    Toro Rosso - Carlos Sainz Jr.

  • cjorgens79cjorgens79 Member New Car Smell
    One other issue i noticed is that when you go into the pause screen, the telemetry stops. Which is not a problem in any single player games as the entire simulation stops, however in a MP session this is a problem as the rest of the players are still playing. This means you can miss a chunk of important timing telemetry from the other players if you have gone into the pause screen to say make some adjustments to your controller settings mid session. This ties into the same sort of thing regarding continuing to run the timing after the end of a session, but pausing the telemetry used for motion platforms.
Sign In or Register to comment.