SHO Weather

From Simwiki.net
Jump to navigation Jump to search

Gtr2-start-weekend-launcher-240505.jpg

Image: GTR2 Start Weekend Launcher with preconfigured weekend weather for test days, Practice, Qualifying, and Race sessions

SHO Weather is just an experiment for now to see how far I can go with weather. In the first release, you can choose different weekend weather which I've tried to make feel consistent throughout the sessions of a race weekend.

Download

Click here to download

Changes

24050501

  • Average weather generated for each GTR2 original track location based on real weather data
  • Launcher updated to allow launching with a random track's weather file

Install

  1. Extract to GTR2 folder
  2. Run __GTR2__Start__Weekend.cmd and choose desired Weekend Weather
  3. Choose "Changeable" for Rain option when starting your session

Weather will now progress per the custom UserData\Log\weather.txt file put in place by the cmd script.

Launcher

The launcher is a simple cmd script that handles swapping in and out custom weather files with the stock UserData\Log\weather.txt file.

The launcher handles setting the read-only attribute which prevents GTR2 from re-generating the file every session. It then undoes this when you exit GTR2 so everything goes back to normal.

Weather

GTR2's original weather generation algorithm is very uninteresting and you'll rarely see the weather change in a single session.

These custom weather files create more interesting weather scenarios in each session which basically means that there will be some kind of weather change in each session.

Autosim Weather Generator

The Autosim Weather Generator is available from eSports-racing.de and still works on Windows 10(*).

  • It was working fine until I installed Visual Studio with .NET and now it seems to be acting up. So, you may have to uninstall Visual Studio and/or those .NET packages to see it work.

Here's a demonstration of the app:

Here's what one weather set looks like in the app:

Gtr2-autosim-weather.jpg

Real Weather Data

I purchased real weather data from openweathermap.org for all of the GTR2 track locations. Anyone can purchase any location for USD $10 per location.

I'm providing it here in case anyone is interested in making projects out of the data.

The data license is a Creative Commons-like attribution license which means you're basically free to do anything you just have to attribute the license.

Download Real Weather Data

http://simwiki.net/files/gtr2-real-weather-data.zip

Weather Generation Script

I have a weather generation script up and running in PHP which generates GTR2 weather files using the OpenWeatherMap data to find min/max/avg temps, humidity, dry/rainy/stormy and generate weather files that generally reflect realistic weather for the track location.

I plan to release the generation script and the generated weather files in upcoming releases.

OpenWeatherMap Weather Database Files

In the download, you'll find the following files:

Anderstorp_Racing_Club_57_261829_13_600247_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Autodromo_di_Pergusa_37_520353_14_304795_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Autodromo_Enzo_e_Dino_Ferrari_44_344719_11_715851_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Autódromo_Fernanda_Pires_da_Silva_38_749097_-9_393499_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Autodromo_Nazionale_Monza_45_61737_9_281464_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Circuit_de_Barcelona-Catalunya_41_56998_2_260753_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Circuit_of_Spa-Francorchamps_50_444522_5_965393_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Circuit_Ricardo_Tormo_39_484306_-0_629025_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Donington_Park_Circuit_52_829532_-1_381452_OpenWeatherMap_5d1ef5f159e11881a91b89146ca4a099.csv
Dubai_Autodrome_25_048061_55_23735_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Hockenheimring_Baden-Württemberg_49_327149_8_565487_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Masaryk_Circuit_49_203578_16_444128_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Motorsport_Arena_Oschersleben_52_025735_11_278023_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Nevers_Magny_Cours_Circuit_46_863809_3_162568_OpenWeatherMap_66271d3123a6580008cf2b7d.csv
Zhuhai_International_Circuit_22_360426_113_56353_OpenWeatherMap_66271d3123a6580008cf2b7d.csv

Each file contains data that looks like this:

