Kelsidavis-WoWee/tools/editor/FORMAT_SPEC.md
Kelsi 5b180c5579 docs: update FORMAT_SPEC with WHM alpha maps, JSON DBC, PNG textures
- WHM spec now documents per-chunk alpha map data with backward compat
- Added JSON DBC format section (replaces binary DBC)
- Added PNG texture section (replaces BLP)
- Added open format scoring criteria (0-6 scale)
2026-05-05 13:10:48 -07:00

2.7 KiB
Raw Blame History

Wowee Open Format Specification v1.0

Novel file formats for custom WoW zone content. No Blizzard IP.

WOT — Wowee Open Terrain (JSON metadata)

  • Extension: .wot
  • Contains: tile coords, texture list, per-chunk layers/holes, water data
  • Key: "format": "wot-1.0"

WHM — Wowee HeightMap (binary)

  • Extension: .whm
  • Magic: WHM1 (0x314D4857)
  • Version: 1 (embedded in magic — WHM2 for future revisions)
  • Layout: magic(4) + chunks(4) + vertsPerChunk(4) + per-chunk data × 256
  • Per-chunk: baseHeight(4) + heights145 + alphaSize(4) + alphaData(alphaSize)
  • Alpha data: raw alpha blend maps for texture layers (same format as ADT MCAL)
  • Backward compatible: older WHM files without alpha data still load (alphaSize=0)

WOM — Wowee Open Model (binary)

  • Extension: .wom
  • Magic: WOM1 (0x314D4F57) — version 1
  • Version: embedded in magic (WOM2 for future revisions with animation support)
  • Layout: magic(4) + vertCount(4) + indexCount(4) + texCount(4) + bounds(28) + name + vertices + indices + texPaths
  • Vertex: position(vec3) + normal(vec3) + texCoord(vec2) = 32 bytes

WOB — Wowee Open Building (binary)

  • Extension: .wob
  • Magic: WOB1 (0x31424F57)
  • Layout: magic(4) + groupCount(4) + portalCount(4) + doodadCount(4) + bounds(4) + name + groups + portals + doodads
  • Group: name + vertices(pos+normal+uv+color) + indices + texPaths + bounds + outdoor flag

WCP — Wowee Content Pack (archive)

  • Extension: .wcp
  • Magic: WCP1 (0x31504357)
  • Layout: magic(4) + fileCount(4) + infoJsonSize(4) + infoJSON + [pathLen(2) + path + dataSize(4) + data] × N

zone.json — Map Definition

  • Replaces WDT
  • Contains: mapName, mapId, tiles, biome, file references

zone.json Fields

  • mapName, displayName, mapId, biome, baseHeight
  • hasCreatures, description, tiles array, files map
  • editorVersion for compatibility tracking

JSON DBC — Data Table Replacement

  • Replaces binary DBC files
  • Format: {"format": "wowee-dbc-json-1.0", "records": [...], "fieldCount": N}
  • Records are arrays of mixed types: integers, floats, strings
  • Client loads via DBCFile::loadJSON() when found in custom_zones/ or output/

PNG Textures — Texture Replacement

  • Replaces BLP texture files
  • Standard PNG format, loaded by client's texture override system
  • Editor auto-converts BLP→PNG on export via stb_image_write

Open Format Scoring (0-6)

  1. WOT terrain metadata present
  2. WHM heightmap with valid magic
  3. zone.json map definition
  4. PNG textures present
  5. WOM models with valid magic
  6. WOB buildings with valid magic

All formats are novel, portable, and open for redistribution.

No Blizzard intellectual property is used in any format definition.