ReviewOS

stacks/the-settlers-iii-remake

Render original mixed-face landscape transitions

#220
Closed chris opened this 6 days ago ·
6 days ago

The renderer preserves uniform source landscapes after #219, but mixed faces still select the first vertex's base material. The pinned reference selects transition images and a separate orientation from the three landscape identities.

A retained actual-browser reproduction converts an authored original-format map through worldFromOriginal and renders it with the production renderer. Its upward face at 32,32 has a WATER2 apex and WATER1 at both bottom corners. The unchanged original DAT includes base images 17/16 and transition image 84. The reference selects image 84 and BOTTOM UVs: apex(16,16), left(8,32), right(24,32). At 200%, the stable sample selects source texel(16,24), with flat 7/8 light, and should render 0,141,208,255. The retained previous renderer produces 0,127,194,255. The simulation checksum remains unchanged and there are no browser execution, request or collection errors. Original raster evidence remains private.

The first 100% reproduction remains retained, but its stated texel did not account for the final 2x-to-1x nearest-sampling tie. The maintained regression uses the stable 200% sample above, verified against both independent DAT readers and the unchanged previous production source.

Source owner: game asset importer, terrain material resolver and production renderer. Parent #88; depends on #219; related #20 and #28. Preserve the coverage, continuous UV, light, cache and resource contracts established in #215, #217 and #218.

Reference evidence is paulwedeck/settlers-remake@6ad8c4230a4aa4cd21840f8cb59a38344e41c3e0:

  • Background.java: ordered borderTextures, type1/type1alt/type2 counts, the alternate-pair exclusion, parity variant, first match, unmatched fallback, source texture positions and phase.
  • ETextureOrientation.java: CONTINUOS, ORIENTATION, LEFT and RIGHT policies.
  • DrawConstants.java: 16x16 texture units and 0.5 border offset.

Acceptance:

  • Retain the red public-conversion/actual-browser mixed-water reproduction and independent source pixel oracle.
  • Generate and verify the complete ordered transition catalog from pinned source evidence. Import every reachable original image with unchanged pixels and exact selectors; record missing/unsupported content explicitly.
  • Select each face from all three canonical landscape identities, preserving source count rules, alternate identities, parity and first-match ordering. Match uniform and unmatched-face fallback behavior rather than inventing blends.
  • Apply the correct up/down and equality-dependent UV orientation, half-texel border offset, image-specific continuous/face-local phase and existing interpolated light path. Verify boundary sampling against the source atlas construction.
  • Cover every declared transition family, both parity variants and orientations, three-landscape/alternate cases, uniform and unmatched faces, unequal elevation and near-edge texels with independent source expectations.
  • Verify actual 1x/2x output, hidden-entity filtering, terrain changes across chunk boundaries, bounded material/cache ownership and disposal, and unchanged simulation/checkpoints/replays. Preserve immutable earlier rules profiles.
  • Run lint, types, units, original asset integrity, production build and the complete browser gate. Qualify the pushed version and original diagnostic artifact before closing.

This advances source rendering fidelity. It does not establish original Gold runtime behavior, complete fog timing, all original media, or matched native rendering.

6 days ago

Both independently implemented DAT readers now agree on every decoded byte of all 235 images used to construct the pinned reference terrain atlas, totaling 1,945,600 RGBA bytes. That is broader than the 192 images directly selected by landscape and transition rules, and still fits the existing byte budget.

Atlas construction matters: the reference writes image 98 and then image 105 to the same cell at 30,16. Their source pixels differ, so the later image replaces the earlier one. Continuous images also repeat into their reserved padding. Selecting an isolated transition frame without accounting for the actual atlas construction can therefore disagree with the reference. This overlap is reference-remake evidence; its relationship to original Gold rendering is unqualified.

The implementation needs an explicit, reviewed policy for atlas ownership, padding and boundary texels. The existing mixed-water pixel reproduction remains red, and no production transition implementation has been published yet.

6 days ago

The mixed-water regression now passes locally through original-map conversion and the production renderer. A 200% view pins the source texel away from final downsampling ties; the retained previous renderer still fails that same sample.

The importer now preserves all 235 images written by the reference atlas. Every decoded byte matches the independent DAT reader. The renderer uses all three canonical identities, the ordered first match, parity, alternate-pair exclusion and the reference up/down orientation and phase. Its virtual atlas preserves the image105/image98 overlap and accounts for the lookup within the existing memory budget.

An independent fixture generator now compiles and executes the pinned Java selector and orientation code to supply numeric image/UV expectations. The browser matrix covers both directions and parities, all 41 declared families, uniform and unmatched faces, all permutations of the grass/sand/river triples, unequal heights and near-edge samples. Eight declared sand/river image variants are shadowed by earlier rules in the reference table; the importer retains them, while selection follows the earlier match. Full application and published-CI qualification are still pending.

6 days ago

Original mixed-face terrain selection is delivered. Faces now use all three landscape identities, the ordered reference families, parity, alternate-pair exclusion, up/down orientation and continuous or face-local texture phase. The virtual atlas preserves source padding and the reference overwrite order within the existing memory limits.

All 235 imported images match every byte from an independent DAT decoder. The production renderer passes 1,256 cases whose image and UV expectations were produced by executing the pinned Java selector. Both real 1x/2x contexts pass 128,043 pixel checks, including current-profile uniform UVs, height deformation, all family variants, three-landscape cases and near-edge samples. A real terrain-changing intervention crosses four chunk boundaries; cached, fresh and restored views match without changing simulation state during painting.

CI passed: lint, types, all 417 units, asset/provenance checks, production build and 16 browser suites with 546 steps and no console, request or collection errors. The full ten-minute rival battle and save/reload checks passed. The original diagnostic ZIP was verified against its API digest and every CRC.

This closes the mixed-material correction. Remembered terrain under fog is separately reproduced in #222. Original Gold runtime behavior, exact fog fading and native presentation parity remain unqualified.

Sign in to comment on this issue.