dt,dt_iso,timezone,city_name,lat,lon,temp,visibility,dew_point,feels_like,temp_min,temp_max,pressure,sea_level,grnd_level,humidity,wind_speed,wind_deg,wind_gust,rain_1h,rain_3h,snow_1h,snow_3h,clouds_all,weather_id,weather_main,weather_description,weather_icon
283996800,1979-01-01 00:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,266.79,,263.5,260.19,266.22,267.13,1012,,,75,5.13,349,,,,,,5,800,Clear,sky is clear,01n
284000400,1979-01-01 01:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,266.84,,263.24,260.29,266.22,267.1,1014,,,73,5.07,350,,,,,,2,800,Clear,sky is clear,01n
284004000,1979-01-01 02:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,266.81,,263.06,260.35,266.39,267.04,1014,,,72,4.94,347,,,,,,0,800,Clear,sky is clear,01n
284007600,1979-01-01 03:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,265.85,,262.73,259.16,265.48,266.22,1015,,,76,4.93,344,,,,,,0,800,Clear,sky is clear,01n
284011200,1979-01-01 04:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,265.78,,262.81,259,265.35,266.33,1016,,,77,5.02,341,,,,,,0,800,Clear,sky is clear,01n
284014800,1979-01-01 05:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,265.77,,263.23,258.95,265.34,266.33,1017,,,80,5.07,342,,,,,,0,800,Clear,sky is clear,01n
284018400,1979-01-01 06:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,265.82,,263.28,259.15,265.22,266.33,1018,,,80,4.89,343,,,,,,0,800,Clear,sky is clear,01n
284022000,1979-01-01 07:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,265.74,,262.92,259.38,265.22,266.33,1019,,,78,4.46,343,,,,,,0,800,Clear,sky is clear,01n
284025600,1979-01-01 08:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,265.77,,263.51,259.73,265.36,266.33,1020,,,82,4.08,339,,,,,,0,800,Clear,sky is clear,01n
284029200,1979-01-01 09:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,266.44,,262.54,260.68,266.01,266.69,1021,,,71,3.93,334,,,,,,17,801,Clouds,few clouds,02d
284032800,1979-01-01 10:00:00 +0000 UTC,0,Donington Park Circuit,52.829532,-1.381452,267.67,,264.36,262.42,266.22,267.96,1021,,,75,3.67,320,,,,,,73,803,Clouds,broken clouds

OpenWeatherMap Weather Database File License

OpenWeatherMap weather database files are licensed under Open Data Commons Open Database License (ODbL) v1.0. This license requires that users attribute any public use of the database, or works produced from the database, in the manner specified in the ODbL. It allows users to share (copy, distribute, and use the data), create (produce works from the data), and adapt (modify, transform, and build on the data), for commercial and noncommercial purposes.

View a summary of the license here: https://opendatacommons.org/licenses/odbl/summary/

View the full license here: https://opendatacommons.org/licenses/odbl/1-0/.

You don't have to ask permission for legitimate uses. You just have to attribute the license.

Old Changes

...

Weather File Troubleshooting

  • Ensure Rainfall Changeable in-game
  • Symptom: Conditions/Forecast Icons stop working reliably.
    • Advice: Check file structure and syntax

Weather Notepad

These notes are generally tested and confirmed true

File Structure and Syntax:
- Use spaces not tabs
- Use space indents to be safe and to be consistent with original weather.txt
- Check brackets
- End with empty blank line

Session vs Weather File Sections:
- Driving School = Dynamic Weather, not based on weather.txt (Confirmed with read-only dry weather.txt 240506)
- Time Trial = Open Practice (says so in Garage screen)
- Free Practice (Race Weekend) = Open Practice

Are HAT files caching weather file data and we might need to enable rebuilding? -->
- No. Still happens even when setting: Always Rebuild HAT="1" // Build HAT database everytime tracks are loaded (for development purposes)

Minute{} Blocks:
- Must specify numeric minute Minute=1.23, not just "Minute" or else GTR2 seems to think the last Minute is the initial conditions and the other Minutes are ignored 
- Minute=0.00{} is the initial conditions / It appears to be skipped / Must start with Minute > 0 or higher  (Minute=0.10 works)

