“Awesome job! I really look forward to working with the guys again very soon!”
From Unity 2019 to Unity 6 in a Week
Bringing Foil Hat Games' live puzzle game up to current Google Play and App Store requirements, with a lighter build and longer battery life along the way.
| Area | Before | After the update |
|---|---|---|
| Engine | Unity 2019 | Unity 6 |
| Ads and IAP | Legacy Unity Ads and Unity IAP | Current Unity Ads and Unity IAP packages |
| Level map scene file | 218MB | 6.8MB |
| Particle systems on the level map | 1,500 | 1 |
| Frame rate when idle | 60fps at all times | 30fps after 2 seconds without input or animation |
| iOS texture compression | PVRTC | ASTC |
| Player features | No haptics or tablet layout | Haptic feedback and tablet support |
The update had to leave Nova Blast submittable to both stores, with its monetisation working as before. That meant the engine, the SDKs and the code that depended on them.
Unity 2019 to Unity 6
We upgraded the project directly to Unity 6, raising the minimum supported versions to Android 7 and iOS 13 in line with current requirements.
Unity Ads and IAP Migration
The legacy Unity Ads and Unity IAP integrations were migrated to the current packages, keeping the game's adverts and in-app purchases working on both stores.
Obsolete and Deprecated Code
We fixed a number of code paths that relied on obsolete or deprecated APIs, so the project compiles cleanly on Unity 6 rather than carrying warnings into its next update.
Most of the saving came from one scene. The level map had been storing far more than it needed to.
Level Map: 218MB to 6.8MB
The map's 250 level buttons, each carrying six particle systems, were saved in the scene. They are now created from a prefab when the map loads, and only the current level gets a particle marker, taking the scene file from 218MB to 6.8MB.
Texture Compression
iOS textures moved from PVRTC to ASTC, and the sprite atlases gained compressed platform overrides with a maximum size of 2048.
Unused Code Removed
We removed six unused packages, a leftover memory profiler folder and dead scripts, turned on code stripping, and limited Android to a single graphics API to reduce shader variants.
A puzzle game spends much of its time waiting for the player's next move, or on menus between levels. The game no longer works at full speed when nothing on screen is changing.
Adaptive Frame Rate
The game runs at 60fps while the player is touching the screen or something is animating, then drops to 30fps after two seconds of idle. This is where most of the battery saving comes from.
Less Work Every Frame
The 1,500 particle systems on the level map are down to one. Empty Update methods are gone, the collectable glow stops updating once it fades, and the camera only refits when the screen changes.
Android Frame Pacing
We enabled Android frame pacing for smoother, more consistent frame delivery, and switched off the accelerometer the game never used.
The client also took the opportunity to improve the game itself while it was open on the workbench.
Haptic Feedback
We added haptic feedback to the gameplay, so players on supported devices feel the action as well as see it.
Tablet Support
Nova Blast now supports tablets as well as phones, opening it up to players on larger screens.
Gameplay Polish
We made a set of smaller gameplay and quality of life improvements requested by Foil Hat Games.
Store-Ready in a Week
Nova Blast moved from Unity 2019 to Unity 6 and met the current Google Play and App Store requirements, with its adverts and in-app purchases migrated to current packages.
Level Map Scene Cut by 97%
Building the level map at load time took its scene file from 218MB to 6.8MB and replaced 1,500 particle systems with one.
Kinder to Batteries
Halving the frame rate when the game is idle, and trimming the work done every frame, reduces how hard the device works between moments of play.
Got a Store Deadline on an Older Unity Game?
Tell us which Unity version your game is on, which stores it is published to and when the deadline falls.
Tell Us About Your Game









