Add minimal docs on coordinate translations for Gridvania levels
This commit is contained in:
parent
99bbb1074e
commit
2718983cd1
1 changed files with 67 additions and 0 deletions
67
docs/level-layout-doc.txt
Normal file
67
docs/level-layout-doc.txt
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
|
||||||
|
Y ↑
|
||||||
|
│ Bevy world ↑ LDtk-World ↓
|
||||||
|
│ (Y increases upward) (increases downward)
|
||||||
|
│
|
||||||
|
│ -32 -16 0 16 32
|
||||||
|
│ ┌────────────┬─────────────┬─────────────┬─────────────┐ │
|
||||||
|
│ 32 │ │ │ L2 │ │-32│
|
||||||
|
│ │ │ │ (top-lvl) │ │ │
|
||||||
|
│ │ │ │ │ │ │
|
||||||
|
│ ├────────────┼─────────────┼─────────────┼─────────────┤ │
|
||||||
|
│ 16 │ │ L1 │ L0 │ L3 │-16│
|
||||||
|
│ │ │ │ │ │ │
|
||||||
|
│ │ │ │ (0,0) │ │ │
|
||||||
|
│ ├────────────┼─────────────O─────────────┼─────────────┤ │
|
||||||
|
│ 0 │ │ │ L4 │ │ 0 │
|
||||||
|
│ │ │ │ │ │ │
|
||||||
|
│ │ │ │ │ │ │
|
||||||
|
│ ├────────────┴─────────────┴─────────────┴─────────────┤ │
|
||||||
|
│ -16 │ L5 │ 16│
|
||||||
|
│ │ (bottom-lvl) │ │
|
||||||
|
│ │ │ │
|
||||||
|
│ └──────────────────────────────────────────────────────┘ ↓
|
||||||
|
│
|
||||||
|
└───────────────────────────────────────────────────────────────► X →
|
||||||
|
-32 -16 0 16 32
|
||||||
|
```
|
||||||
|
|
||||||
|
Legend
|
||||||
|
──────
|
||||||
|
• Each square = 16×16 tiles.
|
||||||
|
• **Bevy Y** increases **upward** (↑).
|
||||||
|
• **LDtk Y** (both world & inside level) increases **downward** (↓).
|
||||||
|
|
||||||
|
Coordinate examples
|
||||||
|
───────────────────
|
||||||
|
Level L0 (at origin)
|
||||||
|
LDtk world anchor (top-left) = (0, -16)
|
||||||
|
Top-left corner in Bevy world = (0, 16)
|
||||||
|
|
||||||
|
Level L1 (left of origin)
|
||||||
|
LDtk world anchor = (-16, -16)
|
||||||
|
Top-left corner in Bevy world = (-16, 16)
|
||||||
|
|
||||||
|
Level L2 (above origin)
|
||||||
|
LDtk world anchor = (0, -32 )
|
||||||
|
Top-left corner in Bevy world = (0, 32)
|
||||||
|
|
||||||
|
Level L3 (right origin)
|
||||||
|
LDtk world anchor = (16, -16)
|
||||||
|
Top-left corner in Bevy world = (16, -16)
|
||||||
|
|
||||||
|
Level L4 (below L3)
|
||||||
|
LDtk world anchor = (0, 16)
|
||||||
|
Top-left corner in Bevy world = (0, -16)
|
||||||
|
|
||||||
|
Level L5 (below L4, spanning 4 x levels)
|
||||||
|
LDtk world anchor = (-32, 32)
|
||||||
|
Top-left corner in Bevy world = (-32, -32)
|
||||||
|
|
||||||
|
|
||||||
|
Player's world-based gridcoords need to be converted to the internal coordinates for a level (so we can match it with
|
||||||
|
the cached walls HashMap).
|
||||||
|
To convert between world and in-level coords:
|
||||||
|
|
||||||
|
lX = wX - level_world_x
|
||||||
|
lY = wY - (-level_world_y - level_height)
|
Loading…
Add table
Add a link
Reference in a new issue