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
Draw calls, overdraw and lighting usually cost more than triangle counts. Profile to be sure.
It varies a lot by device. Set a budget from profiling on your slowest target.
Use the compressed format your target supports, such as ASTC on most modern phones.
Build to the device and attach the engine profiler. The editor on a desktop hides most mobile issues.
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.



