Roadmap StormLib

Roadmap StormLib — extractores DBC y mapas

Plan de implementación para extractores de datos de juego en firelands-next, alineado con clientes Cataclysm basados en MPQ (no CASC). Formatos wire y de archivo para build 15595.

Entregables

EntregableSignificado para 4.3.4
Extractor DBCAbrir MPQs del cliente, aplicar orden de parches, extraer DBFilesClient\*.dbc (y .db2)
Extractor de mapas (fase 1)Assets de mundo raw: *.wdt, *.adt, *.wdl bajo World\maps\
Extractor de mapas (fase 2).map servidor / vmap / mmap — ver Pipeline VMap

StormLib cubre solo MPQ (abrir, buscar, leer). El parsing interno DBC/ADT es nuestro código.

Versiones de bibliotecas

StormLib

  • Fuente: ladislav-zezula/StormLib
  • Política: Fijar un release tag en CMake (FetchContent). No seguir master.
  • Los MPQs retail Cataclysm usan formato MPQ v3/v4; StormLib 9.x requerido.
  • Fijado en CMakeLists.txt raíz: 9.26

Zlib / BZip2

StormLib necesita ambos para bloques comprimidos Blizzard. El proyecto usa ZLIB del sistema; BZip2 enlazado según CMake de StormLib.

Toolchain

  • C++20, CMake ≥ 3.10
  • Los extractores son executables independientesno enlazar StormLib en auth / world salvo necesidad deliberada de MPQ en runtime

Referencia funcional (4.3.4)

  • Orden de parches: base → expansión → patch-* → archivos locale; el último archivo gana para una ruta
  • Rutas: separadores Blizzard \ en listados; normalizar en código
  • Raíces clave:
    • DBC: DBFilesClient\*.dbc
    • Mapas: World\maps\<Map>\<Map>.wdt, World\maps\<Map>\<Map>_<x>_<y>.adt

Diseño técnico

Módulo MPQ compartido

Wrapper C++ delgado: abrir archivo, búsqueda con máscara, leer a memoria o stream a disco; normalización de rutas.

Extractor DBC

  • Entrada: directorio Data o lista explícita de MPQs
  • Salida: espejo bajo DBFilesClient/ (configurable)
  • Opcional: --only Spell.dbc,...

Extractor de mapas (fase 1)

Extraer WDT/ADT/WDL por mapa en maps/<Map>/....

Extractor de mapas (fase 2)

Pipeline .map servidor + vmap/mmap — hito separado; ver Pipeline VMap.

Integración en repositorio

  • CMake: tools/extractors/ con FetchContent para StormLib (STORM_BUILD_TESTS=OFF)
  • Binarios: firelands-dbc-extractor, firelands-map-extractor, firelands-extractors (TUI)
  • Pruebas bajo tests/unit/vmap/ y smoke tests de extractores

Riesgos

RiesgoMitigación
Orden de parches incorrectoImprimir orden de apertura con --list-mpqs; prueba unitaria de cadena
MPQ locale faltanteDocumentar archivos requeridos para DBC completo
Deriva API StormLibFijar tag; actualizar en PR dedicado

Relacionado