Adopt UO-native tile metrics (stop distorting land, align art footprints) #90

Closed
opened 2026-07-19 12:12:05 +02:00 by marco · 1 comment
Owner

Our grid is 64x32 (IsoProjection.TileWidth/TileHeight), but the UO art is authored for UO's native tile step. Two visible consequences today:

  • Land is distorted: GridRenderer.DrawGrass force-scales the 44x44 UO land tile to 64x32 — stretched horizontally, squished vertically.
  • Sprites bleed onto neighbouring tiles: characters/trees/dummy are drawn at native UO size but placed on a 64x32 step wider than their footprint, so they visually overlap adjacent walkable tiles — it feels like you 'pass through' objects that sit on the next tile.

Proposal (spike first)

  • Verify UO's real tile step from the art (land tile size + iso step), then set IsoProjection.TileWidth/TileHeight to match, and drop the land up-scaling so UO art tiles natively.
  • Invasive: the projection constants ripple through camera, input (ScreenToGrid), layouts and the movement feel — do it on a branch and evaluate in-game before committing.

Sibling of the billboard-vs-tile readability issue (tile highlight) and #66 (depth sort, already static-agnostic).

Definition of Done

  • Land tiles render without stretch/squish (native aspect).
  • A character/tree/dummy footprint sits on its own tile without visibly bleeding onto adjacent walkable tiles.
  • Camera follow, cursor->tile picking and movement still feel correct.
Our grid is 64x32 (`IsoProjection.TileWidth/TileHeight`), but the UO art is authored for UO's native tile step. Two visible consequences today: - **Land is distorted:** `GridRenderer.DrawGrass` force-scales the 44x44 UO land tile to 64x32 — stretched horizontally, squished vertically. - **Sprites bleed onto neighbouring tiles:** characters/trees/dummy are drawn at native UO size but placed on a 64x32 step wider than their footprint, so they visually overlap adjacent walkable tiles — it feels like you 'pass through' objects that sit on the next tile. ### Proposal (spike first) - Verify UO's real tile step from the art (land tile size + iso step), then set `IsoProjection.TileWidth/TileHeight` to match, and drop the land up-scaling so UO art tiles natively. - **Invasive:** the projection constants ripple through camera, input (`ScreenToGrid`), layouts and the movement feel — do it on a branch and evaluate in-game before committing. Sibling of the billboard-vs-tile readability issue (tile highlight) and #66 (depth sort, already static-agnostic). ## Definition of Done - [ ] Land tiles render without stretch/squish (native aspect). - [ ] A character/tree/dummy footprint sits on its own tile without visibly bleeding onto adjacent walkable tiles. - [ ] Camera follow, cursor->tile picking and movement still feel correct.
Author
Owner

Done in #93: IsoProjection now uses UO-native 44x44 metrics (22px iso step), land draws 1:1 with no stretch/squish, and mobiles/statics space as the art expects. Evaluated in-game (feel improved). The residual 'blocked with a visible gap' readability is tracked separately in #91.

Done in #93: IsoProjection now uses UO-native 44x44 metrics (22px iso step), land draws 1:1 with no stretch/squish, and mobiles/statics space as the art expects. Evaluated in-game (feel improved). The residual 'blocked with a visible gap' readability is tracked separately in #91.
marco closed this issue 2026-07-19 13:38:01 +02:00
Sign in to join this conversation.
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#90
No description provided.