Our studio committed to Unity as our single solution for a cross-platform mobile RPG. The promise of write-once-deploy-everywhere seduced us into ignoring native optimization entirely.
The Build Size Disaster
We shipped 43MB for a simple card battler. Android users on budget devices in Southeast Asia deleted the app before finishing the tutorial. Our retention crashed within 72 hours because we refused to write platform-specific compression in Kotlin or Swift.
Performance on Older Devices
Unity's garbage collection paused our game every 8-12 seconds on devices older than 2019 models. We could have written critical rendering loops in C++ through NDK, but we trusted the engine to handle everything. Players in our target markets experienced stuttering that made the game unplayable.
What Actually Worked
Teams that succeeded used Unity for logic and UI but dropped to native code for performance-critical systems. They wrote custom rendering pipelines in Metal and Vulkan. Their builds stayed under 25MB and ran smoothly on hardware from 2017. We learned this after our launch failed and the studio downsized by 60 percent.