Sixteen milliseconds: how we cut a frame budget in half
Dana Okonjo
Technical Director, Games
When we inherited Ashfall it ran at 40 milliseconds a frame on a PlayStation 5 devkit. The launch window required 16. Eleven months, three platforms, and a prototype that everybody already loved — which is its own kind of constraint, because the fun was in the parts that were slowest.
The first thing we did was stop calling it optimisation. Optimisation is what you do at the end, when there's no time left. We made the frame budget an acceptance criterion on every ticket: if your feature costs 0.4ms, you say so, and somebody has to give 0.4ms back.
The wins were unglamorous. GPU instancing on the crowd system returned 6ms. Nanite discipline — actually auditing which meshes deserved it — returned another 4. The animation graph, which nobody suspected, was costing 3ms on a thread we thought was idle.
None of that is a clever trick. It's a culture where the cost of a feature is visible at the moment somebody proposes it, rather than discovered in a panic six weeks before certification.
Written by
Dana Okonjo
Technical Director, Games · Tartaria Technology
Get the next one by email.