Иконка ресурса

L2 Geodata Toolkit Precompiled (EN) 1.4.1

Нет прав для скачивания
Pathnode

- PTS walk matches L2Server — file block `b = bx * 256 + by` (`bx = b >> 8`) and cell `i = cx * 8 + cy`. The swapped walk planted nodes on the transposed cell.

Tests

Stdlib fixture marks file cell `(bx=1, by=0, cx=1, cy=0)` and expects world `(gx=9, gy=0)`, not `(0, 9)`.
Pathnode

- LOS octant links — closest neighbour in each octant only if `CGeoData::MoveStraight3` can walk it (NSWE bits plus dest `|ΔZ| ≤ 48`). L2Server A* trusts stored edges with no geo check, so a wall-crossing link was a player/NPC waypoint through the obstacle.
- Parallel link — same `-j` / `--max-cpu` (default 80) / `--min-free-ram` (default 2 GB) as generate. Height, NSWE, extra layers, and a section CSR are mmap'd so workers share one copy. Packs under 80k nodes stay in-process. Taichi is generate-only.

Tests

Stdlib fixtures for NSWE wall links, small packs staying in-process, and the shared section CSR.
Generate

- BlockingVolume omitted — official Glory Days PathMaker geo does not bake these brushes (~92% of inner-volume walls on classic maps are NSWE=15). Baking them sealed paths PathMaker left walkable (Pantheon museum box on new Talking Island). Same referee as `Mover` / `ServerBlockingVolume`. The viewer overlay still draws them in red.
- Ingest is `StaticMeshActor` + main BSP only — movable meshes, sky, emitters, and volume brushes stay out.
- 2 GB RAM floor, 80% CPU cap — auto workers start while ≥2 GB stays free (was 1 GB). `--max-cpu` (default 80) caps worker count and hard-caps the process tree so Taichi cannot fill leftover cores. `--max-cpu 100` uses every thread.
- In-place bars for parallel generate — one `generate` bar plus a bar per live worker, rewritten on the current lines instead of a new status line per tick.

Tests

Stdlib fixtures for BlockingVolume NSWE axis, zone hulls, omitted actor classes, 2 GB / 80% CPU auto-scale, and parallel status lines.
Generate

- Stacked walls stay walls — a lone steep face ≤ 16u is still a stair riser. 16u strips stacked in the same cell that merge taller than 16 (tents / building walls tessellated into bands) are kept as walls.
- Bilinear 24u lumps — heightmap neighbor pairs that differ by exactly 24u are pulled 8u closer so the climb is a legal 16u step. Real 32u+ cliffs stay closed.
- Type-0 only if heights are identical — flattening a 16–32u ramp to `max` (official Glory Days span-32) turned the next block edge into a 24u wall. Ramps stay complex.

Tests

Stdlib fixtures for stacked 16u wall strips vs lone risers, bilinear 24u lump relax, and type-0 only for identical-height flats.
Pathnode

- `pathnode` compiles `pathnode.bin` / `pathnode.idx` (dummy index 0, 11×i32 records).
- Seeds are thinned (merge 48 / cap 16 / per-floor fill) so the bin stays under Loader's signed 2 GiB − 1 check.
- Does not write SuperPoint.bin or npcpos / superpointinfo.

Spawn check

- `spawncheck` is read-only npcpos vs PTS geo. `-o` JSON pins for `view --spawns`.

Generate

- DoorData footprints forced NSWE=15; UNR Mover meshes omitted.
- Official type-0 flatten (single-layer, NSWE=15, height span ≤ 32).
- Island prune removed — roofs and dungeon slabs stay.
- Workers auto-scale from free RAM (`--min-free-ram`).

Tests

Stdlib fixtures for flatten/DoorData, spawncheck, pathnode, worker scaling, clearance, and collision flags.
Назад
Сверху Снизу