ReviewOS

stacks/the-settlers-iii-remake

[S3-086] Match original terrain and entity presentation

#88
Open chris opened this 8 days ago ·
8 days ago

S3-086: Match original terrain and entity presentation

Parent and ownership

Parent epic: https://github.com/stacksjs/the-settlers-iii-remake/issues/13 Source owner: stacksjs/the-settlers-iii-remake. Master roadmap: https://github.com/stacksjs/the-settlers-iii-remake/issues/4.

Problem and observable result

Match scale, projection, anchors, and palette. Render real action and direction animations. Share ordering and picking across renderers.

The current application is a browser prototype. Passing the Riverlands campaign does not establish original-game or native parity. This issue is complete only when its stated behavior has retained evidence.

Evidence and interfaces

Shared stx controls read player views and issue commands. Browser/native render adapters consume the same projection, assets, animation state, and input coordinates. Sound follows actual events.

Pin the inspected revisions and fixture hashes in the implementation evidence. Original-game observations govern rules and timing. JSettlers is implementation evidence, not an authoritative balance specification. Unknown values remain explicitly unverified.

Acceptance criteria

  • Match scale, projection, anchors, and palette.
  • Render real action and direction animations.
  • Share ordering and picking across renderers.
  • The visible result agrees with the underlying simulation or platform state, including failure paths.
  • Tests exercise the maintained public interface and retain reproducible fixtures or execution receipts.

Test matrix

  • Compare controlled original scenes.
  • Verify cargo, construction, and overlapping sprites.
  • Exercise invalid input, cancellation or interruption, and repeated execution where this interface permits them.
  • Verify determinism/conservation for simulation changes and resource ownership/disposal for platform changes.
  • Run owning-repository lint, relevant type checks and tests. Capture actual native output for native capability claims.

Scope constraints

Implement this behavior as a complete verifiable slice. Do not silently expand into adjacent tickets or substitute simplified gameplay. Keep the shared TypeScript simulation, shared stx signals, and ts-css conventions. Native gameplay and HUD must not depend on a WebView. HomeOS reuse must not introduce a kernel dependency into the game. Existing unrelated edits and authored guidance must be preserved.

Blocked by

Upstream release and adoption

Application behavior belongs here. If a reproduction identifies a framework defect, repair and release its owning source first, update Stacks where affected, then install the verified packages here.

No node_modules edits, copied runtimes, generated-source string patches, fabricated globals, successful no-op implementations, or skipped release gates. Push tested conventional commits as Chris to the owning origin/main without coauthor trailers or force pushes.

Completion evidence

  • Implementation commits and relevant upstream issue links.
  • Exact checks and results, fixture hashes, and screenshots/native execution evidence where applicable.
  • Published package versions, downstream lockfile identity, and release receipts when affected.
  • Remaining limitations stated explicitly. Partial work does not close this issue.
7 days ago

Recent browser rendering work has corrected RGB555/RGB565 channel expansion (#213), explicit torso player-color layers (#211), original movable shadows (#214) and bounded terrain cache retention (#216). The shared-edge coverage repair is being qualified in #215; its Retina regression exposed a browser-driver defect that is being released at the owning Stacks source.

This issue remains open. The next terrain-specific gaps are concrete in the pinned reference: Background.addTriangleToGeometry chooses transition textures from all three vertex landscape types and preserves continuous UV phase in the flat map projection. addPointToGeometry supplies per-vertex lighting, which the fragment shader interpolates and multiplies into RGB. Our current rendering still uses four repeating materials and per-face slope shading. Those are separate fidelity corrections, beyond repairing coverage seams.

Original Gold runtime comparison and native presentation also remain unqualified. The supplied remake source and demo assets establish implementation evidence, not complete original-game equivalence.

6 days ago

The terrain coverage correction in #215 is complete. Its production CI passed all 16 browser suites, including actual 1x and 2x pixel checks and the full ten minute rival battle. The original retained diagnostic archive has been verified against GitHub's digest.

The next presentation correction is #217: keep continuous texture frequency and phase tied to the reference land grid as elevation changes. Reference vertex lighting, landscape transitions and matched original-game scenes remain open here. The browser result does not qualify native presentation or complete Gold parity.

6 days ago

The continuous texture correction in #217 is complete. Its production CI passed all 16 browser suites and 510 steps, including the full ten minute rival battle and 120,339 terrain pixel checks per actual 1x/2x scale. The original diagnostic archive has been verified against GitHub's digest and every CRC.

The next source correction is #218 for reference vertex lighting. Full landscape identity and transitions, reference fog animation, matched original Gold scenes and native presentation remain open here.

6 days ago

Reference vertex lighting in #218 is complete. Production CI passed all 16 browser suites, including the full ten minute rival battle and 120,354 pixel checks per actual 1x/2x scale. The original diagnostic archive has been verified against GitHub's digest and every CRC.

The next correction is #219: preserve original landscape identities through gameplay, source materials and checkpoints. It has retained world-conversion and actual browser failures for collapsed water-depth classes, plus a separate river classification failure. Temporal fog, mixed-face transitions, Gold observations and native presentation remain open here.

8 days ago

Progress (still open)

The renderer now draws the six-neighbour lattice with elevation shading using the reference projection, original landscape textures, fog of war, border posts, and original sprites for buildings, construction stages, carriers in six directions with their cargo, piles, trees, saplings and crops. Matching original terrain transitions, animation timing and other professions' sprites remains.

Evidence base for this update (all on main, authored as Chris):

  • 3ca4847 deterministic session, rules profile, routing, goods, carriers, construction, production, territory, visibility, saves and replays
  • da2a104 reference building geometry and the delivery livelock fix
  • b2efc1f the browser game on the engine, expanded original-media import
  • 7b1cc36 worlds from decoded original maps
  • a495e7a, 0a3ff46, 0e7889e, e5c1a53, f3b71ce, ed1dc8f controls, missions, render scene, save migration, checkpoints, audit and statistics

Checks: ./buddy lint (0 problems), bun run typecheck (app, tools, stx), ./buddy test --unit (106 tests, 0 failures), bun run assets:verify, bun run content:verify, and the production browser scenario. CI passed on 0e7889e and 9e2ba7c (which contains f3b71ce), including the production Chrome check.

Rule values are the roman-engineering 0.2.0 profile (resources/game/engine/rules.ts). Every value names its evidence class: manual candidates (M) from the pinned manual, reference-remake geometry (E), or placeholders (U) that name their owning issue. qualificationGaps() lists them and the profile cannot qualify a release. Adopting observed original values remains with S3-002/S3-007; nothing here is an original-executable observation.

6 days ago

The uniform landscape correction in #219 is complete and qualified. All 37 source identities select the appropriate 32 original base images with source phase/orientation and the existing vertex-light path. The next reproduced presentation defect is #220: mixed faces still use a base image rather than the reference transition atlas. Fog timing, remaining entities/media and native matched scenes remain open.

Validation: full CI, 413 unit tests and all 16 browser suites. The original diagnostic artifact checksum and ZIP integrity were independently verified.

Sign in to comment on this issue.