Pipeline VMap

Datos del cliente y extractores de colisión

Seguimiento de estado: el progreso vivo de Tools 1–4 y colisión en runtime está en el Roadmap del Core. Actualizar esa página al cerrar hitos; este doc guarda el detalle técnico.

Estrategia: Implementación C++ completa en el repositorio — cero binarios envueltos para el pipeline de colisión.

Objetivo principal: Artefactos de colisión servidor compatibles con el cliente (.map, vmaps/, mmaps/) para que VMapManager2 / runtime mmap reemplace MapCollisionQueriesStub.

Cliente objetivo: WoW 4.3.4 / build 15595.

Visión general del alcance

ÁreaTargetPropósitoEstado
MPQ + orden de parchesFirelandsExtractCommonMpqPatchChain, WowDataMpqListHecho
Extracción DBC / DB2firelands-dbc-extractorDBFilesClient → árbol de salidaHecho
Mapas cliente rawfirelands-map-extractorWDT/ADT/WDL desde MPQsHecho
Launcher TUIfirelands-extractorsFTXUI: DBC + mapas rawParcial
Matemática vmap compartidaFirelandsVmapCommonBIH, lector DBC, ModelSpawnHecho
.map servidor + tilelistfirelands-map-extractor-vmapTool 1 — ADT/WDT → maps/*.mapImplementado
Extracción VMap4firelands-vmap4-extractorTool 2 — Buildings/Portado
Ensamblado VMap4firelands-vmap4-assemblerTool 3 — vmaps/Implementado
Generación MMAPfirelands-mmap-generatorTool 4 — mmaps/ (Recast/Detour)No iniciado
Colisión runtimeworldIMapCollisionQueriesSolo stub

Dos “map extractors”

BinarioUbicaciónSalida
firelands-map-extractortools/extractors/Archivos cliente raw bajo World/maps/…
firelands-map-extractor-vmaptools/vmap/map_extractor/Servidor maps/<id><yy><xx>.map + <id>.tilelist

Pipeline de colisión (end-to-end)

WoW 4.3.4 Data/  (cadena MPQ vía StormLib)


  Tool 1: firelands-map-extractor-vmap  →  maps/*.map + *.tilelist


  Tool 2: firelands-vmap4-extractor     →  Buildings/


  Tool 3: firelands-vmap4-assembler     →  vmaps/


  Tool 4: firelands-mmap-generator      →  mmaps/  (Recast/Detour)


  worldserver: cargadores VMap + Detour → IMapCollisionQueries real

Orden de ejecución: Tool 1 → 2 → 3 → 4 para un dataset de colisión completo. Tool 4 requiere salidas de Tool 1 y Tool 3.

Constantes mágicas (formato debe coincidir con tooling del cliente)

ConstanteValorUsado en
MAP_MAGIC"MAPS"Tiles .map del servidor
VMAP_MAGIC"VMAP"Headers de árbol/tile VMap
MMAP_MAGIC"MMAP"Tiles navmesh

Definidas en VMapDefinitions.h bajo tools/vmap/; todos los extractores deben usar valores idénticos.

Integración runtime

Hoy worldserver.yaml establece Collision.DataRoot pero MapCollisionQueriesStub devuelve defaults seguros. Criterios de cierre:

  1. Generar dataset de colisión con Tools 1–4 contra un cliente 4.3.4
  2. Cablear VMapManager2 + cargador Detour mmap en world
  3. Cablear implementación IMapCollisionQueries; eliminar stub
  4. Pruebas de integración: línea de visión, consultas de altura, spot-checks de pathfinding

Configuración

En worldserver.yaml:

Collision:
  DataRoot: "/path/to/collision-output"

Layout esperado bajo DataRoot: maps/, vmaps/, mmaps/ (layout estándar de datos de servidor Cataclysm).

Relacionado