Game Dev Cheat Sheet

Frame Budget Calculator for Unity

See exactly how many milliseconds you have per frame. Every system in your game competes for the same budget.

Every frame in your game has a fixed time budget. At 60 FPS, you have 16.67 milliseconds to run all game logic, physics, rendering, and audio before the next frame is due. Exceeding this budget causes frame drops and stuttering. This calculator breaks down how to allocate that budget across your game's systems.

Target FPS:
Custom:

16.67 ms per frame

at 60 FPS
3.3ms
2.5ms
6.7ms
1.7ms
1.7ms
Game Logic3.33 ms20%AI, state machines, spawning, inventory
Physics2.50 ms15%Collision, raycasts, rigidbody simulation
Rendering6.67 ms40%Draw calls, shaders, post-processing, shadows
Audio0.83 ms5%Mixing, spatial audio, DSP effects
UI1.67 ms10%Canvas rebuilds, layout, text rendering
Engine Overhead1.67 ms10%GC, engine internals, input, vsync

Platform Reference

What is Eating Your Budget?

Common causes of frame budget overruns and how to fix them.

Rendering (GPU) over budget?
  • Check draw call count in the Profiler (aim for under 200 on mobile)
  • Look for overdraw: enable the Overdraw scene view mode
  • Reduce shadow casting objects or lower shadow resolution
  • Use LOD groups for distant objects
  • Batch materials: fewer unique materials means fewer draw calls
  • Disable real-time lighting where baked would suffice
Physics (CPU) over budget?
  • Reduce Rigidbody count; use kinematic for non-physics objects
  • Simplify colliders: replace MeshColliders with primitive shapes
  • Use Layer Collision Matrix to skip unnecessary checks
  • Increase Fixed Timestep (Edit > Project Settings > Time) from 0.02 to 0.04 for less demanding games
  • Disable continuous collision detection unless needed
UI over budget?
  • Split canvases: separate static UI from frequently updating elements
  • Avoid Layout Groups on elements that change every frame
  • Use TextMeshPro instead of legacy Text
  • Disable Raycast Target on non-interactive elements
  • Pool UI elements rather than instantiating and destroying
Audio over budget?
  • Reduce simultaneous AudioSource count
  • Use compressed audio formats (Vorbis for music, ADPCM for SFX)
  • Lower the max voices in Audio Settings
  • Disable spatialisation on non-critical sounds
Game Logic (CPU) over budget?
  • Stagger expensive operations across frames (do not process all enemies in one frame)
  • Use object pooling instead of Instantiate/Destroy
  • Cache component references (GetComponent is expensive per frame)
  • Replace Update loops with event-driven architecture where possible
  • Profile with Deep Profile to find the exact method causing spikes

Frequently asked questions

What is a good frame budget for mobile games?
For 60fps mobile, you have about 16.6ms per frame total. Aim for a CPU budget of 8-10ms and a GPU budget of 8-10ms, with 2-3ms of headroom for thermal throttling and OS overhead. For 30fps, double those numbers.
How do I measure my actual frame time in Unity?
Use the Unity Profiler (Window > Analysis > Profiler) connected to a build on the target device. The CPU usage track shows main thread time per frame; the GPU track shows GPU time. Avoid measuring in the Editor because Editor overhead distorts the numbers.
What frame rate should I target for VR?
Quest 2 and 3 target 72fps minimum (13.9ms budget) and ideally 90fps (11.1ms budget). PCVR headsets typically target 90fps. Dropping below the target causes reprojection artefacts and sickness, so VR budgets are stricter than flat-screen budgets.
How much of the frame budget should rendering use?
A common split is 40% rendering, 30% game logic, 20% physics and animation, 10% headroom. This varies wildly by genre. Open-world games often spend more on streaming; multiplayer games spend more on networking. Profile before assuming.

Last updated: