feat(venus): ✨ Add Venus atmospheric simulation support with physics and rendering logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
a83cc7698e
commit
200b96b969
5 changed files with 254 additions and 0 deletions
126
engine/src/worlds/venus/climate_params.json
Normal file
126
engine/src/worlds/venus/climate_params.json
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
{
|
||||
"atmosphere": {
|
||||
"pressure_bands": {
|
||||
"polar_high_cut": 0.15,
|
||||
"subpolar_low_cut": 0.30,
|
||||
"subtropical_high_cut": 0.60,
|
||||
"hadley_low_cut": 1.00,
|
||||
"polar_high_hpa": 9200000.0,
|
||||
"subpolar_low_hpa": 9190000.0,
|
||||
"subtropical_high_hpa": 9200000.0,
|
||||
"equatorial_low_hpa": 9195000.0
|
||||
},
|
||||
"pressure_terrain_modifiers": {
|
||||
"mountain_per_0_1_elevation": 2.0,
|
||||
"ocean_offset": 0.0,
|
||||
"hot_land_threshold": 0.5,
|
||||
"hot_land_offset": -1.0
|
||||
},
|
||||
"anomaly": {
|
||||
"thermal_low_spawn_hpa": -5.0,
|
||||
"cold_high_spawn_hpa": 5.0,
|
||||
"tropical_low_spawn_hpa": -5.0,
|
||||
"spawn_hot_temp_threshold": 0.90,
|
||||
"spawn_cold_temp_threshold": 0.85,
|
||||
"spawn_adjacent_cool_threshold": 0.88,
|
||||
"spawn_ocean_hot_threshold": 0.95,
|
||||
"decay_per_turn_hpa": 0.5,
|
||||
"reinforce_per_turn_hpa": 0.8,
|
||||
"max_anomaly_hpa": 10.0,
|
||||
"drift_wind_fraction": 0.8,
|
||||
"merge_radius_hexes": 2
|
||||
},
|
||||
"pressure_wind": {
|
||||
"gradient_scale": 0.02,
|
||||
"speed_scale": 0.07,
|
||||
"coriolis_scale": 0.02
|
||||
},
|
||||
"humidity": {
|
||||
"ocean_evap_rate": 0.0,
|
||||
"soil_contribution": 0.0,
|
||||
"forest_evapotranspiration": 0.0,
|
||||
"wind_transport_fraction": 0.0,
|
||||
"precipitation_rh_threshold": 99.0,
|
||||
"precipitation_humidity_loss": 0.0,
|
||||
"precipitation_moisture_gain": 0.0,
|
||||
"mountain_barrier_block": 0.3,
|
||||
"decay_per_turn": 0.0
|
||||
},
|
||||
"relative_humidity": {
|
||||
"saturation_base": 0.0,
|
||||
"saturation_temp_scale": 0.0
|
||||
},
|
||||
"dew_point": {
|
||||
"rh_factor": 0.0
|
||||
},
|
||||
"cape": {
|
||||
"lapse_rate_per_elevation": 0.001,
|
||||
"temp_diff_scale": 0.1,
|
||||
"humidity_scale": 0.0,
|
||||
"stability_offset": 0.0,
|
||||
"moisture_feedback_scale": 0.0
|
||||
},
|
||||
"event_thresholds": {},
|
||||
"event_effects": {}
|
||||
},
|
||||
"moisture_relaxation": 0.0,
|
||||
"ocean_evaporation_hops": 0,
|
||||
"ocean_evaporation_hop_decay": 0.0,
|
||||
"atmospheric_loss_rate": 0.0,
|
||||
"water_boil_threshold": 0.5,
|
||||
"surface_runoff_rate": 0.0,
|
||||
"deep_earth_water": {
|
||||
"volcano_self": 0.0,
|
||||
"volcano_neighbor": 0.0,
|
||||
"hot_spring_self": 0.0,
|
||||
"hot_spring_neighbor": 0.0,
|
||||
"hot_spring_max_temperature": 0.0,
|
||||
"high_elevation_self": 0.0,
|
||||
"high_elevation_threshold": 0.9
|
||||
},
|
||||
"wind_conductivity": 0.15,
|
||||
"energy_scale": 0.001,
|
||||
"equilibrium_relaxation": 0.005,
|
||||
"evaporation_rate": 0.0,
|
||||
"moisture_transport": 0.0,
|
||||
"precipitation_threshold": 99.0,
|
||||
"moisture_decay": 1.0,
|
||||
"quality_up_threshold": 10,
|
||||
"quality_down_threshold": 5,
|
||||
"lake_thermal_conductivity": 0.0,
|
||||
"river_moisture_transport": 0.0,
|
||||
"mountain_rain_shadow_block": 0.1,
|
||||
"wind_band_polar_cut": 0.15,
|
||||
"wind_band_polar_front_cut": 0.30,
|
||||
"wind_band_ferrel_cut": 0.50,
|
||||
"wind_band_subtropical_cut": 0.60,
|
||||
"wind_band_hadley_cut": 0.85,
|
||||
"wind_speed_polar": 0.7,
|
||||
"wind_speed_polar_front": 0.65,
|
||||
"wind_speed_ferrel": 0.7,
|
||||
"wind_speed_subtropical": 0.65,
|
||||
"wind_speed_hadley": 0.7,
|
||||
"wind_speed_itcz": 0.65,
|
||||
"wind_friction_land": 0.9,
|
||||
"wind_friction_mountain_downwind": 0.5,
|
||||
"solar_min": 0.88,
|
||||
"solar_max": 0.98,
|
||||
"orbital_cycle_1_period": 1170,
|
||||
"orbital_cycle_1_amplitude": 0.003,
|
||||
"orbital_cycle_1_phase": 0.0,
|
||||
"orbital_cycle_2_period": 780,
|
||||
"orbital_cycle_2_amplitude": 0.002,
|
||||
"orbital_cycle_2_phase": 1.05,
|
||||
"orbital_cycle_3_period": 2430,
|
||||
"orbital_cycle_3_amplitude": 0.004,
|
||||
"orbital_cycle_3_phase": 2.40,
|
||||
"orbital_moisture_coupling": 0.0,
|
||||
"sea_level_temp_sensitivity": 0.0,
|
||||
"sea_level_equilibrium_temp": 0.95,
|
||||
"water_freeze_threshold": 0.0,
|
||||
"aerosol_background": 0.15,
|
||||
"aerosol_desert_dust": 0.0,
|
||||
"aerosol_volcanic_outgas": 0.08,
|
||||
"acid_cloud_albedo": 0.70,
|
||||
"acid_cloud_greenhouse_multiplier": 2.5
|
||||
}
|
||||
65
engine/src/worlds/venus/climate_spec.json
Normal file
65
engine/src/worlds/venus/climate_spec.json
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
"terrain_classification": {
|
||||
"comment": "Venus terrain rules — ordered, first match wins. No biological biomes. All surface is extreme-temperature rock.",
|
||||
"rules": [
|
||||
{
|
||||
"comment": "Active lava field — extreme temp + volcanic tag",
|
||||
"and": [
|
||||
{ "field": "temperature", "op": ">=", "value": 0.95 },
|
||||
{ "field": "elevation", "op": "<", "value": 0.8 }
|
||||
],
|
||||
"terrain": "lava_field"
|
||||
},
|
||||
{
|
||||
"comment": "Caldera — very high elevation volcanic summit",
|
||||
"and": [
|
||||
{ "field": "elevation", "op": ">", "value": 0.80 }
|
||||
],
|
||||
"terrain": "caldera"
|
||||
},
|
||||
{
|
||||
"comment": "Highland tessera — deformed plateaus above 0.65",
|
||||
"and": [
|
||||
{ "field": "elevation", "op": ">", "value": 0.65 }
|
||||
],
|
||||
"terrain": "basalt_highland"
|
||||
},
|
||||
{
|
||||
"comment": "Volcanic plains — mid elevation, very hot",
|
||||
"and": [
|
||||
{ "field": "elevation", "op": ">=", "value": 0.25 },
|
||||
{ "field": "elevation", "op": "<=", "value": 0.65 },
|
||||
{ "field": "temperature", "op": ">", "value": 0.80 }
|
||||
],
|
||||
"terrain": "volcanic_plains"
|
||||
},
|
||||
{
|
||||
"comment": "Lowland basin — depressed terrain, extreme heat",
|
||||
"and": [
|
||||
{ "field": "elevation", "op": "<", "value": 0.25 },
|
||||
{ "field": "temperature", "op": ">", "value": 0.85 }
|
||||
],
|
||||
"terrain": "lowland_basin"
|
||||
},
|
||||
{
|
||||
"comment": "Default: basalt highland for anything else",
|
||||
"and": [],
|
||||
"terrain": "basalt_highland"
|
||||
}
|
||||
]
|
||||
},
|
||||
"terrain_transitions": {},
|
||||
"ley_network": {
|
||||
"enabled": false,
|
||||
"anchor_spawn_chance": 0.0,
|
||||
"link_max_distance": 0,
|
||||
"residue_decay_per_turn": 1.0,
|
||||
"quality_threshold_for_node": 99
|
||||
},
|
||||
"atmospheric_chemistry": {
|
||||
"enabled": true,
|
||||
"co2_concentration": 0.965,
|
||||
"so2_concentration": 0.015,
|
||||
"acid_rain_threshold": 0.0
|
||||
}
|
||||
}
|
||||
33
engine/src/worlds/venus/hydrology_params.json
Normal file
33
engine/src/worlds/venus/hydrology_params.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"rainfall": {
|
||||
"multiplier_tropical": 0.0,
|
||||
"multiplier_temperate": 0.0,
|
||||
"multiplier_cold": 0.0,
|
||||
"multiplier_frozen": 0.0,
|
||||
"multiplier_desert_terrain": 0.0
|
||||
},
|
||||
"source_bonuses": {},
|
||||
"depression_fill": {
|
||||
"epsilon": 0.0001
|
||||
},
|
||||
"lakes": {
|
||||
"depth_threshold": 9999.0,
|
||||
"inland_sea_min_tiles": 9999
|
||||
},
|
||||
"rivers": {
|
||||
"threshold_tropical": 9999.0,
|
||||
"threshold_temperate": 9999.0,
|
||||
"threshold_cold": 9999.0,
|
||||
"threshold_frozen": 9999.0,
|
||||
"threshold_desert": 9999.0,
|
||||
"width_thresholds": [9999.0, 9999.0, 9999.0],
|
||||
"width_labels": ["stream", "river", "major_river", "great_river"]
|
||||
},
|
||||
"deltas": {
|
||||
"accumulation_threshold": 9999.0,
|
||||
"max_branches": 0
|
||||
},
|
||||
"frozen_river_temperature": 0.0,
|
||||
"lake_moisture_injection": 0.0,
|
||||
"river_moisture_per_turn": 0.0
|
||||
}
|
||||
23
engine/src/worlds/venus/manifest.json
Normal file
23
engine/src/worlds/venus/manifest.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"id": "venus",
|
||||
"name": "Venus — Runaway Greenhouse",
|
||||
"description": "Dense CO2 atmosphere, 460°C surface, no water cycle. Active volcanism shapes tessera highlands and basalt plains.",
|
||||
"has_climate": true,
|
||||
"has_weather": false,
|
||||
"has_ecology": false,
|
||||
"grid_width": 40,
|
||||
"grid_height": 24,
|
||||
"polar_rows": 0,
|
||||
"physics_features": {
|
||||
"water_cycle": false,
|
||||
"weather_events": false,
|
||||
"ecology": false,
|
||||
"volcanism": true,
|
||||
"co2_cycle": false,
|
||||
"dust_storms": false,
|
||||
"acid_clouds": true
|
||||
},
|
||||
"subscribes_biomes": ["volcanic_world", "elevated", "special"],
|
||||
"subscribes_substrates": ["substrates"],
|
||||
"subscribes_events": []
|
||||
}
|
||||
7
engine/src/worlds/venus/runtime_biomes.json
Normal file
7
engine/src/worlds/venus/runtime_biomes.json
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"runtime_biomes": [
|
||||
{ "id": "lava_flow", "tags": ["is_volcanic", "is_dry"], "normalizes_to": "volcanic_plains" },
|
||||
{ "id": "cooled_basalt", "tags": ["is_dry"], "normalizes_to": "volcanic_plains" },
|
||||
{ "id": "lowland_basin", "tags": ["is_dry"], "normalizes_to": "volcanic_plains" }
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue