Pocket Orchard is 38.2 MB on iOS and 31.7 MB on Android. That's smaller than most photos apps' updates. We didn't get there by accident; we set a budget before writing a line of code and treated it like a hard deadline.
Why size matters
Store data is blunt: every additional 6 MB of download size lowers install conversion by around 1%. On metered connections in Brazil, India and Indonesia — where a lot of our players are — that effect is much stronger. And a small game is a game people don't delete when their storage fills up.
The budget
| Category | Budget | Shipped |
|---|---|---|
| Engine & code | 18 MB | 16.9 MB |
| Art | 8 MB | 6.4 MB |
| Audio | 10 MB | 9.8 MB |
| Fonts & localisation | 4 MB | 5.1 MB |
Vector everything
Every tree, fruit and leaf in Pocket Orchard is a vector shape rendered at runtime, then cached as a texture sized for the device. One set of source files covers every screen from a 4.7-inch iPhone SE to a 13-inch iPad, and the whole art folder compresses to under 7 MB.
Audio: the hard part
Our cello soundtrack was the biggest risk. Instead of shipping finished tracks, we recorded 212 short phrases and wrote a small sequencer that arranges them live, layered with procedurally generated wind and birdsong. Players hear music that never quite repeats — and it's a fraction of the size of four looping songs.
A budget turns "can we make it smaller?" into "what are we willing to give up?" That's a much more useful question.
Small habits that add up
- Subset fonts to only the glyphs each language needs.
- Strip unused engine modules — physics, video playback and networking were all removed.
- Run a size report on every build in CI, and fail the build if any category exceeds its budget by more than 5%.
The fonts went over budget, and we let them. Supporting Japanese and Korean properly was worth 1.1 MB. Budgets are there to force decisions, not to win arguments.