Validates full heightmap pipeline: pyplatec tectonics → erosion → dynamic sea level → terrain classification (13 classes) → D8 river network → settlement placement → geographic PNG + settlement JSON. Key technical decisions: - Dynamic sea level via np.percentile (pyplatec output is right-skewed; fixed fraction gives ~0.2% land, not 40%) - Terrain classes as fractions of land_range (not fixed offsets) - Two-layer model: geographic PNG + human-layer JSON sidecar - Rivers painted AFTER LANCZOS upscale via NEAREST neighbor mask (painting before blurs rivers into invisibility) - grain_belt removed — reclassified as grassland (natural terrain) - Irrigation overlay removed — human activity, lives in JSON sidecar Output: 4096×2048px (1024×512 simulation grid, 5.2s total runtime). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
74 lines
1.0 KiB
JSON
74 lines
1.0 KiB
JSON
[
|
|
{
|
|
"name": "Kallast Prime",
|
|
"grid_y": 297,
|
|
"grid_x": 460,
|
|
"tier": 1
|
|
},
|
|
{
|
|
"name": "Ardenvall",
|
|
"grid_y": 182,
|
|
"grid_x": 246,
|
|
"tier": 2
|
|
},
|
|
{
|
|
"name": "Thessmark",
|
|
"grid_y": 266,
|
|
"grid_x": 613,
|
|
"tier": 2
|
|
},
|
|
{
|
|
"name": "Coldwater",
|
|
"grid_y": 316,
|
|
"grid_x": 272,
|
|
"tier": 2
|
|
},
|
|
{
|
|
"name": "Brightfield",
|
|
"grid_y": 172,
|
|
"grid_x": 512,
|
|
"tier": 2
|
|
},
|
|
{
|
|
"name": "Vorn's Crossing",
|
|
"grid_y": 293,
|
|
"grid_x": 399,
|
|
"tier": 3
|
|
},
|
|
{
|
|
"name": "Saltmere",
|
|
"grid_y": 195,
|
|
"grid_x": 707,
|
|
"tier": 3
|
|
},
|
|
{
|
|
"name": "Kaspel",
|
|
"grid_y": 214,
|
|
"grid_x": 214,
|
|
"tier": 3
|
|
},
|
|
{
|
|
"name": "Drenmark",
|
|
"grid_y": 296,
|
|
"grid_x": 737,
|
|
"tier": 3
|
|
},
|
|
{
|
|
"name": "New Farrow",
|
|
"grid_y": 327,
|
|
"grid_x": 563,
|
|
"tier": 3
|
|
},
|
|
{
|
|
"name": "Ossenfield",
|
|
"grid_y": 155,
|
|
"grid_x": 433,
|
|
"tier": 3
|
|
},
|
|
{
|
|
"name": "Tyne Station",
|
|
"grid_y": 300,
|
|
"grid_x": 322,
|
|
"tier": 3
|
|
}
|
|
] |