Zero Hour Reforged

How it was tested

No CI and no debugger; the tests run on the game's own headless modes.
  1. ctest39 tests on every build
  2. headless skirmisha 23-minute match in 38 seconds, identical on every run
  3. ai-batch20 headless matches on fixed seeds; win rate before and after
  4. tree-checkthe same frame from two builds, differing pixels counted
  5. net-checktwo copies over a real network connection
  6. regressioneach fix proved by putting the bug back and watching its test fail

Measured against EA's source

Longest logic frame
243ms was 2,976 ms
Route search, 23 cells
25ms was 256 ms
Total pathfinding time over one match
1.6s was 11.8 s
Frame time under heavy fire and smoke
6.7ms was 11.6 ms
Longest frame of a fight's first explosions
38ms was 141 ms
20 tanks against 20 head-on: last arrival
23s was 72 s
Average Crusader trip as two armies of 420 cross
91s was 167 s
Hard AI's first superweapon
4.9min was 12.5 min

Changes from EA's release

Each row gives the source EA released first, then this build. A logic frame is the step in which the game rules are computed, 30 times a second. The changelog has the measurements in full.

Rendering and performance

Rendering and performance8 changes
EA sourceReforged
Renderer EA source: Direct3D 8 Reforged: Direct3D 11 by default, bloom and anti-aliasing on; Direct3D 9 with -d3d9
Frame rate EA source: rendering tied to the 30 Hz logic step, 30 FPS at most Reforged: logic fixed at 30 Hz, rendering decoupled, frame rate uncapped
Base game textures EA source: Zero Hour's downscaled copies Reforged: 481 textures at 4x resolution
Terrain texture EA source: 64 pixels per cell, 16-bit colour Reforged: 128 pixels, full colour, relief shading from the map's sun
Infantry shadow EA source: flat blob Reforged: shadow volume built from the model's pose
Widescreen interface EA source: 4:3 command bar stretched horizontally Reforged: three pieces at their drawn aspect ratio
Field of view above 16:9 EA source: vertical angle shrinks, picture zooms in Reforged: horizontal angle widens, more map visible
Tree rendering EA source: one buffer, about 730 trees; the rest are not drawn Reforged: four buffers

AI

AI5 changes
EA sourceReforged
Base building EA source: a wrong value left it with urgent items and one power plant only Reforged: full base, scouting, expansion to new supply piles
Vision EA source: auto-targets units under the fog of war Reforged: sees only what it has scouted; stealth works on it
Production choice EA source: random pick among teams of equal priority Reforged: damage, armour and cost against the units it sees you field
Retreat EA source: not in the code; teams fight to the last unit Reforged: Hard pulls a team out of a lost fight
Banked money EA source: Hard sits on 117,000 Reforged: one more attack group per 8,000, up to four

Orders and movement

Orders and movement5 changes
EA sourceReforged
Mouse EA source: left selects and orders, right drag scrolls Reforged: left selects, right orders, middle button moves the camera
Shift queue EA source: move orders only Reforged: any order type, kept by the units
Mass move order EA source: route queue holds 512; 329 of 841 units never move Reforged: all 840 units get a route
Long bridge on Golden Oasis EA source: one tank in ten stuck under the deck Reforged: 20 of 20 tanks cross
Diagonal movement EA source: up to 40% above the unit's speed Reforged: the unit's defined speed

Other

Other4 changes
EA sourceReforged
Replays EA source: only the last match kept Reforged: every match in its own file; timeline with seeking
Countdowns EA source: rounding bug, 10 seconds shown as 11 Reforged: real seconds
Memory EA source: 32-bit, 4 GB address space at most Reforged: 64-bit
Crash report EA source: none for background-thread and loading faults Reforged: written for both, sent by the launcher