Peter Wang and Nico Christie · September 25, 2026
StarCraft has received a lot of research love over the past decade (s2client-proto, PySC2 and AlphaStar, to name a few), but Warcraft III, the game that filled my childhood with magic and wonder, has been rendered frozen in Northrend. So Nico and I present wc3env, an open-source gym environment for Warcraft III: The Frozen Throne.
With the release of Jev, I also spent the last three days asking how well a frontier language model (Opus 5.5), when paired with a fast, smart-ish zero-shot classifier (Jev), can play a real-time strategy game. While Jev is surprisingly good at isolated fights, Opus+Jev fail in free-form 1v1 matches. I'll go through why below.
Blizzard never open-sourced the Warcraft III engine, and writing an open engine that behaves exactly like the original would be a far bigger project. So wc3env works on the real game. It injects a small DLL into Warcraft III (the 1.29.2 Legacy build) before the game runs its first instruction. Using about 90 known addresses inside that exact executable, the DLL detours the game's own functions through its code, which lets it freeze and advance the game clock, read every unit's state, and issue orders exactly as a player's clicks would. Python talks to it over a local pipe. Of course, an official API from Blizzard would be preferable, but this is more than performant enough to run experiments and train on (see the comparison with PySC2 below).
Like other gym environments, you step it with an action (which can be empty) and get back an observation:
from wc3env import GameConfig, WC3Env with WC3Env(GameConfig(map="(2)EchoIsles.w3x", step_ms=1000)) as env: obs = env.reset() # find a Peasant (type id hpea) and move it 400 units west peasant = next(u for u in obs["units"] if u["type_id"] == "hpea") move = {"unit_id": peasant["unit_id"], "command": "move", "arguments": {"x": peasant["x"] - 400, "y": peasant["y"]}} obs, done, info = env.step([move]) # advance one second of game time
An observation is exactly what a human player can see, fog of war included: every visible unit with its buffs, full detail on your own (orders, cooldowns, items), resources, and the events since the last step. Actions are also what a human player does: move, attack, build, train, research, learn a hero skill, cast, use, drop or buy an item, and revive a hero. Together they cover almost all of Warcraft III. There's no built-in reward yet, so you have to define your own. Terrain and pathing are not observed, because building placement and unit pathing are both left to the game engine.
How it compares with StarCraft II's API and PySC2:
| wc3env | PySC2 / s2client-proto | |
|---|---|---|
| API | WC3Env (reset, step); GameSession for several agents on one clock; StepPool for many games | SC2Env (reset, step) |
| Agents per game | 2 to 8 tested, plus built-in AI at easy, normal or insane | 1 or 2, plus built-in AI; two agents means two game processes |
| Concurrency | One process per game, any number of agents inside it. 4 games: 41× real time in total; 8 games: 73× | One process per agent. 2 games: 82× in total; 4 games: 128×; 8 games did not fit in 16 GB of memory |
| Speed | 15× real time for one game, frozen between steps; real-time mode too | 43× real time for one game; real-time mode too |
| Launch | 3–7 s to a playable game | 15–24 s |
| Observations | Raw unit state behind fog of war; no terrain or pixels | Raw units, feature layers or rendered RGB pixels, including terrain |
| Rendering | On or off; windows stay in the background | Headless on Linux, with hardware or software rendering |
| Resets | 1.7 s, inside the running process; a fresh process every 32 episodes | 3.7 s |
| Seeds and replays | Seeded games end in the same state every run; native .w3g replays | Seeded games end in the same state every run; replays need the exact game version |
| Memory | About 225 MB per game | 1.4–1.7 GB per game |
| Linux | Wine in Docker | Official headless builds |
| Game versions | One build: Legacy TFT 1.29.2 | Many; Linux packages ship past versions |
| Official | No: an injected DLL, offline only | Yes: Blizzard and DeepMind |
Limit: you need your own licensed copy of the game. The repository contains no game files, and it is offline only. Both columns were measured on the same laptop (Intel Core Ultra 5 325, 8 cores, 16 GB) with the same test: an idle agent against the hardest non-cheating built-in AI (Warcraft III insane on Echo Isles, StarCraft II very hard on Simple96), rendering off, one-second steps, five game minutes, raw observations only. StarCraft II ran through PySC2 4.0 on game version 5.0.16. More in the architecture notes.
Jev doesn't take images, so we turn game state into text that is compact, clear and agent-friendly. About once a second, each unit type in the fight gets one request, with a question for each of its units (every hero is its own type). A request has four parts (see below for the Far Seer):
You command assigned army and scout groups in an ongoing Warcraft III game; another controller runs the economy, workers, transformations and strategy. Follow the group's objective (fight, retreat, defend, scout, recover); moving or rejoining is no reason to start a new fight. Workers in your groups fight or scout like troops; never change their economic jobs or toggle Militia. Heroes keep their levels across fights, troops cost resources to replace, and summons expire: weigh losses for the whole army, not each unit alone. Danger depends on who can reach and hit whom, not on health alone. Hero XP goes to our heroes within 1200 of a kill (to all our heroes if none is near); the last hit does not matter, creeps give none past hero level 5, and our deaths give enemy heroes XP. Town halls do not heal. Heroes pick up ground items automatically once no enemy is near. An item does nothing until used; let spells and item channels finish. IN A FIGHT: deal the most damage and lose the least. - Attack or cast nearly all the time; walking without attacking is lost damage. - Focus fire: the enemy in reach that dies soonest, then casters and ranged units, then weak heroes, tanks last; prefer the target most of ours already hit (its option says how many) and stay on it until it dies: switching throws away the attacks already spent, so switch only for a much better kill. Do not chase enemies leaving reach. - Ranged units (attack range 300 or more) and ranged heroes stay behind our melee and keep shooting; focused and hurt, they step back a little and keep shooting. - Melee units hold the front; one about to die while hit steps out until the enemy retargets, then returns. - Melee heroes fight at the front, caster heroes behind it. A hero steps back only when its step-back options say it would die within about 5 seconds, and returns once safe. - Against creeps, never lose a unit: a dying unit steps out of their reach until they turn away (code already pulls units below 30% health out; do not send them straight back). - Priority targets in your options: enemy wards in reach (a Healing Ward dies to one hit, a Stasis Trap stuns ours); enemies hitting our heroes, casters or siege, peeled off by our fighters near them; the enemy back line, siege first (it hits hard and dies fast), then casters and caster heroes, before the front line. Keep our caster heroes out of focus. - Roles (tank, melee, ranged, caster, siege, air, caster hero, melee hero, summon, ward, worker) say how each type fights and how much it matters. - Never give up a fight you are winning.
Choose this unit's next action under the objective. Buying an item adds it to inventory; using it activates its effect. Timed effects run from use for their stated duration; carrying an item or naturally regenerating does not activate it. Cast Feral Spirit as soon as the fight starts and recast it whenever the wolves die or expire, sending the wolves onto enemy ranged units, casters and heroes. Cast Chain Lightning when 3 or more enemies are close together, preferably ranged units and casters, or on a wounded enemy hero, and keep 120 mana ready to finish off a fleeing hero. Stay behind your melee units, since the Far Seer is fragile. Use Earthquake on enemy towers and buildings, not on moving armies. Spells are what heroes and casters add: cast whenever a spell is ready and a good target is in range. Aim spells where they do the most: several enemies at once, a key target to finish or disable, or a dying ally. Check a target's buffs first: never repeat an effect it already has; dispel strong enemy buffs (Bloodlust, Inner Fire, Anti-magic Shell) and enemy debuffs on ours (Slow, Curse, Faerie Fire). Summon only when the fight is about to start, so summons take hits instead of expiring on the way. While creeping, cast what the camp needs but keep mana for a key spell in case enemy units arrive.
{
"time_seconds": 13.275,
"objective": "Win this fight: kill the enemies here while losing as few units as possible.",
"situation": {
"your_strength": 1680,
"enemy_strength": 1828
},
"context": "Decide only for you_control; the game keeps running meanwhile. Stats are base values without live upgrades. A unit's buffs list each spell effect on it and how long we have seen it (auras left out); buffs says what each does. Timelines run oldest first. Recent attackers are observed attack attempts, recent health observed loss and recovery. Enemy orders, skills and cooldowns may be unknown.",
"buffs": {
"Feral Spirit": "Summoned units take damage from dispels.",
"Bloodlust": "This unit has Bloodlust; its attack rate and movement speed are increased.",
"Berserk": "This unit is Berserk; it will deal more damage, but also take more damage from attacks.",
"Ensnare": "This unit is ensnared; it cannot move or fly.",
"Healing Ward": "This ward provides life regeneration for nearby friendly units.",
"Healing Ward Aura": "Increases life regeneration.",
"Spirit Link": "This unit is Spirit Linked; it will distribute some of the damage it takes across other Spirit Linked units.",
"Stasis Trap": "This ward will stun enemy land units when triggered."
},
"you_control": {
"farseer1": {
"hp": "608/675, lost 69 and gained 2 in the last 5s, last hit 0.03s ago",
"x": 202,
"y": 2929,
"recent_attackers": {
"demolisher2": {
"seconds_ago": 0.97
}
},
"buffs": "Spirit Link 0s",
"current_order": "chainlightning shadowwolf1",
"hero_level": 5,
"mana": "284/465",
"skills": {
"Chain Lightning": {
"rank": 2,
"mana_cost": 120,
"cooldown_seconds": 9.0,
"ready_in_seconds": 0.0,
"status": "Ready"
},
"Feral Spirit": {
"rank": 3,
"mana_cost": 75,
"cooldown_seconds": 30.0,
"ready_in_seconds": 21.842,
"status": "Cooling down"
}
},
"timeline": [
"9.5s: attacked grunt5",
"11.0s: attacked grunt5",
"12.3s: attacked by demolisher2",
"12.525s: attacked grunt5",
"13.25s: order became chainlightning",
"13.275s: told: Attack grunt5"
]
}
},
"your_type": {
"Far Seer": {
"role": "caster hero",
"description": "Mystical Hero, effective at ranged attacks and scouting.",
"base_stats": {
"hp": 475,
"damage_per_second": 10.5,
"attack_type": "hero",
"attack_range": 600.0,
"armor": 0.0,
"armor_class": "hero",
"move_speed": 320.0
},
"skill_descriptions": {
"Chain Lightning (rank 2)": {
"effect": "Calls forth a bolt of lightning that bounces up to 6 times, dealing 125 damage on the primary target. Each jump deals less damage.",
"range": 700.0,
"area": 500.0
},
"Feral Spirit (rank 3)": {
"effect": "Summons 2 Spirit Wolf companions that have Critical Strike and are invisible unless they are attacking. Each wolf has 500 hit points and deals 21 - 22 damage. Lasts 60 seconds. Attacks land units.",
"range": 800.0,
"area": 200.0,
"duration_seconds": 60.0,
"hero_duration_seconds": 60.0
}
}
}
},
"your_side": {
"Stasis Trap": {
"role": "ward",
"description": "",
"base_stats": {
"hp": 100,
"damage_per_second": 0,
"attack_type": "normal",
"attack_range": 0,
"armor": 0.0,
"armor_class": "medium",
"move_speed": 0
},
"members": {
"stasistrap6": "hp 100/100, at (52, 3008), summon summoner trollwitchdoctor2, age seconds 1.9, estimated seconds remaining 148.1, buffs Stasis Trap 2s, idle",
"stasistrap5": "hp 100/100, at (-80, 2896), summon summoner trollwitchdoctor2, age seconds 3.1, estimated seconds remaining 146.9, buffs Stasis Trap 3s, idle",
"shadowwolf2": "hp 100/100, at (-336, 2864), summon summoner trollwitchdoctor1, age seconds 3.2, estimated seconds remaining 146.8, buffs Stasis Trap 3s, idle",
"stasistrap4": "hp 100/100, at (-176, 2768), summon summoner trollwitchdoctor2, age seconds 4.4, estimated seconds remaining 145.6, buffs Stasis Trap 4s, idle",
"stasistrap2": "hp 100/100, at (-336, 2480), summon summoner trollwitchdoctor2, age seconds 6.4, estimated seconds remaining 143.6, buffs Stasis Trap 6s, idle"
}
},
"Shadow Wolf": {
"role": "summon",
"description": "",
"base_stats": {
"hp": 500,
"damage_per_second": 21.5,
"attack_type": "normal",
"attack_range": 90.0,
"armor": 0.0,
"armor_class": "heavy",
"move_speed": 350.0
},
"members": {
"shadowwolf4": "hp 187/500, lost 308 and gained 1 in the last 5s, last hit 0.78s ago, at (-621, 2569), hit by grunt8 1.1s ago, trollwitchdoctor3 1.47s ago, summon summoner farseer1, age seconds 8.2, estimated seconds remaining 51.9, buffs Feral Spirit 8s, attacking trollwitchdoctor3"
}
},
"Demolisher": {
"role": "siege",
"description": "Long-range siege weaponry. Effective against buildings but slow and vulnerable.",
"base_stats": {
"hp": 425,
"damage_per_second": 17.9,
"attack_type": "siege",
"attack_range": 1150.0,
"armor": 2.0,
"armor_class": "heavy",
"move_speed": 220.0
},
"members": {
"demolisher1": "hp 425/425, at (605, 2724), attacking farseer2"
}
},
"Troll Witch Doctor": {
"role": "caster",
"description": "Supporting spellcaster. Can initially cast Sentry Ward, which summons an invisible detector.",
"base_stats": {
"hp": 315,
"damage_per_second": 6.9,
"attack_type": "magic",
"attack_range": 600.0,
"armor": 0.0,
"armor_class": "unarmored",
"move_speed": 270.0
},
"members": {
"trollwitchdoctor2": "hp 387/395, lost 8 and gained 0 in the last 5s, last hit 0.03s ago, at (203, 2713), buffs Spirit Link 0s, Bloodlust 8s, attacking grunt5, mana 8/400",
"trollwitchdoctor1": "hp 314/395, lost 82 and gained 1 in the last 5s, last hit 1.78s ago, at (188, 2864), healingward at (188, 2864), mana 304/400"
}
},
"Shaman": {
"role": "caster",
"description": "Primary spellcaster. Can initially cast Purge, which dispels magical buffs and can immobilize enemies.",
"base_stats": {
"hp": 335,
"damage_per_second": 4.0,
"attack_type": "magic",
"attack_range": 600.0,
"armor": 0.0,
"armor_class": "unarmored",
"move_speed": 270.0
},
"members": {
"shaman2": "hp 314/415, lost 102 and gained 1 in the last 5s, last hit 2.28s ago, at (45, 2932), purge shadowwolf4, mana 140/400",
"shaman1": "hp 303/415, lost 113 and gained 1 in the last 5s, last hit 2.53s ago, at (109, 2963), purge shadowwolf1, mana 215/400"
}
},
"Spirit Walker": {
"role": "caster",
"description": "Mystical Tauren caster. Has Ethereal Form, which allows him to avoid physical damage.",
"base_stats": {
"hp": 500,
"damage_per_second": 11.1,
"attack_type": "magic",
"attack_range": 400.0,
"armor": 0.0,
"armor_class": "unarmored",
"move_speed": 270.0
},
"members": {
"spiritwalker1": "hp 538/620, lost 82 and gained 0 in the last 5s, last hit 0.03s ago, at (270, 2803), buffs Spirit Link 0s, attacking grunt5, mana 366/600"
}
},
"Troll Berserker": {
"role": "ranged",
"description": "Versatile spear-thrower, effective against air units. Has the Berserk ability, which allows it to deal more damage, but take more damage when attacked.",
"base_stats": {
"hp": 450,
"damage_per_second": 10.8,
"attack_type": "piercing",
"attack_range": 450.0,
"armor": 0.0,
"armor_class": "medium",
"move_speed": 270.0
},
"members": {
"trollberserker3": "hp 365/450, lost 86 and gained 1 in the last 5s, last hit 1.08s ago, at (-488, 3251), hit by taurenchieftain2 1.58s ago, grunt5 1.28s ago, buffs Berserk 9s, attacking grunt8"
}
},
"Raider": {
"role": "melee",
"description": "Highly mobile wolf rider. Effective against buildings.",
"base_stats": {
"hp": 610,
"damage_per_second": 13.5,
"attack_type": "siege",
"attack_range": 100.0,
"armor": 1.0,
"armor_class": "medium",
"move_speed": 350.0
},
"members": {
"raider2": "hp 522/610, lost 45 and gained 2 in the last 5s, last hit 1.8s ago, at (-913, 3009), hit by shaman4 2.35s ago, shaman3 2.3s ago, attacking demolisher2",
"raider1": "hp 534/610, lost 12 and gained 1 in the last 5s, last hit 3.3s ago, at (-974, 2876), hit by raider4 3.78s ago, attacking demolisher2"
}
},
"Tauren": {
"role": "tank",
"description": "Mighty warrior.",
"base_stats": {
"hp": 1300,
"damage_per_second": 17.4,
"attack_type": "normal",
"attack_range": 100.0,
"armor": 3.0,
"armor_class": "heavy",
"move_speed": 270.0
},
"members": {
"tauren1": "hp 1090/1300, lost 142 and gained 2 in the last 5s, last hit 0.03s ago, at (-233, 2863), hit by shadowwolf1 0.3s ago, grunt6 0.55s ago, buffs Ensnare 5s, Bloodlust 8s, Spirit Link 9s, attacking grunt8"
}
},
"Grunt": {
"role": "melee",
"description": "Brutish Orc warrior.",
"base_stats": {
"hp": 700,
"damage_per_second": 12.2,
"attack_type": "normal",
"attack_range": 100.0,
"armor": 1.0,
"armor_class": "heavy",
"move_speed": 270.0
},
"members": {
"grunt1": "hp 707/800, lost 34 and gained 1 in the last 5s, last hit 3.38s ago, at (-1008, 3062), hit by trollwitchdoctor4 1.47s ago, buffs Bloodlust 6s, attacking grunt8",
"grunt2": "hp 580/800, lost 171 and gained 0 in the last 5s, last hit 0.03s ago, at (184, 2580), hit by trollberserker6 2.38s ago, tauren2 1.35s ago, buffs Bloodlust 1s, Spirit Link 9s, attacking trollberserker6",
"grunt3": "hp 702/800, lost 31 and gained 2 in the last 5s, last hit 2.85s ago, at (-875, 3272), hit by spiritwalker2 0.58s ago, buffs Bloodlust 6s, attacking grunt8",
"grunt4": "hp 690/800, lost 81 and gained 0 in the last 5s, last hit 1.58s ago, at (-835, 2580), moving to (-602, 2657)"
}
},
"Tauren Chieftain": {
"role": "melee hero",
"description": "Warrior Hero, exceptional at absorbing damage and melee combat.",
"base_stats": {
"hp": 725,
"damage_per_second": 15.6,
"attack_type": "hero",
"attack_range": 128.0,
"armor": 1.0,
"armor_class": "hero",
"move_speed": 290.0
},
"members": {
"taurenchieftain1": "hp 830/875, lost 46 and gained 1 in the last 5s, last hit 0.03s ago, at (-198, 3144), hit by grunt7 1.47s ago, taurenchieftain2 0.3s ago, buffs Spirit Link 0s, Bloodlust 4s, stomp unit2, hero level 3, mana 165/255"
}
}
},
"enemies": {
"Stasis Trap": {
"role": "ward",
"description": "",
"base_stats": {
"hp": 100,
"damage_per_second": 0,
"attack_type": "normal",
"attack_range": 0,
"armor": 0.0,
"armor_class": "medium",
"move_speed": 0
},
"members": {
"stasistrap7": "hp 100/100, at (-112, 2992), summon summoner trollwitchdoctor4, age seconds 0.3, estimated seconds remaining Unknown, buffs Stasis Trap 0s",
"stasistrap3": "hp 100/100, at (-309, 2843), summon summoner trollwitchdoctor3, age seconds 6.6, estimated seconds remaining Unknown, buffs Stasis Trap 7s",
"stasistrap1": "hp 100/100, at (-272, 2576), summon summoner trollwitchdoctor3, age seconds 8.5, estimated seconds remaining Unknown, buffs Stasis Trap 8s"
}
},
"Healing Ward": {
"role": "ward",
"description": "",
"base_stats": {
"hp": 5,
"damage_per_second": 0,
"attack_type": "normal",
"attack_range": 0,
"armor": 0.0,
"armor_class": "medium",
"move_speed": 0
},
"members": {
"healingward2": "hp 5/5, at (-528, 2608), summon summoner trollwitchdoctor3, age seconds 5.7, estimated seconds remaining Unknown, buffs Healing Ward 6s",
"healingward1": "hp 5/5, at (-592, 2992), summon summoner trollwitchdoctor4, age seconds 5.7, estimated seconds remaining Unknown, buffs Healing Ward 6s"
}
},
"Shadow Wolf": {
"role": "summon",
"description": "",
"base_stats": {
"hp": 500,
"damage_per_second": 21.5,
"attack_type": "normal",
"attack_range": 90.0,
"armor": 0.0,
"armor_class": "heavy",
"move_speed": 350.0
},
"members": {
"shadowwolf1": "hp 460/500, lost 40 and gained 2 in the last 2.53s, last hit 0.03s ago, at (-112, 2821), hit by trollwitchdoctor1 2.4s ago, summon summoner farseer2, age seconds 8.9, estimated seconds remaining Unknown, buffs Spirit Link 3s, Healing Ward Aura 3s, Feral Spirit 3s"
}
},
"Demolisher": {
"role": "siege",
"description": "Long-range siege weaponry. Effective against buildings but slow and vulnerable.",
"base_stats": {
"hp": 425,
"damage_per_second": 17.9,
"attack_type": "siege",
"attack_range": 1150.0,
"armor": 2.0,
"armor_class": "heavy",
"move_speed": 220.0
},
"members": {
"demolisher2": "hp 352/425, lost 73 and gained 0 in the last 5s, last hit 1.12s ago, at (-880, 3181), hit by raider2 1.58s ago"
}
},
"Troll Witch Doctor": {
"role": "caster",
"description": "Supporting spellcaster. Can initially cast Sentry Ward, which summons an invisible detector.",
"base_stats": {
"hp": 315,
"damage_per_second": 6.9,
"attack_type": "magic",
"attack_range": 600.0,
"armor": 0.0,
"armor_class": "unarmored",
"move_speed": 270.0
},
"members": {
"trollwitchdoctor3": "hp 238/395, lost 172 and gained 15 in the last 5s, last hit 0.22s ago, at (-559, 2706), hit by shadowwolf3 0.5s ago, shadowwolf4 0.85s ago, buffs Bloodlust 1s, Healing Ward Aura 2s, mana 11/400",
"trollwitchdoctor4": "hp 364/395, lost 65 and gained 34 in the last 5s, last hit 1.88s ago, at (-569, 3054), buffs Healing Ward Aura 4s, mana 107/400"
}
},
"Shaman": {
"role": "caster",
"description": "Primary spellcaster. Can initially cast Purge, which dispels magical buffs and can immobilize enemies.",
"base_stats": {
"hp": 335,
"damage_per_second": 4.0,
"attack_type": "magic",
"attack_range": 600.0,
"armor": 0.0,
"armor_class": "unarmored",
"move_speed": 270.0
},
"members": {
"shaman3": "hp 415/415, at (-744, 2966), mana 250/400",
"shaman4": "hp 405/415, lost 13 and gained 3 in the last 5s, last hit 0.03s ago, at (-778, 3120), buffs Healing Ward Aura 2s, Spirit Link 6s, mana 211/400"
}
},
"Spirit Walker": {
"role": "caster",
"description": "Mystical Tauren caster. Has Ethereal Form, which allows him to avoid physical damage.",
"base_stats": {
"hp": 500,
"damage_per_second": 11.1,
"attack_type": "magic",
"attack_range": 400.0,
"armor": 0.0,
"armor_class": "unarmored",
"move_speed": 270.0
},
"members": {
"spiritwalker2": "hp 605/620, lost 61 and gained 46 in the last 5s, last hit 2.85s ago, at (-648, 3125), buffs Healing Ward Aura 4s, mana 363/600"
}
},
"Troll Berserker": {
"role": "ranged",
"description": "Versatile spear-thrower, effective against air units. Has the Berserk ability, which allows it to deal more damage, but take more damage when attacked.",
"base_stats": {
"hp": 450,
"damage_per_second": 10.8,
"attack_type": "piercing",
"attack_range": 450.0,
"armor": 0.0,
"armor_class": "medium",
"move_speed": 270.0
},
"members": {
"trollberserker6": "hp 435/450, lost 19 and gained 4 in the last 5s, last hit 0.03s ago, at (-341, 2431), buffs Healing Ward Aura 2s, Spirit Link 4s, Berserk 7s",
"trollberserker5": "hp 398/450, lost 89 and gained 37 in the last 5s, last hit 1.88s ago, at (-517, 2833), buffs Healing Ward Aura 4s, Berserk 7s",
"trollberserker4": "hp 352/450, lost 135 and gained 37 in the last 5s, last hit 0.03s ago, at (-451, 3168), buffs Healing Ward Aura 4s, Berserk 7s"
}
},
"Raider": {
"role": "melee",
"description": "Highly mobile wolf rider. Effective against buildings.",
"base_stats": {
"hp": 610,
"damage_per_second": 13.5,
"attack_type": "siege",
"attack_range": 100.0,
"armor": 1.0,
"armor_class": "medium",
"move_speed": 350.0
},
"members": {
"raider4": "hp 406/610, lost 77 and gained 60 in the last 5s, last hit 0.03s ago, at (-245, 2636), buffs Bloodlust 1s, Spirit Link 4s, Healing Ward Aura 5s, Ensnare 9s",
"raider3": "hp 425/610, lost 110 and gained 61 in the last 5s, last hit 4.05s ago, at (-264, 2735), buffs Healing Ward Aura 5s, Ensnare 9s"
}
},
"Tauren": {
"role": "tank",
"description": "Mighty warrior.",
"base_stats": {
"hp": 1300,
"damage_per_second": 17.4,
"attack_type": "normal",
"attack_range": 100.0,
"armor": 3.0,
"armor_class": "heavy",
"move_speed": 270.0
},
"members": {
"tauren2": "hp 1290/1300, lost 26 and gained 16 in the last 5s, last hit 0.03s ago, at (-85, 2571), hit by grunt2 1.15s ago, buffs Healing Ward Aura 2s, Spirit Link 4s, Bloodlust 6s"
}
},
"Grunt": {
"role": "melee",
"description": "Brutish Orc warrior.",
"base_stats": {
"hp": 700,
"damage_per_second": 12.2,
"attack_type": "normal",
"attack_range": 100.0,
"armor": 1.0,
"armor_class": "heavy",
"move_speed": 270.0
},
"members": {
"grunt8": "hp 566/800, lost 26 and gained 79 in the last 5s, last hit 3.85s ago, at (-746, 2670), buffs Healing Ward Aura 5s",
"grunt7": "hp 740/800, lost 60 and gained 0 in the last 5s, last hit 0.03s ago, at (1, 3189)",
"grunt6": "hp 617/800, lost 183 and gained 78 in the last 5s, last hit 0.03s ago, at (-202, 2968), hit by tauren1 0.4s ago, buffs Bloodlust 3s, Healing Ward Aura 5s",
"grunt5": "hp 416/800, lost 353 and gained 70 in the last 5s, last hit 0.03s ago, at (-231, 3056), hit by farseer1 0.75s ago, spiritwalker1 2.12s ago, trollwitchdoctor2 0.5s ago, trollwitchdoctor1 1.8s ago, buffs Bloodlust 3s, Healing Ward Aura 5s"
}
},
"Tauren Chieftain": {
"role": "melee hero",
"description": "Warrior Hero, exceptional at absorbing damage and melee combat.",
"base_stats": {
"hp": 725,
"damage_per_second": 15.6,
"attack_type": "hero",
"attack_range": 128.0,
"armor": 1.0,
"armor_class": "hero",
"move_speed": 290.0
},
"members": {
"taurenchieftain2": "hp 847/875, lost 30 and gained 2 in the last 5s, last hit 0.03s ago, at (-172, 3241), buffs Healing Ward Aura 2s, Bloodlust 5s, Spirit Link 8s, hero level 3, mana 255/255"
}
},
"Far Seer": {
"role": "caster hero",
"description": "Mystical Hero, effective at ranged attacks and scouting.",
"base_stats": {
"hp": 475,
"damage_per_second": 10.5,
"attack_type": "hero",
"attack_range": 600.0,
"armor": 0.0,
"armor_class": "hero",
"move_speed": 320.0
},
"members": {
"farseer2": "hp 621/675, lost 114 and gained 69 in the last 5s, last hit 1.85s ago, at (-542, 2967), hit by trollberserker1 2.5s ago, demolisher1 0.97s ago, buffs Healing Ward Aura 5s, hero level 5, mana 283/465"
}
}
},
"army_groups": {
"fight": {
"objective": "Win this fight: kill the enemies here while losing as few units as possible.",
"center": {
"x": -255.2018235294118,
"y": 2890.2597647058824
},
"destination": null,
"fight_on_the_way": false,
"members": [
"tauren1",
"grunt1",
"shaman1",
"grunt2",
"grunt3",
"grunt4",
"shaman2",
"taurenchieftain1",
"farseer1",
"raider1",
"raider2",
"spiritwalker1",
"trollberserker3",
"trollwitchdoctor1",
"trollwitchdoctor2",
"demolisher1",
"shadowwolf4"
]
}
},
"resources": {
"gold": 500,
"lumber": 150,
"food_used": 55,
"food_cap": 10
},
"shop_availability": "Listed items meet tech and initial stock timing requirements; remaining stock is unobserved.",
"shops": []
}The highest-probability option is chosen and sent to the game as an order. Most of the context engineering went into how the state of battle is featurized. For example, each unit's health comes with how much it lost in the last five seconds and which enemies hit it, and each attack option states the target's role, its distance, and how many of our units already attack it. Jev is not perfect and has a limited understanding of Warcraft, so we also introduce some fixed rules that are handled in code instead of by Jev, like computing a priority list of deserving units for healing, or automatically picking up close-by items.
To test how well Jev micros, I pitted it against the game's own computer control, with identical armies for each race. As you can see below, Jev won all the duels, and usually it was not close. These were typical rounds, not cherry-picked. Sampled highlights are bookmarked below, and the panel in each video shows every unit's current action for closer inspection. While not close to a pro gamer's level, I was impressed.
For full games, Opus 5.5 serves as the macro brain that controls the economy, the build order, neutral creeping, scouting and, of course, when to fight and when to leave. It runs at the latency of Opus, which is roughly one turn every 7 seconds. When combat is needed, Opus puts units into groups and hands each group off to Jev to control, with a clear objective.
Each Opus turn has three parts (see below for a Macro call):
Play Warcraft III as orc.
Control the economy and army; destroy every enemy building to win.
A new macro request starts as soon as the previous reply is applied, at least 5 game seconds between starts.
Units keep their orders while you think; only issue changes.
Movement and worker orders replace current work and pending orders, even within one reply.
New unqueued orders can interrupt spells, item channels and transformations; decide when to interrupt.
Prefix an order with queue to append instead: build peasant1 Farm, then queue lumber peasant1 on the next line.
Let workers finish construction or repairs unless interruption is urgently necessary; use another worker.
Gathering repeats until interrupted.
Queuing lumber after gold can switch before the gold is deposited; it does not mean maintain gold income first.
Queue gathering after finite work such as construction.
Preserve productive worker assignments; change resource allocation deliberately, preferably using new or idle workers.
Let a worker returning resources deposit before changing jobs unless interruption is urgent.
Workers temporarily unobserved may be inside mines; do not treat them as idle or lost.
Cargo amounts are unobserved.
Training/research use their own production queues.
Budget the whole batch together; individually affordable orders may exceed your total resources.
Reply with a brief plan, then one order per line.
Copy entity names from the observation, without spaces (e.g. peasant1, farm1, archmage1).
Names stay fixed through absence, upgrades and transformations; the current type is shown if it changes.
Unit/structure/skill types to make or learn use their normal names.
train townhall1 Peasant (add x2, x3 for several; no queue prefix)
upgrade townhall1 Keep
research barracks1 Defend
cancel farm1 (cancel construction/upgrade, or the last production item)
build peasant1 Farm (Warcraft picks a free site near your hall)
build peasant1 Farm near goldmine1 (Warcraft picks a free site near that object or near X Y;
it keeps mining paths clear, so a site can land a few hundred away)
build acolyte1 Haunted Gold Mine on goldmine1 (build on that observed mine)
cast treeoflife1 Entangle Gold Mine on goldmine1
queue lumber peasant1 (gather after its existing orders finish)
rally townhall1 gold / lumber / at X Y (future units only)
gold peasant1 peasant2 ...
lumber peasant1 peasant2 ...
repair peasant1 on farm1 (also resumes unfinished construction)
attack footman1 footman2 ... on grunt1
attack footman1 footman2 ... at X Y (attack-move)
move footman1 footman2 ... at X Y
stop footman1 ...
learn archmage1 Summon Water Elemental
revive altarofkings1 archmage1 (bring a dead hero back; you cannot train its type again)
cast archmage1 Blizzard [on grunt1 | at X Y]
cast townhall1 Call to Arms / Back to Work
cast peasant1 Call to Arms / Back to Work (arm one Peasant / disarm one Militia)
cast orcburrow1 Battle Stations / Stand Down
cast ancientofwar1 Uproot / Root
cast cryptfiend1 Burrow (structures cast too)
buy archmage1 from arcanevault1 Potion of Healing
use archmage1 slot N [on footman1 | at X Y] (slot shown in inventory)
take archmage1 potionofhealing1 (pick up a ground item)
give archmage1 slot N to mountainking1 (hand an item to a unit; the hero walks over to it)
sell archmage1 slot N to goblinmerchant1 (sell an item to a shop for half its price; the hero walks over)
drop archmage1 slot N [at X Y] (put an item on the ground)
group NAME footman1 footman2 ... at X Y: objective (walk there without stopping to fight)
group NAME footman1 footman2 ... attack at X Y: objective (attack-move: fight enemies met on the way)
disband NAME
Prefix move, stop, attack, build, repair, gold, lumber, cast, use or take with queue to append.
Reassigning a builder leaves its unfinished structure in place; cancel targets the building itself.
Heroes carry up to six items and must stand next to a shop to buy.
The ITEMS reference lists prices, effects, requirements and stock timings.
SHOPS IN VIEW lists items meeting current tech and initial stock timing requirements; remaining stock is unobserved.
Purchases are confirmed by inventory changes and bought-item events under SINCE YOUR LAST TURN.
Group every hero and fighter with an objective.
Micro controls only explicitly assigned groups: combat, scouting, army movement, loot and hero recovery.
`at X Y` walks the group there, e.g. to retreat or regroup; `attack at X Y` fights its way there, e.g. to creep or defend.
Groups persist until changed or disbanded. Every direct move, stop, attack, take or worker order takes control back
until you explicitly assign the unit to a group again. A cast or item use keeps the unit in its group;
micro resumes it once the spell or item has gone off. Summoned units join their summoner's group.
Use direct orders for economy and production.
You own every worker job, resource assignment, construction, repair and worker transformation.
Workers never scout: heroes, summons and the army scout on their way while creeping and harassing.
Units taken out of groups keep your direct orders until you assign them to a group again.
Give explicit objectives for waiting, scouting, defending or healing.
Add new troops to groups and set production rally points so reinforcements arrive promptly.
Rally each town hall to gold (`rally townhall1 gold`) so trained workers start mining instead of standing idle.
Buildings and production remain your responsibility.
After Call to Arms or Battle Stations, wait for the changed unit form or garrison before giving follow-up orders.
Do not follow a spell or item use with another unqueued order in the same reply; let it start first.
Use only currently carried items. Town Portal needs `on townhall1` (a friendly town hall), not coordinates.
Learn only the ranks listed as available; spending a point cannot bypass a required hero level.
Order only available actions in "WHAT YOU CAN DO NOW"; resolve NOT YET requirements first.
HOW TO PLAY WELL (general)
Use the race opening as a default and adapt it to the economy and threats you see. Check order feedback: submitted is not confirmed started, so resolve missing production before advancing the build order.
TIMINGS
- 0:00-0:30: workers on gold, the Altar started, the first supply building started by about 0:30 so the first hero (5 food) is not blocked.
- About 1:00-1:30: the first hero is out and creeps a manageable camp near home with the first units.
- About 2:00: a shop, and a second supply building before production fills the food.
- About 3:30-5:00: tier 2 (hall upgrade) with a hero at level 2-3, a handful of units and stable income; the second hero the moment it finishes.
- Once the first hero is level 3 (usually 5-7 minutes): take the army to the enemy whenever it is at least as strong, and creep in between.
- Around 50 food with two heroes at level 3 or higher: attack the enemy expansion or base, or expand yourself.
ECONOMY
- Keep 5 workers on gold per mine (more than 5 adds nothing) and 4-8 on lumber. Train workers continuously in the first minutes; an idle worker is wasted income, so put it on gold or lumber.
- Gold is the limit on one mine: 5 gold workers is all a mine takes, so once lumber piles up (over 500) while gold stays short, expand to a second gold mine and spend lumber on upgrades and lumber-heavy units instead of adding lumber workers.
- Expand to a second gold mine when your army can clear its guards; a mine runs dry eventually. Guard an expansion (towers, the army nearby) until it pays off.
- Plan ahead to keep 10+ free food during production. Count queued units, worker travel and construction time, and finish supply before production fills the remaining capacity; never get supply blocked.
- Never float resources: with gold above 400 and production idle, queue units or add a production building. Queue only 1-2 units per building; a long queue locks up gold.
- Upkeep: above 50 food you lose 30% of gold income, above 80 food 60%. Do not sit just over a threshold; either stay at 50 while teching and upgrading or commit to a bigger army and attack.
PRODUCTION AND TECH
- Do not mass tier 1 units: a few (3-4 in the whole game) carry the early creeping, then gold goes to tech, the second hero, an expansion and the tier 2 and 3 units, casters and upgrades your race notes name. Build the army against what you see, and change composition as the enemy does; one unit type all game loses.
- Mix a durable frontline with ranged damage and 2-4 support casters; keep casters and ranged units behind the frontline.
- Each production building trains one unit at a time: build enough buildings to make the army by the attack timing. Two buildings of the unit type you mass is normal; when gold stays above 500 while every production building is busy, add another.
- Research the caster training upgrades and the attack and armor lines for the unit types you actually build; upgrades strengthen every unit you own.
- Keep every combat unit and hero in one army group at all times: do not split the army into separate groups for healing, scouting or reinforcing. Set rally points toward the army; new units join it (code adds idle ones). Give that group one objective.
HEROES
- Build an Altar early and train a hero at once; the first hero costs nothing. Heroes decide fights and gain levels by killing creeps and enemy units.
- Spend every skill point at once and put points deep, not wide: a higher rank of the main skill beats one rank of each, since mana cost barely rises with rank. Most skills rank at hero levels 1, 3 and 5: at level 2 take another skill, then the main skill when its next rank unlocks; the ultimate at level 6.
- XP goes to eligible heroes within 1200 of a kill and is shared between them; a distant hero misses that share when another eligible hero is near. With none near, global experience can reach heroes elsewhere. The last hit does not matter, and heroes stop gaining XP from creeps at level 5, so keep a level 5 hero away from camps a lower hero is creeping.
- Every hero always has a job, in this order: fight or harass the enemy (its creeping hero, its workers, an expansion) when you can win it; creep the next camp it can beat; scout; heal or shop on the way to the next job. A hero marked NO JOB in HEROES gets a new objective this turn.
- Never park a hero or army to regenerate; they regenerate while walking to the next job. With low mana, pick a camp the army can clear without spells, or one next to a shop, Moon Well or fountain.
- A recovering hero gets a healing or shopping objective and rejoins once healthy, not a seat at the town hall. Avoid a group move that interrupts that hero's escape or item use.
- Heroes stay with the army: a hero that walks ahead alone into the enemy base dies. Move heroes and troops as one group.
CREEPING (neutral camps)
- Creep whenever the army has nothing better to do: it levels heroes, drops items, and clears expansions. Start with a manageable camp near home and move to harder ones as heroes level.
- Judge a camp by its creeps' levels and spells against your group's health, mana, summons and reinforcements, not by the strength number alone. Green camps are easy, orange medium, red hard.
- Summons go in first and take the hits: summon at the start of every camp, and let the summons and healthy melee units tank while heroes and ranged units attack from behind.
- Kill creep casters and healers first (shamans, priests, anything with Frost Armor, Heal or Purge), then the damage dealers; creep spells turn camps.
- Pull camps: attack from the edge so creeps come to you, away from their camp, which splits them and cuts their spell casting. A creep that walks back to its camp heals nothing and can be finished later.
- Creeps attack what is in front of them, so a hero at 20-30% health keeps creeping behind its troops and summons; a healing item covers an emergency. Finish a camp you are winning: compare the remaining creeps with your group, not the hero's health.
- Strong creeps (level 7+) go for the weakest unit in reach: pull a hurt unit out of their reach until they turn to another target.
- Spread out against creeps with area spells (Ogre Lords' Shockwave, Golems' slam); do not stand clumped in front of them.
- Group orders name the camp and who tanks; do not tell heroes which spells to cast. Micro saves damage spells such as Chain Lightning for the enemy player and kills creeps with attacks and summons.
- Take every item a camp drops: grouped heroes pick up drops automatically once no enemy is near, with no take order needed. Tomes and runes are used at once.
- Finish healing and mana before another dangerous camp, and retreat early enough to survive the walk home or Town Portal's delay. Send a hero home to heal only when no troops or summons can shield it, or before fighting the enemy army.
FIGHTING THE ENEMY
- Fight when you are at least as strong, with full health and mana, or when the enemy is weak for a moment: while it creeps a camp and is hurt, while its army is away from home, or while its heroes are low.
- Harass between creep camps: hit workers at their mines, creeping heroes and expansions, then leave before the enemy army arrives. A few kills and a delayed tech are worth more than a camp.
- Fight on your terms: near your towers and shop, not into enemy towers; attack-move the whole army together so it fights en route, and never feed units in one at a time.
- In the fight, kill enemy heroes, casters and siege first; micro focuses fire, pulls back hurt units and protects your heroes, so give it one clear objective per group.
- Retreat before the fight is lost: when the enemy is clearly stronger or your heroes are low with no mana, pull the army back toward home, and use Town Portal to save an army losing a fight or to defend the base, not just to walk home.
- Never give up a fight you are winning, and chase a beaten army only while it stays out of its towers.
- Leave combat spells and summons of grouped heroes to micro, which casts them when the fight starts; a Water Elemental, Feral Spirit or other summon cast while walking expires before the fight. Cast directly only outside fights, such as a heal between camps.
- Keep the army together; let micro weigh pressure, tanking and useful attacks, since wounded units can step out and rejoin.
- To win you must destroy buildings: once clearly stronger, attack-move into the enemy base and keep reinforcing from home.
SCOUTING
- Scouting never stops, but workers never scout: they stay on gold and lumber. Heroes, summons and the army see the enemy on their way while creeping and harassing.
- With a single possible enemy base (see MAP) you already know where it is: route the army past it, or its likely expansion, when a creep camp is on the way, to see what it builds.
- Look at a base from its edge, not through its middle: note the town hall tier, the Altar and hero, production buildings (two Barracks means a rush, a Spirit Lodge or Arcane Sanctum means casters), towers and whether it expanded; leave as soon as its army comes.
- Keep vision: park a cheap unit at the enemy's likely expansion and on the path between the bases, and re-check the enemy base and expansions at least every 90 seconds. Scout before teching, expanding and attacking. An ENEMY line saying nobody has seen the enemy gets a scout sent this turn.
ITEMS AND SHOPS
- Items are cheap power for heroes, who decide fights. Build your race's shop early (Arcane Vault, Voodoo Lounge, Tomb of Relics, Ancient of Wonders) and spend spare gold on items between fights, not only on units.
- Every hero carries a Scroll of Town Portal once you can afford one, and the main hero one or two healing items (Potion of Healing, Healing Salve, Scroll of Regeneration). Casters that run dry carry Lesser Clarity Potions or Potions of Mana.
- Use consumables instead of hoarding them: a potion that saves a hero is worth far more than its price, and charged items do nothing in a slot. Keep inventory room for permanent items on the main hero.
- Goblin Merchant: Boots of Speed early for a harassing or creeping hero; Periapt of Vitality (+150 HP) and Circlet of Nobility for the main hero; Dust of Appearance against invisible units (Wind Walk, Shadowmeld, Shades, burrowed units); Scroll of Protection or Scroll of Healing before a big army fight; Potion of Lesser Invulnerability to save a focused hero; Staff of Teleportation to rejoin the army or defend fast; Tome of Retraining only to fix a bad skill build.
- Orbs (Orb of Fire, Orb of Lightning, Orb of Venom, Orb of Corruption) add damage and let a melee hero hit air; buy one for the main attacking hero once the essentials are carried.
- Tavern: hire a third hero there, or a second one that suits the matchup better than your race's heroes (see the race notes). Mercenary Camp: hire neutral units for a quick boost when production lags or to creep faster early. Marketplace: stock changes over time; check SHOPS IN VIEW when a hero passes by.
- Keep permanent items on the hero that benefits most and give support items (auras, healing) to the support hero (give); sell items a hero has outgrown or duplicates for half their price (sell). A hero with six items cannot pick up more, so sell or give one first.
- Heroes must stand next to a shop to buy: route a hero past the shop between creep camps rather than sending it home only to shop.
Mechanics: installed Units/MiscGame.txt (HeroExpRange=1200, GlobalExperience=1).
Sources: https://classic.battle.net/war3/basics/heroes.shtml, https://classic.battle.net/war3/basics/creeping.shtml, https://warcraft-gym.com/a-summary-on-creep-mechanics-and-how-to-abuse-them/, https://warcraft-gym.com/new-returning-players-guide-to-warcraft-iii/
ORC NOTES
- Default opening: four starting Peons mine gold; one builds Altar of Storms. Keep training Peons. The next three Peons: first Burrow, Barracks, gold (five miners). Builders and later Peons go to lumber; aim for five on gold and about 8 on lumber.
- Train a Far Seer (Feral Spirit first, then Chain Lightning) as the first hero when the Altar and supply are ready; do not open Blademaster. Train 2 Grunts when the Barracks completes, then stop: 3-4 Grunts are all the Grunts of the game. Start the second Burrow early and add a Voodoo Lounge for healing.
- Creep with the Far Seer, its wolves and the Grunts; upgrade to Stronghold as soon as the 2 Grunts are out and income is stable. Tech, the second hero and an expansion come before more tier 1 units.
- Train the second hero the moment the Stronghold finishes: Tauren Chieftain (War Stomp first, then Endurance Aura) after the Far Seer, or Shadow Hunter (Healing Wave first, Hex at level 3).
- Tier 2 is Orc's strongest point: almost every unit is available. Default army: Raiders from a Beastiary (research Ensnare first) to harass workers and catch casters and ranged units, Shamans (Bloodlust and Purge autocast) from a Spirit Lodge, and Headhunters from the Barracks for ranged damage and anti-air; no more Grunts.
- Headhunters (Barracks; Troll Regeneration) add ranged damage and anti-air; research Berserker Upgrade to turn them into Troll Berserkers at tier 3. Kodo Beasts (War Drums aura, Devour) add damage to a Grunt army; one or two are enough.
- Production counts: one Barracks, then at tier 2 one Spirit Lodge and one Beastiary; add a second Beastiary or Spirit Lodge when gold stays above 500. Expand to the natural gold mine once the second hero is out.
- Harass from the moment Raiders are out: hit Peons at the enemy mines and its expansion, catch its creeping heroes, and leave before its army arrives. Take big fights at about 50 food with both heroes at level 3 or higher; Bloodlust decides fights.
- Tier 3 (Fortress): Troll Berserkers with Shaman Master Training (Bloodlust); Tauren (Tauren Totem, needs War Mill; Pulverize) as the frontline; Spirit Walkers with Spirit Walker Adept Training to dispel Slow, Entangle, Curse and summons; Wind Riders (Envenomed Spears) against air and casters; Demolishers against towers and clumped ranged units.
- War Mill lines matter less than for other races: Steel Armor against massed tier 1 units, Steel Ranged Weapons for mass Headhunters, Steel Melee Weapons for Raiders or Tauren. Reinforced Defenses protects Burrows against early harass.
- Witch Doctors are rarely worth more than one. Pillage, Burning Oil and Liquid Fire are niche.
- Against Human (Riflemen, Priests, Sorceresses, Knights): Raiders with Ensnare and Headhunters with Shamans, Raiders to catch Riflemen and casters; expand when the first Shaman finishes; Spirit Walkers to dispel Slow and Inner Fire; Tauren or Wind Riders at tier 3.
- Against Undead (Ghouls, Crypt Fiends, Gargoyles, Frost Wyrms, Destroyers): Raiders and one Kodo early, then Headhunters and Troll Berserkers with Steel Ranged Weapons against Crypt Fiends and Statues; Spirit Walkers against Banshee Curse; Wind Riders against Frost Wyrms.
- Against Night Elf (Archers, Huntresses, Dryads, Druids, Mountain Giants): Headhunters and Raiders with Shamans and Steel Armor; Raiders with Shamans against Dryads and Druids; Shadow Hunter's Hex on the Demon Hunter or Keeper; expand late.
- Against Orc: Raiders and Spirit Walkers from Beastiary and Tauren Totem, Shadow Hunter second; Shamans with Purge against enemy Bloodlust.
- Against mass air: Wind Riders, Headhunters and Troll Batriders; Ensnare pulls air units down for melee.
- Voodoo Lounge: Healing Salves (3 charges of 400 HP over time) keep Grunts and heroes creeping, Scroll of Speed to catch or escape, Orb of Lightning for the Blademaster (it dispels and slows), Tiny Great Hall to expand anywhere.
- Scouting: the hero's creeping route past the enemy; Far Seer's Far Sight and Feral Spirit wolves, Witch Doctor Sentry Wards at paths and expansions, Wind Riders later.
Opening source: https://warcraft-gym.com/two-burrow-tech-with-grunts/ (adapted for an earlier supply buffer).
Strategy: https://warcraft-gym.com/standard-1-burrow-barracks-and-shop-before-tech/, https://warcraft-gym.com/an-overview-of-orc-upgrades/, https://warcraft-gym.com/farseer-headhunter-standard-2-burrow-tech/
STRENGTH estimates durability and damage, summed over units.
It misses range, splash, upgrades and much spell value.
Compare the actual units, pressure, positioning and objective before engaging.
ORC STRUCTURES
Great Hall 385g 185w 150s built by Peon | 1500hp fort armor 5 +10 food
Primary structure, used to train Peons and receive gathered resources. Can be upgraded to Stronghold and then Fortress to enable the production of additional types of structures and units.
trains: Peon
upgrades to: Stronghold
research Pillage 75g 25w 45s: Causes Peons', Grunts', and Raiders' attacks to gain resources when hitting enemy buildings.
research Backpack 50g 25w 20s needs Voodoo Lounge: Gives specific Orc ground units the ability to carry items.
Orc Burrow 160g 40w 50s built by Peon | 600hp 25dmg pierce large armor 5 +10 food
Provides food, which increases the maximum number of units that can be trained. Peons can garrison inside to attack enemy units. Can learn the Reinforced Defenses upgrade. Attacks land and air units.
Barracks 180g 50w 60s built by Peon | 1200hp fort armor 5
Primary troop production building. Trains Grunts, Headhunters and Demolishers. Also contains the Berserker Strength, Berserker, Troll Regeneration, and Burning Oil upgrades.
trains: Grunt, Troll Headhunter, Troll Berserker, Demolisher
research Berserker Strength 50g 150w 40s needs Stronghold: Improves the fighting capabilities of Grunts with a <Robs,base1> hit point increase, and <Robs,base2> bonus attack damage.
research Troll Regeneration 100g 100w 35s needs Stronghold, War Mill: Increases the hit point regeneration rate of Headhunters, Witch Doctors and Troll Batriders.
research Berserker Upgrade 75g 175w 40s needs Fortress, War Mill: Transforms Headhunters into Troll Berserkers, giving them increased hit points and the Berserk ability.
research Burning Oil 50g 150w 30s needs Fortress: Upgrades Demolishers to fire rocks smothered in burning oil, which causes the ground to burn.
War Mill 205g 70s built by Peon | 1000hp fort armor 5
Serves as a drop-off point for harvested lumber. Also contains upgrades for improved armor, melee weapons, ranged weapons, Reinforced Defenses, and Spiked Barricades.
research Steel Melee Weapons 100g 75w 60s: Increases the melee attack damage of Grunts, Raiders and Tauren.
research Thorium Melee Weapons 150g 175w 75s needs Stronghold: Further increases the melee attack damage of Grunts, Raiders and Tauren.
research Arcanite Melee Weapons 200g 275w 90s needs Fortress: Further increases the melee attack damage of Grunts, Raiders and Tauren.
research Steel Armor 150g 75w 60s: Increases the armor of Grunts, Raiders, Troll Batriders, Tauren, Headhunters, Wind Riders and Demolishers.
research Thorium Armor 225g 225w 75s needs Stronghold: Further increases the armor of Grunts, Raiders, Troll Batriders, Tauren, Headhunters, Wind Riders and Demolishers.
research Arcanite Armor 300g 375w 90s needs Fortress: Further increases the armor of Grunts, Raiders, Troll Batriders, Tauren, Headhunters, Wind Riders and Demolishers.
research Steel Ranged Weapons 100g 100w 60s: Increases the ranged attack damage of Headhunters, Wind Riders, Troll Batriders and Demolishers.
research Thorium Ranged Weapons 150g 200w 75s needs Stronghold: Further increases the ranged attack damage of Headhunters, Wind Riders, Troll Batriders and Demolishers.
research Arcanite Ranged Weapons 200g 300w 90s needs Fortress: Further increases the ranged attack damage of Headhunters, Wind Riders, Troll Batriders and Demolishers.
research Spiked Barricades 25g 75w 60s: Surrounds Orc buildings with spikes that damage enemy melee attackers. Deals <Rosp,base1> damage per attack.
research Improved Spiked Barricades 50g 175w 75s needs Stronghold: Increases the amount of damage inflicted on melee attackers by <Rosp,mod1>.
research Advanced Spiked Barricades 75g 275w 90s needs Fortress: Further increases the amount of damage inflicted on melee attackers by <Rosp,mod1>.
research Reinforced Defenses 50g 200w 60s needs Fortress: Upgrades Burrows and Watch Towers so that they have Fortified armor.
Altar of Storms 180g 50w 60s built by Peon | 900hp fort armor 5
Summons Heroes. Revives slain Heroes.
trains: Blademaster, Far Seer, Tauren Chieftain, Shadow Hunter
Beastiary 145g 140w 60s built by Peon | 1100hp fort armor 5 needs Stronghold
Trains Raiders, Kodo Beasts, Troll Batriders, and Wind Riders. Also contains the Ensnare, Envenomed Spears, Liquid Fire and War Drums upgrades.
trains: Raider, Kodo Beast, Wind Rider, Troll Batrider
research Ensnare 50g 75w 40s: Enables Raiders to use the Ensnare ability. Ensnare causes a target enemy unit to be bound to the ground so that it cannot move. Air units that are ensnared can be attacked as though they were land units.
research Envenomed Spears 100g 150w 40s needs Fortress: Adds an additional poison effect to Wind Riders' attacks. A unit poisoned by Envenomed Spears takes damage over time.
research War Drums Damage Increase 100g 150w 40s needs Fortress, War Mill: Increases the damage bonus that the War Drums aura on the Kodo Beast gives. War Drums increases the damage of friendly units around Kodo Beasts.
research Liquid Fire 75g 125w 75s needs Fortress, Voodoo Lounge: Gives Troll Batriders the Liquid Fire attack, which deals damage over time to enemy buildings, stops them from being repaired, and reduces the attack rate of enemy buildings.
Spirit Lodge 150g 150w 70s built by Peon | 800hp fort armor 5 needs Stronghold
Spellcaster production building. Trains Shaman, Witch Doctors, and Spirit Walkers. Also contains spell upgrades for Shaman, Witch Doctors, and Spirit Walkers.
trains: Shaman, Troll Witch Doctor, Spirit Walker
research Witch Doctor Adept Training 100g 50w 60s: Increases Witch Doctors' mana capacity, mana regeneration rate, hit points, and gives them the ability to cast Stasis Trap.
research Witch Doctor Master Training 100g 150w 75s needs Fortress: Increases Witch Doctors' mana capacity, mana regeneration rate, hit points, and gives them the ability to cast Healing Ward.
research Shaman Adept Training 100g 50w 60s: Increases Shaman mana capacity, mana regeneration rate, hit points, and gives them the ability to cast Lightning Shield.
research Shaman Master Training 100g 150w 75s needs Fortress: Increases Shaman mana capacity, mana regeneration rate, hit points, and gives them the ability to cast Bloodlust.
research Spirit Walker Adept Training 100g 50w 60s: Increases Spirit Walkers' mana capacity, mana regeneration rate, hit points, and gives them the ability to cast Disenchant.
research Spirit Walker Master Training 100g 150w 75s needs Fortress: Increases Spirit Walkers' mana capacity, mana regeneration rate, hit points, and gives them the ability to cast Ancestral Spirit.
Tauren Totem 135g 155w 70s built by Peon | 1200hp fort armor 5 needs Fortress, War Mill
Trains Tauren. Also contains the Pulverize upgrade.
trains: Tauren
research Pulverize 100g 250w 40s: Gives Tauren the Pulverize ability. Pulverize gives Tauren a chance of dealing area effect damage on their attacks.
Watch Tower 110g 80w 60s built by Peon | 500hp 17dmg pierce large armor 3 needs War Mill
Defensive structure. Can learn the Reinforced Defenses upgrade. Attacks land and air units.
Voodoo Lounge 130g 30w 60s built by Peon | 500hp fort armor 5
Creates a shop with purchasable items. The items available depend upon what level of upgrade your Great Hall has (Great Hall, Stronghold, or Fortress) and which buildings you have.
Stronghold 315g 190w 140s upgraded from Great Hall | 2000hp fort armor 5 +10 food
Upgrade to Stronghold to enable the production of additional types of structures and units.
trains: Peon
upgrades to: Fortress
research Pillage 75g 25w 45s: Causes Peons', Grunts', and Raiders' attacks to gain resources when hitting enemy buildings.
research Backpack 50g 25w 20s needs Voodoo Lounge: Gives specific Orc ground units the ability to carry items.
Fortress 325g 190w 140s upgraded from Stronghold | 2500hp fort armor 5 +10 food needs Altar of Storms
Upgrade to Fortress to enable the production of additional types of structures and units.
trains: Peon
research Pillage 75g 25w 45s: Causes Peons', Grunts', and Raiders' attacks to gain resources when hitting enemy buildings.
research Backpack 50g 25w 20s needs Voodoo Lounge: Gives specific Orc ground units the ability to carry items.
ORC UNITS
Peon 75g 1 food 15s from Great Hall/Stronghold/Fortress | 250hp 8dmg normal medium armor 0 strength 27
Basic worker unit. Can harvest gold and lumber, build structures, and Repair. Can also go inside Orc Burrows to give it an attack. Attacks land units and trees.
Grunt 200g 3 food 30s from Barracks | 700hp 20dmg normal large armor 1 strength 85
Brutish Orc warrior. Can learn Berserker Strength. Attacks land units.
Troll Headhunter 135g 20w 2 food 20s from Barracks | 350hp 25dmg pierce medium armor 0 strength 66 needs War Mill
Versatile spear-thrower, effective against air units. Can learn Troll Regeneration. Can be upgraded to Troll Berserker, which has the Berserk ability. Attacks land and air units.
Troll Berserker 135g 20w 2 food 20s from Barracks | 450hp 25dmg pierce medium armor 0 strength 75 needs War Mill
Versatile spear-thrower, effective against air units. Has the Berserk ability, which allows it to deal more damage, but take more damage when attacked. Can learn Troll Regeneration. Attacks land and air units.
Demolisher 220g 50w 4 food 40s from Barracks | 425hp 80dmg siege large armor 2 strength 83 needs War Mill, Stronghold
Long-range siege weaponry. Effective against buildings but slow and vulnerable. Can learn the Burning Oil ability. Attacks land units and trees.
Raider 180g 40w 3 food 28s from Beastiary | 610hp 25dmg siege medium armor 1 strength 100
Highly mobile wolf rider. Effective against buildings. Can learn the Ensnare ability. Attacks land units.
Kodo Beast 255g 60w 4 food 30s from Beastiary | 1000hp 18dmg pierce none armor 1 strength 103 needs War Mill
Lumbering war beast, mounted by an Orcish drummer. Has the abilities War Drums, and Devour. War Drums gives friendly units nearby a bonus to attack damage. Devour allows the Kodo to eat a target enemy unit. Can gain the War Drums Upgrade. Attacks land and air units.
Wind Rider 265g 40w 4 food 35s from Beastiary | 570hp 40dmg pierce small armor 0 strength 93
Highly mobile flying creature. Excellent at scouting. Can learn Envenomed Spears. Attacks land and air units.
Troll Batrider 160g 40w 2 food 28s from Beastiary | 325hp 14dmg siege small armor 0 strength 44 needs Voodoo Lounge
Light flying unit with incredible perception. Good at destroying buildings. Has the Unstable Concoction ability, which allows the Troll Batrider to explode, dealing damage to nearby enemy air units. Can learn Liquid Fire, and Troll Regeneration. Attacks land units.
Shaman 130g 20w 2 food 30s from Spirit Lodge | 335hp 8dmg magic none armor 0 strength 33
Primary spellcaster. Can initially cast Purge, which dispels magical buffs and can immobilize enemies. Can also learn Lightning Shield and Bloodlust. Attacks land and air units.
Troll Witch Doctor 145g 25w 2 food 30s from Spirit Lodge | 315hp 12dmg magic none armor 0 strength 42
Supporting spellcaster. Can initially cast Sentry Ward, which summons an invisible detector. Can also learn Stasis Trap and Healing Ward. Attacks land and air units.
Spirit Walker 195g 35w 3 food 38s from Spirit Lodge | 500hp none armor 0
Mystical Tauren caster. Has Ethereal Form, which allows him to avoid physical damage. Also has Spirit Link, which allows units to distribute incoming damage. Can learn Disenchant, and Ancestral Spirit. Attacks land and air units.
Tauren 280g 80w 5 food 44s from Tauren Totem | 1300hp 33dmg normal large armor 3 strength 146 needs Tauren Totem
Mighty warrior. Can learn the Pulverize ability. Attacks land units.
ORC HEROES (the first is free; the second needs the tier 2 hall, the third tier 3; at most 3)
Blademaster 425g 100w 5 food 55s from Altar of Storms | 550hp 37dmg hero hero armor 0 strength 233 (level 5: 435)
Cunning Hero, adept at quickly killing individual units and creating confusion among enemies. Can learn Mirror Image, Wind Walk, Critical Strike and Bladestorm. Attacks land units.
rule: Heroes accumulate levels, abilities and items across fights; death removes their contribution until revival.
Skill points unlock ability ranks. Health, mana, cooldowns and positioning determine their current contribution.
skill Wind Walk: Allows the Blademaster to become invisible, and move 10% faster for 20 seconds. If the Blademaster attacks a unit to break invisibility, the attack will do 40 bonus damage.
skill Critical Strike: Gives a 15% chance to do 2 times normal damage on an attack.
skill Mirror Image: Confuses the enemy by creating 1 illusion of the Blademaster. Dispels all magic from the Blademaster. Lasts 60 seconds.
skill Bladestorm: Causes a bladestorm of destructive force around the Blademaster, rendering him immune to magic and dealing 110 damage per second to nearby enemy land units. Lasts 7 seconds.
Far Seer 425g 100w 5 food 55s from Altar of Storms | 475hp 24dmg hero hero armor 0 strength 147 (level 5: 310)
Mystical Hero, effective at ranged attacks and scouting. Can learn Chain Lightning, Far Sight, Feral Spirit and Earthquake. Attacks land and air units.
rule: Heroes accumulate levels, abilities and items across fights; death removes their contribution until revival.
Skill points unlock ability ranks. Health, mana, cooldowns and positioning determine their current contribution.
skill Far Sight: Reveals the area of the map that it is cast upon for 8 seconds. Also reveals invisible units.
skill Feral Spirit: Summons 2 Spirit Wolf companions. Each wolf has 250 hit points and deals 11 - 12 damage. Lasts 60 seconds. Attacks land units.
skill Chain Lightning: Calls forth a bolt of lightning that bounces up to 4 times, dealing 85 damage on the primary target. Each jump deals less damage.
skill Earthquake: Makes the ground tremble and break, causing 50 damage per second to buildings and slowing units by 75% within the area of effect. Lasts 25 seconds.
Tauren Chieftain 425g 100w 5 food 55s from Altar of Storms | 725hp 32dmg hero hero armor 1 strength 214 (level 5: 445)
Warrior Hero, exceptional at absorbing damage and melee combat. Can learn Shockwave, War Stomp, Endurance Aura and Reincarnation. Attacks land units.
rule: Heroes accumulate levels, abilities and items across fights; death removes their contribution until revival.
Skill points unlock ability ranks. Health, mana, cooldowns and positioning determine their current contribution.
skill Shockwave: A wave of force that ripples outward, causing 75 damage to land units in a line.
skill Endurance Aura: Increases nearby friendly units' movement speed by 10% and attack rate by 5%.
skill Reincarnation: When killed, the Tauren Chieftain will come back to life. Reincarnation has a 240 second cooldown.
skill War Stomp: Slams the ground, dealing 30 damage to nearby enemy land units and stunning them for 3 seconds.
Shadow Hunter 425g 100w 5 food 55s from Altar of Storms | 475hp 25dmg hero hero armor 0 strength 152 (level 5: 295)
Cunning Hero, adept at healing magics and voodoo curses. Can learn Healing Wave, Hex, Serpent Ward and Big Bad Voodoo. Attacks land and air units.
rule: Heroes accumulate levels, abilities and items across fights; death removes their contribution until revival.
Skill points unlock ability ranks. Health, mana, cooldowns and positioning determine their current contribution.
skill Healing Wave: Calls forth a wave of healing energy that bounces up to 3 times, healing 130 damage on the primary target. Each jump heals less damage.
skill Hex: Transforms an enemy unit into a random critter for 15 seconds.
skill Serpent Ward: Summons an immobile serpentine ward to attack the Shadow Hunter's enemies. The ward has 90 hit points, is magic immune, and deals 14 - 16 damage. Lasts 40 seconds. Attacks land and air units.
skill Big Bad Voodoo: Turns all friendly units invulnerable in an area around the Shadow Hunter. The Shadow Hunter does not turn invulnerable. Lasts 30 seconds.
ITEMS
Goblin Merchant
Scroll of Town Portal 350g [use it from its slot; first in stock at 7:20, then 2 every 120s; needs tier 2 hall (Keep)]: Teleports the Hero and any of its nearby troops to a target friendly town hall.
Boots of Speed 250g [passive while carried; first in stock at 3:40, then 1 every 60s]: Increases the movement speed of the Hero when worn.
Dust of Appearance 75g [use it from its slot; first in stock at 0:00, then 1 every 60s]: Reveals enemy invisible units in an area around the Hero. Contains 2 charges. Lasts 20 seconds.
Tome of Retraining 300g [use it from its slot; first in stock at 7:20, then 1 every 120s]: Unlearns all of the Hero's spells, allowing the Hero to learn different skills.
Periapt of Vitality 350g [passive while carried; first in stock at 0:00, then 1 every 120s]: Increases the hit points of the Hero by 150 when worn.
Circlet of Nobility 175g [passive while carried; first in stock at 0:00, then 1 every 120s]: Increases the Strength, Agility and Intelligence of the Hero by 2 when worn.
Staff of Teleportation 150g [use it from its slot; first in stock at 3:40, then 1 every 120s]: Teleports the Hero to the targeted allied land unit or structure.
Potion of Lesser Invulnerability 150g [use it from its slot; first in stock at 7:20, then 1 every 120s]: Makes the Hero invulnerable to damage for 7 seconds when used. An invulnerable Hero may not be the target of spells or effects.
Scroll of Healing 250g [use it from its slot; first in stock at 7:20, then 2 every 120s; needs Black Citadel]: Heals 150 hit points to all friendly non-mechanical units around the Hero when used.
Scroll of Protection 150g [use it from its slot; first in stock at 7:20, then 2 every 120s]: Increases the armor of all friendly units in an area around your Hero by 2 for 30 seconds.
Potion of Invisibility 100g [use it from its slot; first in stock at 7:20, then 1 every 120s]: Non-Combat Consumable Renders the Hero invisible for 120 seconds when used. An invisible Hero is untargetable by the enemy unless detected. If the Hero attacks, uses an ability, or casts a spell, the invisibility effect is lost.
Voodoo Lounge
Scroll of Speed 50g [use it from its slot; first in stock at 0:00, then 1 every 60s]: Increases the movement speed of the Hero and nearby allied units to the maximum movement speed. Lasts 10 seconds.
Healing Salve 100g [use it from its slot; first in stock at 0:00, then 2 every 60s]: Non-Combat Consumable Regenerates a target unit's hit points by 400 over 45 seconds when used. Contains 3 charges.
Lesser Clarity Potion 70g [use it from its slot; first in stock at 0:00, then 2 every 30s]: Non-Combat Consumable Regenerates the Hero's mana by 100 over 30 seconds when used.
Potion of Healing 150g [use it from its slot; first in stock at 7:20, then 3 every 120s; needs tier 2 hall (Keep)]: Heals 250 hit points when used.
Potion of Mana 200g [use it from its slot; first in stock at 7:20, then 2 every 120s; needs tier 2 hall (Keep)]: Restores 150 mana when used.
Scroll of Town Portal 350g [use it from its slot; first in stock at 7:20, then 2 every 120s; needs tier 2 hall (Keep)]: Teleports the Hero and any of its nearby troops to a target friendly town hall.
Tiny Great Hall 600g 185w [use it from its slot; first in stock at 0:00, then 1 every 120s; needs Fortress]: Creates a Great Hall at a target location. Human, Night Elf, and Undead players will get their racial equivalent town hall.
Orb of Lightning 375g [passive while carried; first in stock at 0:00, then 1 every 120s; needs Fortress]: Adds 5 bonus damage to the attack of a Hero when carried. The Hero's attacks also become ranged when attacking air, and have a chance to dispel magic and slow the movement speed of the enemy for 3 seconds. Deals 150 bonus damage to summoned units.
MAP (2)EchoIsles.w3x; your base is at (4672,2944)
possible enemy base (-5184,2944)
gold mine (-5632,3584) 13500 gold, unguarded, 10324 from home
gold mine (-4864,-3200) 12500 gold, guarded (creep level 11), 11344 from home
gold mine (5120,3584) 13500 gold, unguarded, 781 from home
gold mine (4352,-3200) 12500 gold, guarded (creep level 11), 6152 from home
Tavern (-256,-640), 6093 from home; sells Alchemist, Tinker, Firelord, Naga Sea Witch, Dark Ranger, Pandaren Brewmaster, Pit Lord, Beastmaster
Goblin Merchant (-256,-3328), 7976 from home; sells Scroll of Town Portal, Boots of Speed, Dust of Appearance, Tome of Retraining, Periapt of Vitality, Circlet of Nobility, Staff of Teleportation, Potion of Lesser Invulnerability, Scroll of Healing, Scroll of Protection, Potion of Invisibility
Mercenary Camp (-6400,-768), 11678 from home; sells Forest Troll Berserker, Forest Troll Shadow Priest, Ogre Mauler, Mud Golem
Mercenary Camp (5888,-768), 3906 from home; sells Forest Troll Berserker, Forest Troll Shadow Priest, Ogre Mauler, Mud Golem
Marketplace (-256,2944), 4928 from home
CREEP CAMPS (strength uses the same scale as army strength)
camp 2 (5198,814) 2194 from home, strength 142: Gnoll Brute 3, Gnoll Poacher 1, Gnoll Poacher 1; drops random level 1 charged item
camp 6 (2879,4444) 2338 from home, strength 227: Forest Troll Trapper 3, Ogre Warrior 3, Forest Troll Trapper 3; drops random level 2 any item
camp 12 (5833,-778) 3899 from home, strength 394: Renegade Wizard 5, Kobold Tunneler 3, Kobold Geomancer 3, Kobold Tunneler 3, Kobold 1, Kobold 1; drops random level 3 any item, random level 1 permanent item
camp 10 (2824,-725) 4108 from home, strength 288: Murloc Nightcrawler 3, Murloc Nightcrawler 3, Murloc Huntsman 2, Murloc Huntsman 2, Murloc Tiderunner 1, Murloc Tiderunner 1, Murloc Tiderunner 1; drops random level 2 any item, random level 1 charged item
camp 16 (-251,2978) 4923 from home, strength 386: Ogre Magi 5, Forest Troll Trapper 3, Forest Troll Trapper 3, Ogre Warrior 3, Ogre Warrior 3; drops random level 3 permanent item, random level 1 charged item
camp 7 (4140,-2977) 5945 from home, strength 265: Ogre Magi 5, Forest Troll Trapper 3, Forest Troll Trapper 3; drops random level 2 any item
camp 4 (2821,-3791) 6985 from home, strength 164: Murloc Nightcrawler 3, Murloc Huntsman 2, Murloc Huntsman 2, Murloc Tiderunner 1; drops random level 2 charged item
camp 14 (6014,-4621) 7683 from home, strength 376: Gargantuan Sea Turtle 7, Murloc Nightcrawler 3, Murloc Nightcrawler 3, Murloc Huntsman 2, Murloc Huntsman 2; drops random level 3 any item, random level 1 charged item
camp 9 (-240,-3144) 7822 from home, strength 334: Ogre Mauler 5, Forest Troll Berserker 4, Forest Troll Berserker 4; drops random level 2 permanent item, random level 1 charged item
camp 5 (-3333,4454) 8146 from home, strength 227: Forest Troll Trapper 3, Forest Troll Trapper 3, Ogre Warrior 3; drops random level 2 any item
camp 11 (-3472,-847) 8983 from home, strength 288: Murloc Nightcrawler 3, Murloc Nightcrawler 3, Murloc Huntsman 2, Murloc Huntsman 2, Murloc Tiderunner 1, Murloc Tiderunner 1, Murloc Tiderunner 1; drops random level 2 any item, random level 1 charged item
camp 3 (-3130,-3666) 10226 from home, strength 164: Murloc Nightcrawler 3, Murloc Huntsman 2, Murloc Huntsman 2, Murloc Tiderunner 1; drops random level 2 charged item
camp 1 (-5620,679) 10538 from home, strength 142: Gnoll Brute 3, Gnoll Poacher 1, Gnoll Poacher 1; drops random level 1 charged item
camp 8 (-4654,-2972) 11044 from home, strength 265: Ogre Magi 5, Forest Troll Trapper 3, Forest Troll Trapper 3; drops random level 2 any item
camp 13 (-6324,-770) 11606 from home, strength 394: Renegade Wizard 5, Kobold Tunneler 3, Kobold Tunneler 3, Kobold Geomancer 3, Kobold 1, Kobold 1; drops random level 3 any item, random level 1 permanent item
camp 15 (-6454,-3565) 12890 from home, strength 376: Gargantuan Sea Turtle 7, Murloc Nightcrawler 3, Murloc Nightcrawler 3, Murloc Huntsman 2, Murloc Huntsman 2; drops random level 3 any item, random level 1 charged item
TIME 10:58 gold 568 lumber 1540 food 47/60 (no upkeep) STRENGTH yours 1020 enemy army in view 0 ORDER FEEDBACK SINCE LAST REQUEST Code spent an unspent skill point: farseer1 learned Chain Lightning. ORDERS AWAITING CONFIRMATION research Steel Armor at warmill1 submitted at 658.0s; not yet confirmed started STRUCTURES greathall2: constructing, about 24s of work left; builders: none observed orcburrow5: Stand Down level 1: 0 mana, 0s cooldown remaining; Battle Stations level 1: 0 mana, 0s cooldown remaining spiritlodge1: idle orcburrow4: Stand Down level 1: 0 mana, 0s cooldown remaining; Battle Stations level 1: 0 mana, 0s cooldown remaining beastiary1: idle warmill1: making Steel Ranged Weapons (22s left) orcburrow3: Stand Down level 1: 0 mana, 0s cooldown remaining; Battle Stations level 1: 0 mana, 0s cooldown remaining orcburrow2: Stand Down level 1: 0 mana, 0s cooldown remaining; Battle Stations level 1: 0 mana, 0s cooldown remaining barracks1: idle altarofstorms1: idle orcburrow1: Stand Down level 1: 0 mana, 0s cooldown remaining; Battle Stations level 1: 0 mana, 0s cooldown remaining greathall1 (Stronghold): upgrading, 71s left Voodoo Lounge x1: voodoolounge1 WORKERS (16 on the map; 18 in all, counting those inside mines and buildings) returning gold to goldmine1: peon18, peon7, peon4 lumber: peon17, peon16, peon15, peon14, peon12, peon11, peon10, peon5, peon2, peon1 returning lumber to warmill1: peon13, peon8 returning gold to greathall1 (Stronghold): peon3 inside the Great Hall it is building: peon9 inside goldmine1 gathering gold: peon6 HEROES taurenchieftain1 level 2 590/800hp 255/255mana at (-3312,-3671), idle, items: slot 1 Wand of Lightning Shield [use it from its slot], skills: Endurance Aura 1, War Stomp 1 farseer1 level 4 798/800hp 474/645mana at (-3018,-3769), idle, items: slot 1 Scroll of Town Portal [use it from its slot], slot 2 Circlet of Nobility [passive while carried], slot 3 Claws of Attack +6 [passive while carried], slot 4 Pendant of Energy [passive while carried], slot 5 Circlet of Nobility [passive while carried], skills: Feral Spirit 2, Chain Lightning 1; 1 UNSPENT SKILL POINT(S), learn one of: Far Sight, Chain Lightning ARMY Shaman x2: shaman3(375hp) shaman1(375hp) Dire Wolf x2: direwolf7(249hp,idle) spiritwolf4(235hp,idle) Troll Headhunter x3: trollheadhunter3(320hp,idle) trollheadhunter2(155hp) trollheadhunter1(235hp,idle) Raider x1: raider1(517hp,idle) Grunt x2: grunt3(102hp) grunt1(88hp) GROUPS (micro owns these units until a direct order or reassignment) army: raider1, shaman3, trollheadhunter1, farseer1, taurenchieftain1, grunt1, trollheadhunter2, spiritwolf4 (Dire Wolf), direwolf7, shaman1, trollheadhunter3, grunt3 at (-2879,-3598), 66% health, strength 1020, micro replied since last macro turn; told: first taurenchieftain1 picks up tomeofexperience1 at (-2441,-3904). Then the army scouts the enemy's southern expansion at (-4864,-3200) from its edge; do not fight its level-11 guards. Then creep camp 8 (Ogre Magi and 2 Forest Troll Trappers) at (-4654,-2972), pulling from the edge. The Far Seer summons fresh wolves at the start; the wolves, raider1 and the Tauren Chieftain tank. grunt1, grunt3 and trollheadhunter2 stay behind and step out if targeted. Kill the Ogre Magi first. Pick up the drops. Pull back east if the enemy army appears and is stronger. WHAT YOU CAN DO NOW (prices are in the lists you were given) Spirit Lodge spiritlodge1: train Shaman, train Troll Witch Doctor, train Spirit Walker, research Witch Doctor Adept Training, research Spirit Walker Adept Training | NOT YET: research Shaman Master Training (needs Fortress) Beastiary beastiary1: train Raider, train Kodo Beast, train Wind Rider, train Troll Batrider | NOT YET: research Envenomed Spears (needs Fortress); research War Drums Damage Increase (needs Fortress); research Liquid Fire (needs Fortress) War Mill warmill1: research Steel Melee Weapons, research Steel Armor, research Spiked Barricades | NOT YET: research Reinforced Defenses (needs Fortress) Barracks barracks1: train Grunt, train Troll Headhunter, train Troll Berserker, train Demolisher, research Berserker Strength | NOT YET: research Berserker Upgrade (needs Fortress); research Burning Oil (needs Fortress) Altar of Storms altarofstorms1: NOT YET: train Blademaster (needs Fortress); train Shadow Hunter (needs Fortress) Stronghold greathall1: NOT YET: train Peon (building is upgrading); upgrade to Fortress (building is upgrading); research Pillage (building is upgrading); research Backpack (building is upgrading) workers build: Great Hall, Orc Burrow, Barracks, War Mill, Altar of Storms, Beastiary, Spirit Lodge, Watch Tower, Voodoo Lounge | NOT YET: Tauren Totem (needs Fortress) ENEMY Nobody has seen the enemy yet: route the army or a hero's summon past the enemy base or expansion now; workers never scout. SHOPS IN VIEW voodoolounge1 (3776,3456) eligible items: Scroll of Speed 50g, Healing Salve 100g, Lesser Clarity Potion 70g, Potion of Healing 150g, Potion of Mana 200g, Scroll of Town Portal 350g CAMPS CLEARED: 2, 3, 4, 6, 7, 9, 10, 12 SINCE YOUR LAST TURN farseer1 reached level 4 (it has a skill point to spend) farseer1 picked up tomeofexperience1
The Far Seer reached level 4, so it takes Chain Lightning rank 2 to deepen its damage spell. - **Army:** it is idle at camp 3, so I re-issue its objective. It scouts the southern expansion's edge, then creeps ogre camp 8. - **Production:** one Headhunter from the Barracks. That still leaves enough gold, plus income, for the second hero when the Fortress finishes in about 71s. learn farseer1 Chain Lightning train barracks1 Troll Headhunter group army farseer1 taurenchieftain1 raider1 grunt1 grunt3 trollheadhunter1 trollheadhunter2 trollheadhunter3 shaman1 shaman3 direwolf7 spiritwolf4 attack at -4654 -2972: scout the enemy's southern expansion at (-4864,-3200) from its edge; do not fight its level-11 guards. Then creep camp 8 (Ogre Magi and 2 Forest Troll Trappers) at (-4654,-2972), pulling from the edge. The Far Seer summons fresh wolves at the start. The wolves, raider1 and the Tauren Chieftain tank. grunt1, grunt3 and trollheadhunter2 stay at the back and step out if targeted. Kill the Ogre Magi first. Pick up the drops. Pull back east if the enemy army appears and is stronger.
A game costs about $5 against Warcraft's Insane AI. It loses, and often it is painful for me to watch. See the blunders below.
The failures can be attributed to several fundamental issues.
Opus' decisions are often sensible but wrong: dishing out damage on creeps but wasting mana doing so, creeping too often instead of engaging the enemy, sacrificing units to protect heroes when both could live. These suggest a fairly naive view of Warcraft III. The solution is not prompting, since prescriptive advice tends to fail in the many scenarios nobody foresaw.
Moreover, decision quality appears to degrade when there are more than 10 prior observation-action pairs in context. This creates a tension. Keeping more turns gives Opus more context, but also more accumulated "diffs" to reason through, and its decisions get worse. Keeping fewer turns gives it a clearer head, but it loses track of what it set in motion. For example, it often forgets that Peasants turned into Militia should go back to their posts once a fight is done. Better context engineering may ameliorate this, but fundamentally the tension exists because Opus is not smart enough to reason about states through accumulated diffs. I have often had similar frustrations with coding agents after a file has accumulated many changes (I often just ask the agent to reread it), but games take this problem to a whole new level.
Jev suffers from the same issues. It takes in a very limited number of tokens, doesn't do well with larger contexts, and often makes suboptimal choices, especially when the right choice depends on history. For example, a unit will often attack one target, step back, attack another and move again, even when prompted to not switch targets often.
There is no substitute for spatial intelligence. Terrain, pathing and army formations are crucial variables in fights and are in constant flux, so battle decisions must take them into account and be recomputed every second. Neither Opus nor Jev can parse visual input well (if at all), especially with many prior frames in its context. And even if Opus could, it would be too slow.
My guess is that a generalist language model would need to see the battlefield directly, decide in under a second, and reason well over the last 10 to 20 frames, all at once.
RTS games like Warcraft III are interesting benchmarks for general models because they combine long-term planning, hidden information and spatial reasoning, with time as a crucial factor, much like how decisions are made in the real world. The second direction is RL on top of an LLM. AlphaStar learned from up to 200 years of real-time play per agent, but starting from a model that already understands the rules might need far less.