Desert (Classic, round two, round three)
Classic | round two | round three.
The new ground materials, Classic beside New. Newest first.
Classic | round two | round three.
Classic | round two | round three.
Classic | round two | round three.
Classic | round two | round three.
Classic | round two | round three.
Classic | round two | round three.
Round three on a random map.
Round three on a random map.
Round three on a random map.
Round three on a random map.
Round three on a random map.
Round three on a random map.
Round three on a random map.
Round three on a random map.
Round three on a random map.
Round three on a random map.
Classic | round two | round three.
Classic | round two | round three.
Classic | round two | round three.
Classic | round two | round three.
GREEN COVERAGE of the ground per still (share of ground pixels reading green: hue 55-155 deg, 44-155 on desert, sat >= 0.22; trees, rocks, units and water masked out where CLASSIC and NEW round 2 draw the same pixel). CLASSIC | NEW before | NEW after volcanic (seed 7, 1v1; the owner's circled spot is edge_game34 (river bank and the ground under the trees by the base)) 00_base_game34 47% 18% 10% 28% 02_clearing_game34 54% 15% 4% 19% 01_edge_game34 22% 31% 14% 29% 06_clearing_zoom70 44% 16% 10% 26% 07_centre_zoom110 39% 29% 12% 36% desert (seed 7, 1v1) 00_base_game34 54% 4% 1% 11% 02_clearing_game34 74% 1% 0% 7% 01_edge_game34 24% 4% 1% 16% 06_clearing_zoom70 58% 4% 1% 12% 07_centre_zoom110 49% 6% 1% 17% temperate (seed 7, 1v1) 00_base_game34 56% 91% 67% 83% 02_clearing_game34 68% 95% 89% 95% 01_edge_game34 37% 93% 72% 83% 06_clearing_zoom70 53% 88% 79% 86% 07_centre_zoom110 46% 88% 88% 90% tropic (seed 7, 1v1) 00_base_game34 54% 93% 72% 86% 02_clearing_game34 74% 99% 94% 97% 01_edge_game34 24% 93% 65% 79% 06_clearing_zoom70 55% 95% 86% 91% 07_centre_zoom110 45% 97% 93% 95% snow (seed 7, 1v1 (green not expected on snow)) 00_base_game34 27% 0% 0% 0% 02_clearing_game34 28% 0% 0% 0% 01_edge_game34 12% 0% 0% 0% 06_clearing_zoom70 26% 0% 0% 0% 07_centre_zoom110 27% 0% 0% 0% map-Rimeheart 00_base_game34 38% 0% 0% 0% 02_clearing_game34 34% 0% 0% 0% 01_edge_game34 29% 0% 0% 0% 06_clearing_zoom70 26% 0% 0% 0% 07_centre_zoom110 30% 0% 0% 0% map-SevenWells 00_base_game34 84% 0% 0% 0% 02_clearing_game34 90% 0% 0% 0% 01_edge_game34 81% 1% 0% 4% 06_clearing_zoom70 82% 0% 0% 2% 07_centre_zoom110 72% 2% 0% 7% map-EmberfallCaldera 00_base_game34 57% 1% 2% 1% 02_clearing_game34 71% 0% 1% 3% 01_edge_game34 68% 1% 3% 5% 06_clearing_zoom70 70% 2% 2% 6% 07_centre_zoom110 64% 4% 2% 6% map-ElderwoodBasin 00_base_game34 62% 95% 70% 84% 02_clearing_game34 78% 100% 89% 95% 01_edge_game34 73% 98% 93% 96% 06_clearing_zoom70 69% 97% 87% 93% 07_centre_zoom110 60% 99% 94% 96% map-AmmoniteLagoon 00_base_game34 67% 94% 75% 84% 02_clearing_game34 82% 99% 89% 93% 01_edge_game34 79% 100% 89% 92% 06_clearing_zoom70 68% 98% 89% 93% 07_centre_zoom110 31% 99% 89% 93% seed 11 volcanic 00_base_game34 54% 38% 12% 36% 02_clearing_game34 62% 35% 9% 45% 01_edge_game34 29% 2% 7% 6% 06_clearing_zoom70 50% 32% 16% 48% 07_centre_zoom110 32% 11% 14% 23% seed 11 desert 00_base_game34 64% 3% 1% 13% 02_clearing_game34 70% 2% 0% 14% 01_edge_game34 42% 2% 2% 4% 06_clearing_zoom70 73% 1% 0% 14% 07_centre_zoom110 42% 3% 3% 7% seed 11 temperate 00_base_game34 57% 90% 71% 87% 02_clearing_game34 57% 98% 98% 99% 01_edge_game34 38% 87% 73% 85% 06_clearing_zoom70 38% 91% 90% 92% 07_centre_zoom110 36% 93% 90% 92% seed 11 tropic 00_base_game34 61% 94% 75% 88% 02_clearing_game34 66% 98% 97% 98% 01_edge_game34 40% 93% 75% 85% 06_clearing_zoom70 46% 95% 91% 94% 07_centre_zoom110 38% 97% 92% 94% seed 11 snow 00_base_game34 29% 0% 0% 0% 02_clearing_game34 26% 0% 0% 0% 01_edge_game34 15% 0% 0% 0% 06_clearing_zoom70 21% 0% 0% 0% 07_centre_zoom110 18% 0% 0% 0% seed 4242 volcanic 00_base_game34 40% 27% 13% 30% 02_clearing_game34 57% 30% 10% 32% 01_edge_game34 21% 13% 14% 22% 06_clearing_zoom70 35% 28% 20% 40% 07_centre_zoom110 29% 33% 19% 41% seed 4242 desert 00_base_game34 44% 5% 1% 13% 02_clearing_game34 66% 5% 0% 12% 01_edge_game34 24% 5% 3% 10% 06_clearing_zoom70 44% 4% 1% 16% 07_centre_zoom110 36% 6% 2% 14% seed 4242 temperate 00_base_game34 40% 92% 58% 79% 02_clearing_game34 55% 95% 95% 96% 01_edge_game34 21% 91% 59% 81% 06_clearing_zoom70 29% 92% 93% 93% 07_centre_zoom110 28% 92% 89% 91% seed 4242 tropic 00_base_game34 43% 91% 62% 80% 02_clearing_game34 62% 98% 96% 97% 01_edge_game34 24% 89% 64% 80% 06_clearing_zoom70 38% 94% 94% 94% 07_centre_zoom110 32% 95% 91% 93% seed 4242 snow 00_base_game34 25% 0% 0% 0% 02_clearing_game34 25% 0% 0% 0% 01_edge_game34 12% 0% 0% 0% 06_clearing_zoom70 19% 0% 0% 0% 07_centre_zoom110 17% 0% 0% 0%
GROUND POLISH (round 3 of the new ground) - REPORT 2026-11-10, local file: PrimevalMirror only, nothing committed Presentation only. RulesRevision stays 120; no NetProtocol, save or replay change; nothing under Simulation/ or WorldGen/ changed. Map hashes unchanged (MapGeneratorTests and MapLayoutTests all pass). Classic draws exactly as before (its pins pass). 1. GREEN WHERE IT WAS GREEN (the owner's volcanic point) Cause, both halves: (a) material: V5 "dark fertile soil" was dark soil with ~100 sparse tufts. Redrawn (local file: work mats_r3.py, headless Blender) as GRASS WITH EARTH SHOWING: dense leaning tufts and short sward over ~68 % of the surface, the dark soil in ragged gaps, Classic's volcanic greens. The desert's D5 "damp oasis earth" was the same kind of material (brown mud, dry stalks): redrawn the same way in the desert's own olive / yellow-green (D5w and D5p). (b) placement: the new volcanic and desert rules now use Classic's own green signals as input: its "green round the water" ramp (SoftDensity(water, 4) 0.004..0.05, ~10 m) and its forest floor (Density(trees, 3) 0.14..0.48), slightly softened, plus a few green tongues reaching into the ash/sand within ~22 m of water or woods. The hall yard and paths are laid before the green, as Classic paints its village ground over its green. Proof (new test GroundLayerTests.TheBareMapsAreGreenWhereClassicIsGreen: of the cells Classic paints >= 0.6 green, share with >= 50 % new grass; it FAILED on the old placement): Emberfall 71 % -> 99 %, Seven Wells 75 % -> 95 %, Bonewater 87 % -> 98 %; the new grass also covers more cells in all than Classic's green on each. On screen, green share of the ground per still (green_coverage.txt has every still, map and seed): CLASSIC | before | after volcanic seed 7: base 18|10|28 open 15|4|19 river bank (owner's spot) 31|14|29 70 m 16|10|26 110 m 29|12|36 volcanic seeds 11 / 4242 (open ground): 35|9|45 and 30|10|32 desert seed 7: base 4|1|11 open 1|0|7 edge 4|1|16 110 m 6|1|17 (desert green is olive; measured from hue 44) temperate seed 7: base 91|67|83 open 95|89|95 edge 93|72|83 110 m 88|88|90 tropic seed 7: base 93|72|86 open 99|94|97 edge 93|65|79 110 m 97|93|95 snow: 0 everywhere in all three (no green expected). Elderwood base 95|70|84, Ammonite base 94|75|84. Temperate / tropic: their G10 / T4 were already green; the losses were the yard, path fringes and wide banks (see 3). The temperate G11 dry grass and G15 bank and the tropic T2 mud were not redrawn: G15 / T2 bands are narrower instead. 2. SNOW: the S2 wave grain is broken: each anti-tiling region (now 3 repeats) turns S2 its own way at a random angle and scale 0.85-1.2 (new shader option, normals turned back; off for every other slot and for Classic), waves calmer (normal 0.5 -> 0.28, colour calmed 0.55 -> 0.72), and the calm S1 drifts take up to 75 % of broad open stretches (was 55 %). Open snow reads calm at 34, 70 and 110 m in the stills; close in (15 m) faint waves still show, running different ways. 3. YARDS AND RINGS: hall apron fades within ~4 m (was 6.5 m with a 12 m fringe), paths narrower (core 0.6 m, wear out to ~3 m), the dry fringe beside them halved. Routes to berries / ore / wood / water thin over their last 6 m (no round cap). Round SMALL clusters (fewer than ~12-26 rock cells within 3 m) the rocky turf / moss / scree / hardpan reach out mostly on the side facing the nearest hall (2.2 m behind, up to 4.5 m in front on grass maps) and are 25-40 % weaker; outcrops and rock fields keep their old reach. 4. DESERT: scree only close to outcrops (small clusters: a 1-2 m lee at 60 %), hardpan halo 0.6 -> 0.2-0.45 and shorter; the ripples (D1) turn up to 45 degrees per region. The base in the stills is now mostly plain sand. 5. VOLCANIC: basalt on a bedrock plain itself is only 0.45 of the mix (was 0.8), V2 plates larger (10 -> 13 m), calmer (normal 0.7 -> 0.5, colour calmed 0.3) and turned per region. Lava (New only): its overlay follows a smooth contour (the 0.5 line of its cells' bilinear coverage, quarter-metre marching squares: straight along runs of cells, rounded corners) with a dark cooled crust out to the 0.22 line, so it steps glow -> black crust -> ember-cracked V4. Classic keeps the old cell quads. Every lava cell stays covered at its middle (a lone cell is a small rounded diamond). STILL SHORT (honest) - Temperate and tropic bases are still 8-14 points less green than Classic in the base / edge stills: the yard is now about Classic's disc, but the paths to wood and water still show as brown lines across the green. - The new volcanic / desert green halos end in a firmer edge than Classic's very soft gradient from 70-110 m (still a soft ramp, but it reads as a band round a pond). Desert halos read olive-dark rather than Classic's yellow-green. - Rings round ore are smaller and one-sided, but on a temperate base a small ore cluster still has a visible stony patch. - The volcanic plain's "net": calmer, not gone; judged only in stills at 34 and 110 m. - Lava still has a crisp outline (now smooth and with a crust, not a gradient); no glow spill onto the ground beyond V4. - Desert paths from the hall still read as long arcs on open sand (unchanged placement idea). COST: control-map bake in the player 22-26 ms (was 18-25 ms), 33-40 ms on 224-256 m maps; world build 267-336 ms (as before). Memory unchanged: layer textures temperate 17.1 MB New vs 21.6 MB Classic, volcanic 14.5 MB New vs 0 Classic; the lava contour adds a few thousand triangles on volcanic maps only. Frame rate (autotest avg over the 70 s tour, 1600x900; another Unity was busy during some runs, so noise is large): temperate New 150 / 131 / 168 vs Classic 166 / 130 / 168 / 171; volcanic New 153 / 136 / 171 vs Classic 171 / 134 / 169 / 172. In the quiet runs New = Classic within 2 %. TESTS (205 run: GroundLayer, Ground, GroundTileUploader, GroundMip x2, EdgeScenery, WorldRendererCull, VisualPolish, BiomeGrade, BiomeWeather, MapGenerator, MapLayout, FreezeScan, MapLookProbe): after re-pinning 197 pass (re-pinned group re-run: 59/60, the 1 the sim drift), 6 skipped, 2 fail, both the known sim drift (GroundLayerTests.TheSimulationNeverSeesTheGround and EdgeSceneryTests.TheSimulation- NeverSeesTheScenery, 0x95EC4727C614DDBE expected, 2609061906737532392 got), not this job. Re-pinned by design: GroundLayerTests.TheNewGroundMasksArePinned, all 8 cases (Random 777, Elderwood, Ammonite, Rimeheart (A only), Seven Wells, Bonewater, Emberfall, Titan's Rest). Classic pins unchanged and pass (TheOldGroundUnderTheLayers- IsUnchanged, TheDesertAndVolcanicGroundAreUntouched). New: TheBareMapsAreGreenWhereClassicIsGreen (3 maps). SHEETS (local file: ground_polish and local file: round3): <biome>_classic_new1_new2.jpg x5 (CLASSIC | NEW before | NEW after, green share on each still), fixedmap_<map>_classic_new1_new2.jpg x5 (Emberfall with the lava close-up), seed11_<biome>.jpg and seed4242_<biome>.jpg (NEW before for these seeds is the previous job's seed run, taken before its last tweaks), green_coverage.txt. Night Emberfall still: local file: nightlava. FILES: changes.diff. Code: GroundLayers.Placement.cs, GroundLayerLibrary.cs (+ RotateRegions on a layer), WorldRenderer.cs (two lines), ConceptMapScenery.cs (SoftLava), GroundLayered.shader (region turn), GroundLayerTests.cs, library asset. Art: local file: Ground V5, D5w, D5p re-baked (old versions in local file: ArtSource and the studio's local file: *_r2; note the studio's round-one V5 folder was moved to local file: V5_v1 by bake2.py, also kept as local file: V5_r2). Arrays re-packed with GroundLayerBuilder.BuildSets. Not touched: FootPlant / unit renderer files, local file: Primeval, CatapultInstallTemp.cs (kept). ProjectSettings/GraphicsSettings.asset noise from a run reverted; the other ProjectSettings edits were there at the start. NOT VERIFIED: night and rain on the new V5 / D5; the lava from the low close camera at night beyond one still; 512 m and 8-player maps in a window; a real match (GameTrails wear over the narrower paths); GPU time on its own; low-end GPUs.
Base area: before | after, in the test build.
A fixed map: Classic vs New ground.
A fixed map: Classic vs New ground.
A fixed map: Classic vs New ground.
A fixed map: Classic vs New ground.
A fixed map: Classic vs New ground.
Temperate at night: Classic vs New ground.
Emberfall Caldera at night: Classic vs New ground.
Temperate in rain: Classic vs New ground.
Base area: before | after, in the test build.
Base area: before | after, in the test build.
Close-up of the soft transitions between ground materials.
Base area: before | after, in the test build.
Base area: before | after, in the test build.
GROUND INTEGRATION (ground v2) - REPORT 2026-11-10, local file: PrimevalMirror only, nothing committed Presentation only. RulesRevision stays 120; no NetProtocol, save or replay change; map generation, walkable and buildable ground untouched (MapGeneratorTests 6/6 and MapLayoutTests 59/59 pass; no file under Simulation/ or WorldGen/ was changed). WHAT A PLAYER SEES NOW (Settings > Graphics "Ground: New", the default) Every map type has its own procedural ground, placed by reason from the map (integration notes v2 rules), every boundary a wide smoothstep ramp (3-28 m) bent by two noises, the height blend only a gentle modulation inside it (influence 0.30, softness 0.40): - Grass maps: lush meadow (G10) in the open, dry sparse grass (G11) on exposed ground and as a fringe round worn ground, trampled earth (G12) as a soft apron round each start's hall plus a path network, forest floor (G13) under the canopy and 3 m out with a darker shade tint 10 m into the meadow, rocky turf (G14) round rock/ore/cliffs, damp bank (G15) along water. - Tropic: jungle cover T4, moss T3 at the shade edge and round rock, G12 paths, leaf litter T1, G14, wet mud T2 by water (the beach band keeps the old sand paint, as before). - Snow: wind-crusted S2 in the open, the old S1 scan (6 m) banked against trees and rock and in broad soft stretches, ice S3 along water/ice edges, thin snow S5 on trodden ground and under dense trees. - Volcanic: quiet ash V1, a soft basalt apron V2 near rock and lava, scorched V3 on worn ground, ember-cracked V4 only within 5 m of lava (its cracks glow, gently by day, strongest at night, slow shimmer), dark fertile V5 by water and trees. - Desert (warm colourway, keeps the orange): rippled sand D1, cracked pans D2 in exposed flats (never on dunes), hardpan D3 on worn ground and round rock, scree D4 close to rock/ore, damp D5 by water and under trees. Pale colourway built and selectable in the library (GroundLayerLibrary.Desert = Pale), not default. Paths: one cheapest-route search per start (110 m window) to its wood line, two berry clusters, nearest ore, water, the map middle and halfway to the nearest neighbour; the routes share trunks and fork; smoothed, then a stronger sideways meander (two noises ~34 m / 13 m, up to 6.5 m, pulled back from blocked ground); widest and barest at the hall, greening out with distance; the ways out fade over their last 25 m. GameTrails' live wear still works on top (the painter's earth channel is taken whole by each map's trampled material). Deterministic from map + seed (integer-hashed noise, presentation salt). THE SETTING Settings > Graphics "Ground New / Classic", saved with the other settings (PlayerPrefs Primeval.Settings.GroundStyle), applies at the next match like "Map edge scenery" and says "(next match)" meanwhile (there is no Classic/New tree option in the mirror to copy; a live switch would re-bake the desert/volcanic splat in one frame). Command line: -groundLayers classic | new (off and campaign as before). Classic draws exactly today's ground: same arrays, rules, shader path (every new shader term is gated by uniforms that are zero for Classic). Classic vs the lead's "current" stills: mean pixel difference 0.02-2.9 of 255 per still, all of it moving units/wind (local file: classic_vs_current.txt); Classic pinned paint/splat hashes pass. MEMORY (layer arrays + control maps, BC7 1024 slices, from the game's own estimate; 192 m 1v1 map) Classic: grass and tropic 21.6 MB, snow 48.3 MB (incl. S4 28 MB), desert/volcanic 0. New: temperate 17.1, tropic 17.1, snow 11.8, volcanic 14.5, desert 14.5 MB. Arrays are split per map type and loaded by path, so a map holds only its own set (the library no longer references any array). Control maps are now 2 texels/m: +1.1 MB on a 192 map, about 8 MB on a 512 map. Build size: about 31 new slices, roughly 85 MB more in Resources. FRAME RATE (autotest avg fps over the 70 s tour, 1600x900; two runs each; run-to-run noise is about +-8 %) temperate Classic 151 / 171 New 171 / 157 snow Classic 170 / 172 New 173 / 154 tropic Classic 171 / 171 New 169 / 171 desert old 164 / 172 New 172 / 167 volcanic old 172 / 172 New 161 / 172 So: no measurable cost on grass and tropic maps; snow, desert and volcanic maybe 0-5 % (inside the noise). GPU time was not measured separately. alloc_kb_per_frame world = 0.00 everywhere (no per-frame allocation). No new shader keywords: variant count unchanged. MAP LOAD: world build 287-346 ms today vs 303-331 ms New on the same maps; the new bake itself is 18-25 ms in the player (fields 5-11, paths 6-8), the old bake was 15-27 ms. Within 10 % on every map type (desert/volcanic +~20 ms). TESTS (202 run in GroundLayer, Ground, GroundTileUploader, GroundMip x2, EdgeScenery, WorldRendererCull, VisualPolish, BiomeGrade, BiomeWeather, MapGenerator, MapLayout, FreezeScan, MapLookProbe): 194 pass, 2 fail, 6 skipped (explicit/ diagnostic). Failures: GroundLayerTests.TheSimulationNeverSeesTheGround and EdgeSceneryTests.TheSimulationNeverSeesThe- Scenery, both 0x95EC4727C614DDBE expected, both 2609061906737532392 got: the same simulation drift in both (the EdgeScenery one never builds a ground), from the uncommitted sim work in the mirror, not this job (no sim file touched). Not re-pinned. New tests: new placement deterministic and seed-dependent and stack sums to one (8 maps, all five types); every map type resolves its own set with exactly its slices, Classic resolves the old sets and desert/volcanic to the painted ground; the style chooses the set in the world; bare maps keep open ground out of the earth channel (64 % -> 0 %); the setting saves/loads/clamps; new masks pinned on 8 maps (TheNewGroundMasksArePinned). Old Classic paint/splat hash pins unchanged and pass; EdgeScenery and GroundLayer pinned hashes pass. SHEETS (also in local file: ground_new) <biome>_before_after.jpg x5 (CURRENT | NEW, seed 7: base, open ground, woodland edge, 70 m, 110 m), transitions_close.jpg, fixedmap_<map>_classic_vs_new.jpg x5 (Rimeheart, Seven Wells, Emberfall, Elderwood, Ammonite), night_temperate_*, night_volcanic_emberfall_* (lava edge close: glowing cracks), rain_temperate_*. Seeds 11 and 4242: local file: seeds_<biome>.jpg. WHERE IT FALLS SHORT OF THE PREVIEWS / THE OWNER'S CONDITIONS - Snow: S2's wind waves are baked into its colour; even calmed (normal 0.5, colour 55 % toward its mean, S1 mixed in over broad stretches) the open snow still shows a regular wave grain at 34-70 m. Best candidate for a new open-snow material. - Desert: busier than today's smooth ground near bases (pebbly hardpan, red scree by ore) and the ripples read as a fine regular grain at 110 m. Close to the preview, but not as calm as today's. - Hall yards are larger than today's disc (the hall apron plus several short routes merge into one plaza). - Round small ore clusters the rocky turf and its fringe still read as rings from 70-110 m. - Volcanic: Emberfall's bedrock plain takes the basalt apron widely, a faint plate net from 110 m. The lava itself is the old cell-stepped overlay (not part of this job) and looks harsher next to the soft new ground. - Tropic mud ring and snow S5 paths: as the art notes warned (S5 reads as speckled tufts, not trampled snow). - Ash "downwind" drifts not built (as in the notes). NOT VERIFIED - GPU frame time; low-end GPUs; 512 m maps and 8-player maps in a game window (only in editor tests); BC7 artefacts close up beyond the 15 m still. - The settings row was not clicked in a running game (load/save/clamp tested, the row compiles); live switching not built. - GameTrails wear on the new ground was not filmed over a long match; fog of war, crater/blood decals and snow weather cover were not specifically checked (they sit on the same shader inputs as before). Minimap colours come from map features, not the ground, so unchanged. - Grass tuft colours were left as they are (they sit acceptably on G10/T4 in the stills). FILES: changes.diff (every changed file against its state before the job; originals in local file: orig). Changed: WorldRenderer.cs, WorldRenderer.Edge.cs, GroundLayers.cs, GroundLayerLibrary.cs, PresentationSettings.cs, GameSettings.cs, SettingsMenu.cs, GameBootstrap.cs, ShowcaseDirector.Ground.cs, GroundLayerBuilder.cs, GroundLayered.shader, GroundLayerTests.cs, Resources/GroundLayers/GroundLayerLibrary.asset. New: GroundLayers.Placement.cs, 12 array PNGs (+meta) in Resources/GroundLayers, 28 source folders in ArtSource/Ground. Ground.shader and GameTrails untouched. No settings/material noise in git status from my runs. Builder: Primeval > Build Ground Layers (new sets only) / Reset New Ground Set Settings.