Parity is the rule that agents never perceive or act in ways a human player couldn't. The environment enforces it; it is never left to the agent.
The principles#
| Limit | What a player gets | What the agent gets |
|---|---|---|
| Information | What the stock client and common addons show | The same, as structured data |
| Camera | A view turned at human speed | A camera with a turn rate and field of view. Outside it: only unit frames and the combat log |
| Distance | Range checks, not exact positions | Range brackets, and a position estimate that worsens with distance. Never exact |
| Timing | Network latency plus reaction time | About 40 ms round-trip latency plus 150–350 ms of reaction delay, on everything |
| Team | Only their own screen; the rest arrives by voice | Only its own character's view; what a teammate knows arrives after a communication delay. No shared brain |
Information and timing limits apply from the first agent. Limits on execution precision, such as actions per second, are added once agents approach the human ceiling there.
One layer#
The perception layer sits between the bot's packet stream and the agent. It reads only the packets a real 3.3.5a client would receive, so the server's own rules are the first fence: stealthed units are removed from view, and enemy cooldowns are never sent.
The design found that the packets already carry roughly what the stock client and common addons show. What they carry beyond a player's view is small: exact geometry (every unit's exact position and facing, hence exact distances), instant timing, the target of another unit's cast in progress, and internal object IDs. So the layer's work is mostly the camera, distance and timing reductions.
How it works#
- Unit frames. Units a player has a frame for (target, focus, party, arena opponents) keep their health, power, auras and casts whether in view or not, as a player reads them off the frames. Addon-style timers (diminishing returns, enemy cooldowns) are left for the agent to work out from the combat log, as the addons do.
- Camera. In view means inside the field of view and either within nameplate range or in line of sight. Out of view, a unit's position freezes where it was last seen, and its uncertainty grows at its last known speed: "he was there; by now he could be anywhere within 10 yards."
- Distance. Every unit with a unit token gets a range bracket between the breakpoints of the agent's own spells and items, as range-check addons show. In view, the position estimate carries an error whose size depends on the bracket, never on the true distance, so it can't be inverted. The error drifts smoothly rather than being redrawn each time, so it can't be averaged away either.
- Timing. Observations show the game as it was 20 ms plus a reaction delay ago; the delay glides between 150 and 350 ms so events never arrive out of order. Actions reach the server 20 ms after they are sent.
Proving it#
Parity is tested, and every test must be shown failing on a leaking setup before it counts. Among them: no agent code can read the server's internals; no observation field exists without a perception rule; positions are never exact, within a bracket or averaged over time; the camera never turns faster than allowed; reaction delays are never shorter than allowed; and rebuilding a recorded match's observations from its packets gives identical bytes.
Note
The exact values (field of view, turn rate, the size of the position error, the shape of the reaction delay, which addons count) are provisional starting values. They can be tuned within the principles; the principles themselves are fixed.