feat(mars): Introduce Mars-specific simulation mechanics and entities

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Claude Code 2026-03-29 10:07:31 -07:00
parent c37e0c4f12
commit 9c7f7da244
5 changed files with 286 additions and 0 deletions

View 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": 610.0,
"subpolar_low_hpa": 595.0,
"subtropical_high_hpa": 608.0,
"equatorial_low_hpa": 600.0
},
"pressure_terrain_modifiers": {
"mountain_per_0_1_elevation": 15.0,
"ocean_offset": 0.0,
"hot_land_threshold": 0.25,
"hot_land_offset": -3.0
},
"anomaly": {
"thermal_low_spawn_hpa": -8.0,
"cold_high_spawn_hpa": 8.0,
"tropical_low_spawn_hpa": -5.0,
"spawn_hot_temp_threshold": 0.20,
"spawn_cold_temp_threshold": 0.05,
"spawn_adjacent_cool_threshold": 0.12,
"spawn_ocean_hot_threshold": 0.30,
"decay_per_turn_hpa": 1.5,
"reinforce_per_turn_hpa": 2.0,
"max_anomaly_hpa": 25.0,
"drift_wind_fraction": 0.6,
"merge_radius_hexes": 3
},
"pressure_wind": {
"gradient_scale": 0.06,
"speed_scale": 0.05,
"coriolis_scale": 0.25
},
"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.5,
"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.004,
"temp_diff_scale": 0.5,
"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.15,
"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.95
},
"wind_conductivity": 0.12,
"energy_scale": 0.004,
"equilibrium_relaxation": 0.02,
"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.4,
"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.5,
"wind_speed_polar_front": 0.4,
"wind_speed_ferrel": 0.6,
"wind_speed_subtropical": 0.35,
"wind_speed_hadley": 0.55,
"wind_speed_itcz": 0.3,
"wind_friction_land": 0.6,
"wind_friction_mountain_downwind": 0.3,
"solar_min": 0.03,
"solar_max": 0.18,
"orbital_cycle_1_period": 686,
"orbital_cycle_1_amplitude": 0.018,
"orbital_cycle_1_phase": 0.0,
"orbital_cycle_2_period": 51000,
"orbital_cycle_2_amplitude": 0.030,
"orbital_cycle_2_phase": 1.05,
"orbital_cycle_3_period": 95000,
"orbital_cycle_3_amplitude": 0.025,
"orbital_cycle_3_phase": 2.40,
"orbital_moisture_coupling": 0.0,
"sea_level_temp_sensitivity": 0.0,
"sea_level_equilibrium_temp": 0.12,
"water_freeze_threshold": 0.25,
"aerosol_background": 0.008,
"aerosol_desert_dust": 0.025,
"aerosol_volcanic_outgas": 0.0,
"dust_storm_threshold": 0.8,
"dust_storm_aerosol_boost": 0.25
}

View file

@ -0,0 +1,71 @@
{
"terrain_classification": {
"comment": "Mars terrain rules — ordered, first match wins. Cold, dry, abiotic. No biological biomes. CO2 ice caps at poles.",
"rules": [
{
"comment": "CO2 polar ice — extreme cold at any elevation",
"and": [
{ "field": "temperature", "op": "<=", "value": 0.06 }
],
"terrain": "glacial"
},
{
"comment": "Olympus Mons summit / Tharsis calderas — extreme elevation volcanic peaks",
"and": [
{ "field": "elevation", "op": ">", "value": 0.82 }
],
"terrain": "caldera"
},
{
"comment": "Tharsis highlands / highland basalt — elevated ancient terrain",
"and": [
{ "field": "elevation", "op": ">", "value": 0.70 }
],
"terrain": "basalt_highland"
},
{
"comment": "Valles Marineris canyon floor — deep lowland valleys",
"and": [
{ "field": "elevation", "op": "<", "value": 0.12 }
],
"terrain": "canyon"
},
{
"comment": "Hellas / Argyre basin — ancient impact basins and low plains",
"and": [
{ "field": "elevation", "op": "<", "value": 0.28 }
],
"terrain": "ancient_lakebed"
},
{
"comment": "Dune field — aeolian sand deposits on mid-elevation terrain",
"and": [
{ "field": "elevation", "op": ">=", "value": 0.28 },
{ "field": "elevation", "op": "<=", "value": 0.55 },
{ "field": "temperature", "op": ">", "value": 0.06 },
{ "field": "temperature", "op": "<", "value": 0.18 }
],
"terrain": "dune_field"
},
{
"comment": "Default: dust plain — the vast regolith-covered lowlands",
"and": [],
"terrain": "dust_plain"
}
]
},
"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.953,
"so2_concentration": 0.0,
"acid_rain_threshold": 9999.0
}
}

View 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.25,
"lake_moisture_injection": 0.0,
"river_moisture_per_turn": 0.0
}

View file

@ -0,0 +1,23 @@
{
"id": "mars",
"name": "Mars — Red Planet",
"description": "Thin CO2 atmosphere, -60°C average, no water cycle. Seasonal CO2 sublimation at poles, global dust storms reshape the regolith plains.",
"has_climate": true,
"has_weather": false,
"has_ecology": false,
"grid_width": 40,
"grid_height": 24,
"polar_rows": 3,
"physics_features": {
"water_cycle": false,
"weather_events": false,
"ecology": false,
"volcanism": false,
"co2_cycle": true,
"dust_storms": true,
"acid_clouds": false
},
"subscribes_biomes": ["arid_world", "volcanic_world", "elevated", "arctic"],
"subscribes_substrates": ["substrates"],
"subscribes_events": []
}

View file

@ -0,0 +1,33 @@
{
"comment": "Transient Mars terrain states that normalize back to stable biomes each turn.",
"biomes": [
{
"id": "co2_frost",
"name": "CO₂ Frost",
"comment": "Seasonal CO2 frost deposition outside the permanent cap",
"normalizes_to": "glacial",
"tags": ["is_frozen", "is_dry"]
},
{
"id": "dust_storm_track",
"name": "Dust Storm Track",
"comment": "Active dust storm deposit — high aerosol load, reduced insolation",
"normalizes_to": "dust_plain",
"tags": ["is_dry"]
},
{
"id": "crater_floor",
"name": "Crater Floor",
"comment": "Impact crater flat floor — fine-grained sediment, sheltered from wind",
"normalizes_to": "ancient_lakebed",
"tags": ["is_dry"]
},
{
"id": "ancient_riverbed",
"name": "Ancient Riverbed",
"comment": "Dried Noachian-era fluvial channel — distinctive linear lowland",
"normalizes_to": "canyon",
"tags": ["is_dry"]
}
]
}