ReviewOS

stacks/the-settlers-iii-remake

Render original arrow flight sprites and anchored launch height

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

The browser scene emits arrow items with an empty sprite key, and the renderer substitutes a short Canvas line. The original demo contains DAT 1 sequences 100 through 105, three frames each, with original signed anchors and frame-dependent silhouettes. None is imported for flight presentation.

The pinned reference's MapObjectDrawer.drawArrow selects original frames with round(progress * 2), interpolates source/target elevation and adds a display-space launch height and arc. Current presentation instead launches a generic shaft from ground level with a sine arc. This is a presentation gap; the engine's flight and damage scheduling must remain independent.

Evidence: paulwedeck/settlers-remake@6ad8c4230a4aa4cd21840f8cb59a38344e41c3e0, jsettlers.graphics/src/main/java/jsettlers/graphics/map/draw/MapObjectDrawer.java, drawArrow; original Amazons demo Gfx/Siedler3_01.f8007e01f.dat, sections 0x106 and the pinned amazon_demo.json mapping. Independent decoding confirms all 18 body frames. Sequences 100 and 105 have mirrored diagonal silhouettes; 101 and 104 have the opposite horizontal orientations.

The reference code selects sequence 104 for both EAST and SOUTH_EAST. Record and resolve that discrepancy against the original frame geometry and direction contract. Do not silently describe an inferred correction as an original Gold runtime observation.

Acceptance:

  • Import the original flight frames with exact signed anchors, selectors, input hashes and provenance. Retain independent source-pixel comparisons.
  • Select original orientation and flight frames through a documented direction contract, with the southeast discrepancy explicit.
  • Render source-supported launch height, interpolation and depth using the actual projectile state and real elevation. Do not change damage, flight ticks, visibility policy or ground-arrow lifetime without separate evidence.
  • Retain real 1x/2x browser pixel checks across directions and flight phases, unequal endpoint heights, overlap, save/restore and unchanged simulation checksums.
  • Pass lint, types, asset verification, units, full production browser gate and pushed CI diagnostics.

Related #88. Original-media rasters stay local. This work establishes original demo pixels and documented reference presentation, not Gold timing or ground-arrow lifetime.

6 days ago

Original arrow bodies and mapped shadows now render from the demo data in the local browser. Independent pixel checks pass across all six directions, three flight phases, unequal endpoint heights and foreground occlusion at 1x and 2x. Save/restore, warm terrain reuse and simulation checksums also pass.

The southeast selection uses original sequence 105 based on its directional artwork. The pinned reference duplicates 104 for east and southeast; that discrepancy remains explicit rather than being presented as an original Gold observation. Flight ticks and damage scheduling are unchanged.

The full browser gate and downstream dependency qualification are still pending. The upstream STX release has passed; its Stacks adoption is going through the normal patch release before final game verification.

Sign in to comment on this issue.