Warcraft III
This is the main game target for OpenWarcraft3. It is the most complete path in the tree, and the place where the engine is being shaped into a playable RTS rather than only a viewer.
The code here owns Warcraft III-specific game logic, JASS, SLK/profile parsing, MDX and W3M rendering hooks, the client-side FDF UI, and the Warcraft III test suites.
Status
Playable prototype. Not parity yet.
The current build can start from the menu, launch campaign or map content, render Warcraft III terrain/models/UI, run a server-authoritative simulation, and execute a growing slice of unit, command, combat, JASS, UI, and networking behavior. It is still an indie engine project in motion: solid foundations, visible gameplay, lots of systems present, and plenty of rough edges.
Working
- Warcraft III MPQ-backed data loading through the shared archive layer.
- W3M/W3X map archive loading for maps present in the configured data folder or test archive.
- Warcraft III terrain rendering through the game renderer hooks.
- MDX model loading and rendering, including animation evaluation paths used by units and UI models.
- Client-side FDF UI runtime for menus, dialogs, map selection, options, single player flow, and Warcraft-style frame layout.
- Main menu and Single Player campaign selection flow.
- Quake-style console, cvars, command completion, and map command routing.
- Listen-server loopback play path and UDP client/server plumbing.
- Server-authoritative unit simulation with selection commands, movement, collision, basic pathing, animation states, health, damage, death, and inventory slots.
- Basic RTS command and ability coverage, including move, stop, attack, train, summon, item flow, Thunderbolt-style target spell behavior, timed life, stun status, and selected aura/status hooks.
- JASS VM and native API coverage for many gameplay-facing functions.
- SLK/profile parsing for Warcraft III data tables.
- Deterministic test assets and game-specific tests under
games/warcraft-3/tests/.
Partial
- Combat and abilities are functional but intentionally selective. Many Warcraft III ability codes are registered as stubs or partial local behavior.
- Fog of war has authoritative server-side state and network sync coverage, but the full gameplay/rendering polish is still evolving.
- UI is client-side and FDF-driven, but not every in-game panel or Battle.net-era screen is implemented.
- Asset compatibility is strongest around original Warcraft III data, with ongoing work for later 1.29-era data and edge cases.
- Multiplayer transport and lobby flows exist, but this is not yet a finished multiplayer product.
- Warcraft map/background music has JASS playlist/state handling and optional
FFMPEG=1decoding; menu glue music, map skin overrides, and exact remaining retail timing semantics are still incomplete.
Not There Yet
- Full campaign scripting and trigger parity.
- Complete Warcraft III object-data overrides, the remaining upgrade-effect families, build rules, and race-specific gameplay.
- Full ability, buff, autocast, item, and hero-system parity.
- Complete save/load, replay, AI, and editor-level map behavior.
- Production-grade user experience around errors, missing assets, and unsupported maps.
Build And Run
Build the default target:
Run the Warcraft III client:
Run a map directly:
Useful validation:
Notes
This target expects a legitimate Warcraft III data folder. Original assets, names, and game data belong to Blizzard Entertainment. The repository contains code, fixtures, and generated test assets, not the retail game data.
Documentation
File formats, renderer notes, UI/FDF behavior, and gameplay coverage work used by this target. Engine-wide client, server, networking, and runtime-module docs live under docs/architecture/.
File Formats
- Warcraft III Map Format
- Warcraft III MDX Model Format
- SLK Spreadsheet Format
- UI Frame Definition File
Detailed File Notes
- Warcraft III File Format Specifications
- MPQ Archive Format
- W3M / W3X Map Container
- war3map.w3e Terrain
- war3map.doo Doodads
- war3map.shd / war3map.wpm
- Warcraft III FDF Reference
Implementation Notes
- Terrain Deformation
- Economy And Unit Presentation
- Call to Arms And Militia
- Timed Status Presentation
- Unit Vertex Color
- Undead07 Shield Zones
- Unit Selection And Control
- Team Colors
- Shift Order Queue
- Group Attack And Chase Gaps: remaining combat-movement parity work and acceptance coverage.
- Persistent Hero And Idle-Worker Shortcuts
- Pathfinding And Harvest Reachability
- Naval Movement And Water Pathing:
float/amphrouting, water pathing, collision domains, and bridge semantics. - Way Gates
- Inventory And World Items
- Map Trigger Strings in Authored Names
- Trigger Event Dispatch And Response Context: queued event actions, immediate
TriggerExecute, and nested coroutine context. - Runtime Unit Spawn Lifecycle
- Human07 Mission Troubleshooting: mission-end, AI assault, removal, spawn, collision, and Birth regressions.
- Neutral Shops And Mercenary Camps
- Ability And Item Effects
- Cyclone: organic-enemy action lock, ROC BuffID fallback, TFT
organictargs. - Entangling Roots: BEer root/disarm, channel interruption, authored Eer1 DPS, dispel/save lifecycle.
- Volcano: channeled molten-rock waves; Dur is stun length, DataB×DataC is channel length.
- Pocket Factory: timed factory producer; DataB is Clockwerk unitCode via
S_SpellDataId. - Stasis Trap: Asta ward arm/detect/detonate; DataD/HeroDur stun, BuffID
Bsta. - Sentry Ward: Aeye/AIsw summon; detect radius from Adt1 Rng via
S_UnitIsDetected. - Self Destruct: Clockwerk/Sapper Kaboom;
DataFdeath blast viaS_UnitDeathAbilities. - Rain of Chaos: point-target Inferno landings, DataA abilCode, not channeled.
- Inferno: point-target delayed blast + summon; DataB life, Dur stun, DataC delay.
- Dark Portal: Archimonde point-target demon exits; DataA unitList, DataB/C min/max, not Mass Teleport.
- Healing Spray: channeled point heal waves; DataA/DataF heal/waves, DataD max budget.
- Transmute: kill unit for
goldCost * DataA; DataC max creep level. - Adding Warcraft III Abilities: data, procedure macros, registration, and tests.
- Creep Ability Aliases:
code=mapping, parent-owned registry rows, nots_creep.c. - Creep Combat Effects: Disease Cloud, Pulverize, Web, Monsoon and Incinerate data contracts, lifecycle and save/load tests.
<- Item Orbs:
AIDBorb DataA damage viaCAbilityAttackBonus,S_OrbOnHitBuffID state. - Unit Stat Modifiers: modifier ledgers, physical/spell/direct damage paths, and implementation checklist.
- Poison Attacks:
Aven/Apoi/Apo2on-hit buff state and data-driven periodic DPS. - Implemented Ability Verification Review: reproduced failures, lifecycle fixes, and permanent regression coverage.
- Campaign Map Audit: bounded bulk runtime sweeps with per-map errors and retained logs.
- Save/Load: versioned game serializer, Hero walk/save/load campaign diagnostic.
- JASS location-handle lifecycle: safe removal, alias invalidation and snapshot treatment.
- Score Screen: authoritative player-score accounting,
GetPlayerScore, save contract, and remaining retail-FDF/result-transition work. - Score Debug Build:
WC3_DEBUG_SCORE=1plus runtime cvar, compiled-out logging and regression coverage. - Retail Score Experiments: repeatable retail map extraction, passive score tracing, safe repacking, Wine capture, and UnitBalance comparison.
- DotA Custom-Map Playability: protected-MPQ load, hashtable demand, and map-imported object data for DotA 6.83d.
- Ability Coverage
- Flat C Ability System: Flags and Message Procedures
- Ability Inheritance: Binary Evidence
- Breakable Destructables
- Scripted Doodad Animation
- Warcraft III UI System
- UI Flow
- UI Quick Reference
- Map Renderer
- Hero Ability Progression
- Arthas Hero Abilities
- Ability Identity and Cooldown Ownership
- Regeneration Auras And Fountains
- Cinematics
- Time Of Day
- Timer Dialogs And Mission Countdowns
- Leaderboards And Counted Objective HUDs
- Hero Revival
- Sounds
- Music Playback
- HUD Media Lifetime
- Campaign Loading And Asset Resolution
- Quest And Message Log UI
- Allies Menu
- Building Damage Rendering
- Human Barracks Unit Abilities
-
Building construction — shared build/train tech availability, placement validation, Human construction, and power building.
-
Ability message procedures: registry, payload/result contracts, default delegation, and lifecycle.