Rainfall (in-game):
- Rainfall is not the same as Conditions
- Does Rainfall specify max Conditions? Ex. Rainfall 80% means max Conditions=80?
  - No, see Rainfall table below.
- Rainfall:
	Rainfall:	Track,		Conditions,				Forecast
	None: 		Dry,		Sunny,					Sunny
	10%:  		Damp, 		Cloudy w/Rain,			Cloudy w/Rain
	20%:  		Damp, 		Cloudy w/Rain,			Cloudy w/Rain
	30%:  		Damp, 		Cloudy w/Rain,			Cloudy w/Rain
	40%:  		Wet,		Cloudy w/Rain,			Cloudy w/Rain
	50%:  		Wet,		Cloudy w/Rain,			Cloudy w/Rain
	60%:  		Wet,		Cloudy w/Rain,			Cloudy w/Rain
	70%:  		Wet,		Cloudy w/Rain,			Cloudy w/Rain
	80%:  		Flooded,	Cloudy w/Thunderstorm,	Cloudy w/Thunderstorm
	90%:  		Flooded,	Cloudy w/Thunderstorm,	Cloudy w/Thunderstorm
	100%: 		Flooded,	Cloudy w/Thunderstorm,	Cloudy w/Thunderstorm
- Unable to check Rainfall level vs weather.txt file because Rainfall < Changeable doesn't generate weather.txt

Temperature:
- Default Temperature Progression: Ambient 20+, Track: 22+

Conditions Icon (Conditions: Sunny/Rainy/Stormy):
- Conditions is not the same as Rainfall in-game
- Confirmed 240318: 
	0-61 Sunny (Sun)
	62-90 Rainy (Cloud w/Rain)
	91-100 Stormy (Cloud w/Rain and Lightning)

Forecast Icon (Conditions: Sunny/Rainy/Stormy):
- Requires Minute{} block
- When no Minute{} blocks are specified, or if there are no more Minute{} blocks remaining, then Forecast appears to indicate a return to initial session Conditions
- Confirmed 240318
	0-61 Sunny (Sun)
	62-90 Rainy (Cloud w/Rain)
	91-100 Stormy (Cloud w/Rain and Lightning)

Track Wetness (Dry/Damp/Wet/Flooded):
- Track wetness based on fixed Conditions (Confirmed 240318)
- Track wetness (Dry/Damp/Wet/Flooded) is not the same as Conditions (Sunny/Rainy/Storm)
- Track wetness does not progress (drier or wetter) by On/OffPathWetness in Minute{} progression.
  - It seems to be based on time, Conditions, temperature, and number of laps (the more AI the faster)
- Track wetness floods dynamically based on Conditions and un-floods dynamically
- Track Wetness Levels:
	0-5 Dry
	6-35 Damp
	36-75 Wet
	76-100 Flooded

Real Time Weather and Time Scaled Weather:
- Time Scaled Weather does not seem to be related to Daylight Acceleration
- Time Scaled Weather does not seem to be have any effect for custom weather.txt files
  ^ This implies that Time Scaled Weather is for game generated weather files
  ^ Which means it's not the weather.txt Minute{}s being Time Scaled but the game weather generation algorithm scaling based on session length.
  ^ A few weather events play out over longer rather than the game generating many weather events to fill in the time
  ^ Confirmed by checking weather.txt for a 24h race with Real Time vs Time Scaled Weather
- For 24h Race Game Generated Weather Files
  - Real Time weather.txt has many more Minute{}s, even though same length session (eg. 180min), a much more granular Minute{} progression, in steps of 1-2 minutes each
  - Time Scaled weather.txt has much less Minute{}s, even though same length session (eg. 180min), a broader Minute{} progression, in steps of ~10 minutes each
  - Real Time weather.txt has more variability in Conditions (ex. 0-40)
  - Time Scaled weather.txt has less variability in Conditions (ex. 65-74)
  - Both Real Time and Time Scaled AmbientTemp seems to have a +/- 10C range
