Back to the work

Concluded

RTS Performance Rig

How many units can GameMaker actually run?

A rig built to replace an argument with a number, which found the engine innocent and the game guilty.

  • GameMaker
  • GML
  • Profiling
  • Benchmarking
A dense field of unit markers with a frame time readout
1,000
units still running
60fps
held at 500 units

The question nobody could answer

How many soldiers can GameMaker actually run at 60fps? It came up in every conversation about scaling battles up, and every answer was a guess informed by how the game currently felt.

The game got heavy well before the numbers anyone wanted, so the working assumption was that the engine was the ceiling. That assumption shaped roadmap decisions, which is an expensive thing for a guess to do.

Testing the engine, not the game

The rig is a standalone project that does nothing except spawn units, move them and measure frame time. No game systems, no UI, no save layer.

That separation is the whole point. Benchmarking inside the game would have measured the game and produced the same ambiguous answer as before.

What it found

500 units hold 60fps comfortably. 1,000 still run. The engine was never the constraint, and had not been for the entire time it was being blamed.

The real ceiling was the game's own per-unit overhead, roughly three times what the bare engine charged for the same soldier. That is a fixable number, and knowing it exists is what makes it fixable.

Why it was worth building

The measurement turned directly into two shippable performance fixes in the live game.

It also ended the recurring argument. A benchmark with a written conclusion is cheaper than the same debate held four more times, and it is the kind of question that comes back every time someone proposes a bigger battle.