62 lines
5.0 KiB
JSON
62 lines
5.0 KiB
JSON
{
|
|
"_comment": "The world map's art: which planet-wide images become the layers of the in-game and in-editor map view, and how big they are when they get there. Read by Tools/MapArt (which downsamples and renders them into this folder) and by Scripts/Authoring/create_world_map.py (which imports the results and writes the definition asset). Adding a layer is a line here and a rerun of Scripts/Authoring/build_world_map.sh.",
|
|
|
|
"_comment_registration": "Every source here must be a whole cylinder of the SAME planet as the heightmap Region.json cuts L_World from, at any resolution. They register because L_World imports the entire export with no crop - Region.json's window is the full 8192x4096 - so normalised u,v on any of these images is normalised u,v on the world. A crop, a different planet or a different seed would misregister silently: there is nothing inside a PNG that says which world it is. `mapart check` is the guard, and it is a land/sea agreement against the heightmap rather than a hash, because the layers are different renders of one planet and no two of them are alike pixel for pixel.",
|
|
|
|
"source_dir": "RawContent/World/Orogen Gens",
|
|
"output_dir": "RawContent/World/MapArt",
|
|
"region": "RawContent/World/Region.json",
|
|
|
|
"_comment_wraps_x": "Does the map's left edge join its right? Only when Region.json's window is the whole width of the source, which is the case here - the export is imported entire. null works it out by comparing the window with the source's own width, which only the mapart report knows, because a PNG's size belongs in no manifest. Set it true or false to decide by hand. Getting it wrong is visible: a map that wraps when it should not lets a pan run off one edge and arrive at the other, and one that does not wrap when it should puts a hard edge down the middle of an ocean.",
|
|
"wraps_x": null,
|
|
|
|
"_comment_output": "4096 x 2048 is 17.4 m a pixel over the 71.40 km world: a quarter of the source's 8192 and still far finer than the couple of hundred metres the Orogen mesh actually resolves, so no real detail is lost. Raising it is a number here and a rerun; the cost is LFS, about 11 MB a layer at this size and four times that at full resolution.",
|
|
"output": { "width": 4096, "height": 2048 },
|
|
|
|
"_comment_package": "Where the imported textures and the definition asset land. The definition is what the game and the editor tab both read, and it carries the projection copied out of Region.json, so nothing at runtime needs RawContent to exist.",
|
|
"package": "/Game/World/Maps",
|
|
"definition": "DA_WorldMap_L_World",
|
|
"level": "/Game/Maps/L_World",
|
|
|
|
"_comment_layers": "`render` says how a source becomes a layer. `copy` downsamples the image as it is, averaging in linear light, which is right for anything already coloured. `relief` is the one derived layer: it reads a 16-bit heightmap, shades it from a light in the north-west and tints it by altitude, which is what shows the landform a player will walk over - a colormap shows biome, not shape. `default` is the layer the map opens on.",
|
|
"layers": [
|
|
{
|
|
"id": "relief",
|
|
"name": "Relief",
|
|
"file": "orogen-heightmap-7945.png",
|
|
"render": "relief",
|
|
"default": true,
|
|
"note": "Shaded relief and a hypsometric tint off the same heightmap L_World's geometry came from, so the map and the ground are the same shape by construction rather than by agreement."
|
|
},
|
|
{
|
|
"id": "colour",
|
|
"name": "Colour",
|
|
"file": "orogen-colormap-7945.png",
|
|
"render": "copy",
|
|
"note": "Orogen's own planet render. Was orogen-colormap-14733759.png until the 2026-09-21 re-export, which produced one carrying the planet's own number - the same picture of the same world, with a filename that no longer invites the question. Orogen numbers each export, not each planet, which is why the old one looked like a different world and was not."
|
|
},
|
|
{
|
|
"id": "satellite",
|
|
"name": "Satellite",
|
|
"file": "orogen-satellite-7945.png",
|
|
"render": "copy"
|
|
},
|
|
{
|
|
"id": "climate",
|
|
"name": "Climate",
|
|
"file": "orogen-climate-7945.png",
|
|
"render": "copy",
|
|
"note": "Biome bands. Nothing in the project reads climate yet; it is here because it costs one line and it is the layer that answers 'why would there be forest here'."
|
|
}
|
|
],
|
|
|
|
"_comment_relief": "The relief render's knobs. The light is the cartographic convention, north-west, so ridges read as ridges rather than as trenches - a light from the south-east inverts the relief for most people looking at it. `exaggeration` multiplies the slope before shading, because a few hundred metres of relief spread over 17.4 m pixels is nearly flat and an honest hillshade of it is featureless grey. `land_top_m` is where the hypsometric ramp tops out, in metres on Region.json's elevation contract; null measures the 99.5th percentile of the land instead, which is what Orogen's export normalises to anyway.",
|
|
"relief": {
|
|
"light_azimuth_deg": 315,
|
|
"light_altitude_deg": 45,
|
|
"exaggeration": 4.0,
|
|
"land_top_m": null,
|
|
"shade_strength": 0.75
|
|
}
|
|
}
|