- Conclusion:
  - Time Scaled Weather's purpose is to simulate longer weather patterns in shortened sessions
    - In other words, a few weather events that are longer in duration rather than many more weather events of shorter duration
  - Nothing seems to suggest it allows for scaling up limited weather.txt Minute{}s to sessions with more minutes
    - But if the game can use a 180min weather.txt to represent 24h then our weather.txt should be able to do that, too
  - It seems like Time Scaled Weather is only for 24H races because weather events are happening at the same clock time in non-24h sessions for both Real Time and Time Scaled weather.
  - 24H generated weather.txt Race Minute{}s still only represent 180min spread out over a variable number of Minute{}s
  - So 24H is internally stretching its weather.txt Minute{}s over the session length
    ^ Behaviour such as stretching or looping Minute{}s is NOT seen in regular race sessions: In regular races, it loops through the Minute{}s until they're done and does not loop, stretch, or condense them based on the session length.
  - Used ChatGPT to see if it agrees and it agreed: https://chat.openai.com/c/a3af0967-5df1-45e9-87a9-cdbf1789c4bd

Session Length vs Minute{}s:
- At the end of a session, when there are more Minutes{}s then session minutes, weather keeps progressing through Minute{}s 
- When there are less Minute{}s than session minutes, weather stops at last Minute{} and there are no other changes
- Applies for Real Time and Time Scaled Weather
- Basically, weather always plays through right to the end

Weather Scratchpad

These notes may not be tested or confirmed true

TBD: Forecast is the last minute of the session for Practice1 45min(?)
- I don't think so. It might be something like the next Conditions change (eg. Sunny to Rainy or Rainy to Stormy or any sequential combo of those)
  - There may be something weird about 'minimum threshold of change' to update the Forecast icon
- Race 60min: Forecast is Minute 1
  - Race is special: Time is stopped until you start race, then you can't get back to the timing screen with the weather forecast
  - Any Minute with a different Conditions?
Session:
- Weather start offset by 30sec in sessions? Something's going on with a delay...

Track Wetness (Dry/Damp/Wet/Flooded):
  - TODO: Confirm these do or do not progress over time (ex. 5 Dry eventually becomes 6 Damp?)
	0-5 Dry
	6-35 Damp
	36-75 Wet
	76-100 Flooded
- Track wetness floods dynamically based on Conditions and un-floods dynamically
  - Dry->damp_>wet->flooded—>wet->damp-dry:
    - 20C Amb 30C Track
    - 90min Practice:
	  - 0 AI 40min still flooded, ...
	  - 1 AI 40min still flooded, ...
	  - 10 AI 30min flooded->wet, ...
	  - 20 AI 20min flooded->wet, ...
	  - 29 AI 15min flooded->wet, never dry
	- 180min Practice:
      - Damp ~65:00 (-115min)
    - 300min practice 
      - Wet 285:00 (-15min)
      - Damp 185:00 (-115min)
    - 600min practice 1
	  - 29 AI
	  - Cars stop lapping 485:00 (-115min)
	  - Wet 585:00 (-15min)
	  - Damp 486:00 (-114min)
	  - Dry ~275:00 (-325min)
	- 600min practice 2
	  - 3 AI
	  - Cars stop lapping 515:00 (-85min)
	  - Wet 548:00 (-52min)
	  - Damp 472:00 (-128min)
	  - Dry 253:00 (-347min)
	- 600min practice 3
	  - 0 AI
	  - Cars stop lapping  N/A
	  - Wet 515:00 (-85min)
	  - Damp 393:00 (-207min)
	  - Dry 248:00 (-352min)
    - Start Flooded > Wet (Minute 0.10)
      - 600min Practice, 0 AI
      - Wet 516 0C
	  - Wet 541 10C
	  - Wet 552 20C
	  - Wet 564 30C
	  - Wet 568 40C
	  - Wet 573 50C
