Page 2 of 5 FirstFirst 1234 ... LastLast
Results 11 to 20 of 45

Thread: Ideas for future versions

  1. #11
    Got it, will give it a try tonight.

  2. #12
    Junior Member
    Join Date
    Mar 2017
    Posts
    4
    Sounds great, guys. Keep rolling.

  3. #13
    Crew Chief Mega Corp CEO mr_belowski's Avatar
    Join Date
    Feb 2017
    Posts
    1,815
    just wired up a load of these corner messages. Still work in progress and more work to be done, but the app can now read the corner name when it tells you someone has gone off - e.g.

    "yellow flag in sector 1"
    [4 or 5 seconds later]
    "looks like Britton has binned it in Druids"

    or
    "yellow flag in sector 2"
    [4 or 5 seconds later]
    "we think the leader has gone off in Beckets"


    In order for all this to function, we need sound files for corner names - I've recorded these for Bathurst, Brands Indy, Suzuka and Spa, along with some generic ones ("the hairpin" etc). These then need wiring up to game track definitions and track locations, like this:

    Code:
    {
        "TrackLandmarksData": [
            {
                "rf1TrackNames": [ "Bathurst Mount Panorama" ],
                "rf2TrackNames": [ "Bathurst" ],            
                "acTrackNames": [ "acu_bathurst:" ],
                "pcarsTrackName": "Bathurst:",
                "raceroomLayoutId": 1846,
                "trackLandmarks": [
                    {
                        "landmarkName": "griffins_bend",
                        "distanceRoundLapStart": 1290,
                        "distanceRoundLapEnd": 1480,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "the_cutting",
                        "distanceRoundLapStart": 1720,
                        "distanceRoundLapEnd": 1910,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "the_dipper",
                        "distanceRoundLapStart": 3240,
                        "distanceRoundLapEnd": 3420,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "forrests_elbow",
                        "distanceRoundLapStart": 3700,
                        "distanceRoundLapEnd": 3800,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "the_chase",
                        "distanceRoundLapStart": 5060,
                        "distanceRoundLapEnd": 5500,
                        "isCommonOvertakingSpot": true
                    }
                ]
            },
            {
                "rf1TrackNames": [ "Brands Indy" ],
                "rf2TrackNames": [ "Brands Hatch Indy" ],
                "acTrackNames": [ "ks_brands_hatch:indy" ],
                "pcarsTrackName": "Brands Hatch:Indy",
                "raceroomLayoutId": 2520,
                "trackLandmarks": [
                    {
                        "landmarkName": "paddock_hill",
                        "distanceRoundLapStart": 270,
                        "distanceRoundLapEnd": 440,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "druids",
                        "distanceRoundLapStart": 590,
                        "distanceRoundLapEnd": 690,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "graham_hill_bend",
                        "distanceRoundLapStart": 850,
                        "distanceRoundLapEnd": 930,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "surtees",
                        "distanceRoundLapStart": 1230,
                        "distanceRoundLapEnd": 1300,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "clearways",
                        "distanceRoundLapStart": 1350,
                        "distanceRoundLapEnd": 1530,
                        "isCommonOvertakingSpot": false
                    }
                ]
            },
            {
                "rf1TrackNames": [ "Brands GP" ],
                "rf2TrackNames": [ "Brands Hatch GP" ],
                "acTrackNames": [ "ks_brands_hatch:gp" ],
                "pcarsTrackName": "Brands Hatch:Grand Prix",
                "trackLandmarks": [
                    {
                        "landmarkName": "paddock_hill",
                        "distanceRoundLapStart": 270,
                        "distanceRoundLapEnd": 440,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "druids",
                        "distanceRoundLapStart": 590,
                        "distanceRoundLapEnd": 690,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "graham_hill_bend",
                        "distanceRoundLapStart": 850,
                        "distanceRoundLapEnd": 930,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "surtees",
                        "distanceRoundLapStart": 1230,
                        "distanceRoundLapEnd": 1300,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "westfield",
                        "distanceRoundLapStart": 2320,
                        "distanceRoundLapEnd": 2480,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "stirlings",
                        "distanceRoundLapStart": 2925,
                        "distanceRoundLapEnd": 3050,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "clearways",
                        "distanceRoundLapStart": 3230,
                        "distanceRoundLapEnd": 3430,
                        "isCommonOvertakingSpot": false
                    }
                ]
            },
            {
                "rf1TrackNames": [ "Silverstone -- National Layout" ],
                "rf2TrackNames": [ "Silverstone -- National Layout" ],
                "acTrackNames": [ "ks_silverstone:national" ],
                "pcarsTrackName": "Silverstone:National",
                "raceroomLayoutId": 5817,
                "trackLandmarks": [
                    {
                        "landmarkName": "copse",
                        "distanceRoundLapStart": 180,
                        "distanceRoundLapEnd": 360,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "beckets",
                        "distanceRoundLapStart": 730,
                        "distanceRoundLapEnd": 1020,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "brooklands",
                        "distanceRoundLapStart": 1680,
                        "distanceRoundLapEnd": 1830,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "luffield",
                        "distanceRoundLapStart": 1890,
                        "distanceRoundLapEnd": 2060,
                        "isCommonOvertakingSpot": true
                    }
                ]
            },
            {
                "rf1TrackNames": [ "Spielberg Grand Prix Circuit" ],
                "rf2TrackNames": [ "Spielberg Grand Prix Circuit" ],
                "acTrackNames": [ "ks_red_bull_ring:layout_gp", "spielberg:circuit_full" ],
                "raceroomLayoutId": 2556,
                "trackLandmarks": [
                    {
                        "landmarkName": "turn1",
                        "distanceRoundLapStart": 310,
                        "distanceRoundLapEnd": 390,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "turn2",
                        "distanceRoundLapStart": 1250,
                        "distanceRoundLapEnd": 1330,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "turn3",
                        "distanceRoundLapStart": 2060,
                        "distanceRoundLapEnd": 2190,
                        "isCommonOvertakingSpot": true
                    },
                    {
                        "landmarkName": "turn4",
                        "distanceRoundLapStart": 2550,
                        "distanceRoundLapEnd": 2700,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "turn5",
                        "distanceRoundLapStart": 2860,
                        "distanceRoundLapEnd": 3000,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "turn6",
                        "distanceRoundLapStart": 3010,
                        "distanceRoundLapEnd": 3180,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "turn7",
                        "distanceRoundLapStart": 3600,
                        "distanceRoundLapEnd": 3730,
                        "isCommonOvertakingSpot": false
                    },
                    {
                        "landmarkName": "turn8",
                        "distanceRoundLapStart": 3850,
                        "distanceRoundLapEnd": 3940,
                        "isCommonOvertakingSpot": false
                    }
                ]
            }
        ]
    }
    So as you can see, there's a fair bit of work to do to capture the necessary data

  4. #14
    Crew Chief Mega Corp CEO mr_belowski's Avatar
    Join Date
    Feb 2017
    Posts
    1,815
    Last post for a while - I'm away this weekend (no kids, yay )

    The code in master now has an additional key binding - "Print track and position info". When you press this while out on track, it writes a line to the console with the track name, your current distance around the lap, and your current car ID. These are the bits of info we need to populate the carClassData.json, and this new-fangled trackLandmarksData.json.

    For track landmarks, start a session and drive to the first corner you want the app to know about and press the key you've assigned to "Print track and position info". This writes something like:
    TrackName: Bathurst Mount Panorama, distanceRoundLap = 1284.5, player's car ID: Marcas

    for Raceroom it'll print the integer IDs instead of names, but it works the same way.

    That gets your rf1TrackName / rf2TrackName / raceroomLayoutId / whatever value, and your distanceRoundLapStart value. Drive to the corner exit and do the same for the distanceRoundLapEnd value for this corner, allowing us to build up the information we need in the track landmarks file.

    I'm not going to record every corner name in the world, but I've already got recordings for turn1 to turn15, "the hairpin", "the esses" and "the chicane", along with famous corners for Spa, Suzuka, Bathurst, Brands Indy, and a couple of others. For well known corners I do intend to record proper names (as long as I can actually pronounce them). So by using generic names for most corners and proper names for well known ones I think we can build up this data set pretty quickly.

    Then we can use it in more imaginative ways - it's currently only wired into the yellow flag announcements, but it's pretty easy to (for example) use it when asking about another player - "where is Britton?"... "P4, 7.6 seconds behind. He's in The Chase".

  5. #15
    Very good Jim! Maybe to simplify development, in Debug mode we could also test if player vehicle is the one standing while yellow. I had race yesterday and while there were yellows, nothing was announced, it is a fairly uncommon event. But looks very promising and file structure makes sense.

  6. #16
    Crew Chief Mega Corp CEO mr_belowski's Avatar
    Join Date
    Feb 2017
    Posts
    1,815
    good idea, I'll add that

    [edit]

    actually that's going to be a lot harder than we think because the player isn't in the OpponentData set, which is where all the location and name data is being pulled from

  7. #17
    Crew Chief Mega Corp CEO mr_belowski's Avatar
    Join Date
    Feb 2017
    Posts
    1,815
    to make this more sensitive, I've added a user setting max_distance_moved_for_yellow_announcement. Any car in the same sector as the yellow, which has moved less than this many metres round the track over a period of 3 seconds, is considered to be involved in the incident. So if you increase this number from the default (10 metres) it'll make it more likely to make announcements (but they're more likely to be wrong).

    I'll package a .msi for this weekend, but you'll need to put all the latest sounds into your AppData/...../sounds/ folder

    here's the.msi

    [msi removed because it's now out of date]

    Feel free to edit this link out of this post when you've downloaded it

  8. #18
    Thanks Jim, safe travels, I hope it will be pleasant - change of environment is good.
    Anyone would like to help us collect corner distances for their favorite tracks? In addition to Jim's described mechanism, for rFactor 2 there's monitor application, that you can run while driving or even while running AI. It shows mLapDist value, and all the rest of info, track name etc.

    I will be able to share out sounds, and latest rF2 binaries of CC.

  9. #19
    Crew Chief Mega Corp CEO mr_belowski's Avatar
    Join Date
    Feb 2017
    Posts
    1,815
    Right, quick update on progress...

    I've been adding lots of corner name recordings and data. These are used in 2 places - yellow flag announcements ("Yellow flag in sector2... looks like Bob has gone off in The Dipper") and when you're catching / being held up by another car or are being caught / pressured by another car. In these cases the app makes a best-guess as to which corner your best chance at passing will be (or which corner you need to defend in). To do this the app uses the best corner entry speed over the last few laps along with the best total time to complete that corner. It compares these with your opponent and the corner where you're fastest relative to him will be used in a message like "You're reeling Bob in, the gap is now 3.2 seconds... You're faster than him into Tosa". When you're being pressured or caught it works a similar way with with the corner where you're slowest relative to him - "hold your nerve, don't let him distract you... he's quicker than you through Redgate".

    The app uses corner entry speed and total time in corner to try and make a best guess as to which corner it should warn you about (it also prioritises corner which are good overtaking spots) - I'm still refining the rules here.

    I've wired all this up and done recordings for corners on Brands Hatch (indy and GP), Hockenheim (GP), Donington (national and GP), Imola, Spa, Bathurst, Redbull ring (GP) and Silverstone (national). So there are many more tracks to add data for

  10. #20
    If there are volunteers willing to collect corner data (or enthusiasts who want to hear something about their favorite tracks), there's rather easy way in rF2 by running my tool and running rF2 in windowed mode with AI driving + pencil or notepad and wikipedia for corner names

Page 2 of 5 FirstFirst 1234 ... LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •