mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-06 09:03:52 +00:00
New format: WOC (Wowee Open Collision) — binary collision mesh for custom zone walkability. Magic WOC1 (0x31434F57). - WoweeCollisionBuilder::fromTerrain() generates collision triangles from terrain heightmap with slope classification (50 deg threshold) - Per-triangle flags: walkable (0x01), water (0x02), steep (0x04) - Respects terrain holes (skips triangles in hole regions) - Binary save/load with bounds, tile coords, triangle data - Auto-exported on zone save alongside WOT/WHM/WOM/WOB - Added to content pack validation (score now 0-7) - FORMAT_SPEC.md v1.1 updated with WOC binary layout - 19 new test assertions: flat terrain generation (32k tris all walkable), save/load round-trip, hole skipping - 328 total assertions across 84 test cases
3.9 KiB
3.9 KiB
Wowee Open Format Specification v1.1
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, doodad placements (M2 objects), WMO placements (buildings)
- Key:
"format": "wot-1.0" - Placement fields:
doodadNames[],doodads[](nameId, uniqueId, pos, rot, scale, flags) - WMO fields:
wmoNames[],wmos[](nameId, uniqueId, pos, rot, flags, doodadSet)
WHM — Wowee HeightMap (binary)
- Extension:
.whm - Magic:
WHM1(0x314D4857) - 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) - Layout: magic(4) + vertCount(4) + indexCount(4) + texCount(4) + bounds(28) + name + vertices + indices + texPaths
- Vertex: position(vec3) + normal(vec3) + texCoord(vec2) = 32 bytes
- Note: geometry-only (no skeletal animation — WOM2 planned for bone data)
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 + vertexCount(4) + indexCount(4) + texCount(4) + outdoor(1) + bounds(24)
- vertices(pos+normal+uv+color) + indices + texPaths + materialCount(4) + materials
- Material: texturePath + flags(4) + shader(4) + blendMode(4)
- Doodad: modelPath + position(12) + rotation(12) + scale(4)
- Portal: groupA(4) + groupB(4) + vertexCount(4) + vertices
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
- Info JSON includes categorized file list (terrain/model/building/texture/data)
zone.json — Map Definition
- Replaces WDT
- Fields:
mapName,displayName,mapId,biome,baseHeight hasCreatures,description,tilesarray,filesmapdoodadNames[],doodads[],wmoNames[],wmos[]for placed objectseditorVersionfor 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
WOC — Wowee Open Collision (binary)
- Extension:
.woc - Magic:
WOC1(0x31434F57) - Layout: magic(4) + triCount(4) + tileX(4) + tileY(4) + boundsMin(12) + boundsMax(12) + triangles
- Triangle: v0(12) + v1(12) + v2(12) + flags(1) = 37 bytes
- Flags: 0x01=walkable, 0x02=water, 0x04=steep, 0x08=indoor
- Generated from terrain heightmap with slope classification (50 deg threshold)
- Respects terrain holes (skips triangles in hole regions)
Terrain Stamps (.json)
- Portable terrain feature snapshots (mountains, craters, etc.)
- Format:
{"format": "wowee-stamp-1.0", "vertices": [[dx, dy, height], ...]} - Can be saved/loaded across zones and sessions
Open Format Scoring (0-7)
- WOT terrain metadata present
- WHM heightmap with valid magic
- zone.json map definition
- PNG textures present
- WOM models with valid magic
- WOB buildings with valid magic
- WOC collision mesh with valid magic