- Flooded Time to Wet by AI Count and Temperature
  - Starts Flooded, and immediately dries out at Minute=0.10{}
  - 600min Practice
    - 0 AI
	  - Wet 516 0C
	  - Wet 541 10C
 	  -  Wet 552 20C
	  - Wet 564 30C
	  - Wet 568 40C
	  - Wet 573 50C
    - 10 AI
      - Wet 584 0C
      - Wet 584 10C
      - Wet 586 20C
      - Wet 587 30C
      - Wet 587 40C
      - Wet 588 50C
    - 20 AI
      - Wet 588 0C
      - Wet 587 10C
      - Wet 587 20C
      - Wet 588 30C
      - Wet 588 40C
      - Wet 589 50C
    - 29 AI
      - Wet 590 0C
      - Wet 590 10C
      - Wet 591 20C
      - Wet 591 30C
      - Wet 591 40C
      - Wet 591 50C
- Nope: I bet I could include and progress any of the parameters inside Minute{} blocks (eg. OnPathWetness, OffPathWetness)
  ^ Scratched: Wetness does not seem to progress in Minute{} blocks.
    - But Wetness does progress so it seems it's a function of time-conditions-temperature and those do progress in Minute{} blocks
 
Weather seems to interpolate between Minute{}s in some fashion although it's difficult to say how or what ratio, curve, or function is being applied:
- In a 15min Warmup with Real Time Weather:
  - Stormy->Sunny Minute=0.10:  Becomes clear around --:--
  - Stormy->Sunny Minute=1.00:  Becomes clear around --:--
  - Stormy->Sunny Minute=2.00:  Becomes clear around 14:40
  - Stormy->Sunny Minute=3.00:  Becomes clear around 14:15
  - Stormy->Sunny Minute=4.00:  Becomes clear around 13:45
  - Stormy->Sunny Minute=5.00:  Becomes clear around 13:30
  - Stormy->Sunny Minute=10.00: Becomes clear around 11:30
  - Stormy->Sunny Minute=15.00: Becomes clear around 9:30
  - Stormy->Sunny Minute=20.00: Becomes clear around 7:30
  - Stormy->Sunny Minute=25.00: Becomes clear around 5:30
  - Stormy->Sunny Minute=30.00: Becomes clear around 4:00
  - Stormy->Sunny Minute=35.00: Becomes clear around 2:00
  - Stormy->Sunny Minute=40.00: Becomes clear around 0:00
  - Warmup{} in weather.txt:
    Warmup
    {
     Conditions=100.00
     AmbientTemp=20
     Minute=15
     {
      Conditions=0.00
     }
    }
  - Time Scaled Weather seems to act the same as Real Time Weather
  - Time Scaled Weather: 10min warmup, 5min weather: Stopped on minute 5 and held the weather
  - Real Time Weather: 10min warmup, 5min weather: ...
  - Pit camera and Conditions Icon seem to be in sync
  - Minute=0.00{} is the initial conditions / It appears to be skipped / Must start with Minute=1.00{} or higher

5 Minute{}s +20 steps:
2.5m to Rainy, 4m5s to Stormy for both Real Time and Time Scaled Weather
- Minute 3 = 60 Conditions
- Minute 4 = 80 Conditions

10 Minute{}s +10 steps:
6min to Rainy, 9min to Stormy for both Real Time and Time Scaled Weather
- Minute 6 = 60 Conditions
- Minute 8 = 80 Conditions

15 Minute{}s +6.666 steps:
9min to rainy, 13min to Stormy for Real Time and Time Scaled Weather
- Minute 9 = 60 (59.994) Conditions
- Minute 13 = 80 (86.658) Conditions

30 Minute{}s +3.333steps:
Never gets to rain, never gets to Stormy on Real Time or Time Scaled Weather (
- 10m45s to *Forecast* rainy but never gets there
  - Minute 18 = 60 (59.994) Conditions