Game Dev Cheat Sheet

Frame Budget Calculator for Unity

Convert target FPS to a frame interval and try example time allocations.

At 60 FPS, the frame interval is 16.67 milliseconds. CPU and GPU work can overlap, so their timings should be measured separately. Use the example allocations below as a planning exercise, then adjust them using profiling data from your game.

Target FPS:
Custom:

16.67 ms per frame

at 60 FPS

Example allocations, editable below. Total: 100% of the frame interval. These are planning targets, not recommended percentages or measured CPU/GPU timings.

3.3ms
2.5ms
6.7ms
1.7ms
1.7ms
Game Logic3.33 msAI, state machines, spawning, inventory
Physics2.50 msCollision, raycasts, rigidbody simulation
Rendering6.67 msDraw calls, shaders, post-processing, shadows
Audio0.83 msMixing, spatial audio, DSP effects
UI1.67 msCanvas rebuilds, layout, text rendering
Engine Overhead1.67 msGC, 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: