feat(client): UO-native tile metrics + fade creatures that hide the player #93

Merged
marco merged 2 commits from feat/uo-tile-metrics into main 2026-07-19 12:58:04 +02:00
Owner

Addresses #90 (and the "walking inside objects" feel), evaluated in-game — the feel is decidedly better.

UO-native tile metrics (44x44)

The grid was 64x32, so native 44x44 UO land was stretched/squished to fit, and the 16px vertical step packed mobiles tighter than the art expects. Switch IsoProjection to UO's native 44x44 (22px iso step on both axes): land draws 1:1 (no distortion) and mobiles/statics space as authored. IsoProjection/VisibleTiles tests updated to the new geometry; docs/asset-authoring.md corrected (land is native, not scaled).

Fade creatures that would hide the player

Extends the tree occlusion-fade (#66) to mobiles: a creature nearer than you that covers your body is drawn translucent (name stays readable), using the existing sprite hit-test (Mobile.Contains) — the "walking inside the dummy" case.

Known residual (separate follow-up)

The "blocked with a visible gap" (billboard tall sprite, 1-tile collision) is a readability gap, not fixed here — a ground tile-marker under mobiles / tile-under-cursor highlight (#91) is the next step.

Definition of Done

  • Land renders at native aspect (no stretch/squish); character/creature spacing feels right.
  • A creature covering the player fades so the player stays visible.
  • Suite green (57 Client.Core with updated geometry, 157 GameServer), zero warnings.
Addresses #90 (and the "walking inside objects" feel), evaluated in-game — the feel is decidedly better. ### UO-native tile metrics (44x44) The grid was 64x32, so native 44x44 UO land was stretched/squished to fit, and the 16px vertical step packed mobiles tighter than the art expects. Switch `IsoProjection` to UO's native **44x44** (22px iso step on both axes): land draws 1:1 (no distortion) and mobiles/statics space as authored. `IsoProjection`/`VisibleTiles` tests updated to the new geometry; `docs/asset-authoring.md` corrected (land is native, not scaled). ### Fade creatures that would hide the player Extends the tree occlusion-fade (#66) to mobiles: a creature nearer than you that covers your body is drawn translucent (name stays readable), using the existing sprite hit-test (`Mobile.Contains`) — the "walking inside the dummy" case. ### Known residual (separate follow-up) The "blocked with a visible gap" (billboard tall sprite, 1-tile collision) is a *readability* gap, not fixed here — a ground tile-marker under mobiles / tile-under-cursor highlight (#91) is the next step. ## Definition of Done - [ ] Land renders at native aspect (no stretch/squish); character/creature spacing feels right. - [ ] A creature covering the player fades so the player stays visible. - [ ] Suite green (57 Client.Core with updated geometry, 157 GameServer), zero warnings.
The grid was 64x32, so land (native 44x44) was stretched/squished to fit and the
vertical tile step (16px) packed mobiles tighter than the UO art expects — the
'walking inside objects' feel. Switch IsoProjection to UO's native 44x44 (22px
iso step on both axes): land draws at scale 1 (no distortion) and mobiles/statics
space as the art was authored. IsoProjection/VisibleTiles tests updated to the new
geometry.

Spike for #90 — evaluate the look/feel in-game before merging.
feat(client): fade creatures that would hide the player
All checks were successful
ci / Lint & Test (pull_request) Successful in 1m36s
49ba67dc22
Extend the tree occlusion-fade (#66) to mobiles: a creature nearer than you that
covers your body is drawn translucent, so it can't hide your character — the
'walking inside the dummy' case. Its name stays readable. Uses the existing
sprite hit-test (Mobile.Contains).
marco merged commit 7e88259f3e into main 2026-07-19 12:58:04 +02:00
marco deleted branch feat/uo-tile-metrics 2026-07-19 12:58:04 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo!93
No description provided.