Skip to content
ReadySpawn

How to optimize low poly games for mobile and web

By Imersa Studios · Updated

Profile on the slowest target device first. Then reduce draw calls with shared materials and batching, bake lighting instead of using many real-time lights, keep textures small and compressed, and set a triangle budget. Draw calls and overdraw usually cost frames before triangles do.

1. Measure first

Use your engine's profiler on a real phone or a low-end browser, not just your desktop. Find out whether you are limited by the CPU (scripts, physics, draw call setup) or the GPU (fill rate, shaders). Fixing the wrong one wastes time.

2. Cut draw calls

  • Share materials. Many props on one texture can be batched together. Dungeon Props uses one gradient texture for 50+ models for this reason.
  • Use static batching or GPU instancing for repeated objects.
  • Combine small meshes that never move into one.
  • Use texture atlases for UI and sprites.

3. Keep lighting cheap

  • Prefer baked lighting for static scenes. Real-time lights and shadows are expensive on mobile.
  • Limit real-time lights to one main light.
  • Use fog and simple shaders to hide distance and cut overdraw.

4. Textures and triangles

Small textures help memory and bandwidth. Pixel-art textures of 64 to 128 pixels are tiny. For larger ones, use the platform's compressed format (ASTC on most modern phones). Triangles still matter, so set a budget with the triangle budget calculator and keep density sensible with the texel density calculator.

5. Check the web build

Browser builds are limited by download size and memory. Compress assets, avoid big audio files, and test the load time on a slow connection. If you publish to itch.io as HTML5, see how to publish a game on itch.io.

Questions

Who wrote this

Imersa Studios builds the Unity systems, low poly packs and field guides sold on itch.io. The code and techniques here come from shipping those products. More about the studio.