Skip to main contentSkip to case study detailsSkip to contact
Ocean View Games
From Unity 2019 to Unity 6 in a Week

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.

Foil Hat Games came back to us with a familiar problem for a live mobile game. Nova Blast, which we had previously modernised and ported to Android, needed updating to meet the current Google Play target API level and Apple's minimum SDK requirements. Without the update, the game could no longer be submitted to either store. The project was still on Unity 2019. We moved it straight to Unity 6, which offered the best compatibility with current store requirements and was the most cost-effective option for the client: one upgrade rather than a series of intermediate ones, onto a version that will meet store requirements for longer. David Edgecombe completed the work in a week. Alongside the upgrade, we migrated the legacy Unity Ads and Unity IAP integrations to their current packages, fixed obsolete and deprecated code paths, added haptic feedback and tablet support, and made a set of smaller gameplay improvements. We also used the opportunity to make the build lighter and the game kinder to battery life.
The starting point and completed work for the Nova Blast Unity 6 update
AreaBeforeAfter the update
EngineUnity 2019Unity 6
Ads and IAPLegacy Unity Ads and Unity IAPCurrent Unity Ads and Unity IAP packages
Level map scene file218MB6.8MB
Particle systems on the level map1,5001
Frame rate when idle60fps at all times30fps after 2 seconds without input or animation
iOS texture compressionPVRTCASTC
Player featuresNo haptics or tablet layoutHaptic feedback and tablet support
Meeting Store Requirements

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

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

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

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.

Cutting Build Weight

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

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

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

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.

Longer Battery Life

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

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

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

Android Frame Pacing

We enabled Android frame pacing for smoother, more consistent frame delivery, and switched off the accelerometer the game never used.

Improvements for Players

The client also took the opportunity to improve the game itself while it was open on the workbench.

Haptic Feedback

Haptic Feedback

We added haptic feedback to the gameplay, so players on supported devices feel the action as well as see it.

Tablet Support

Tablet Support

Nova Blast now supports tablets as well as phones, opening it up to players on larger screens.

Gameplay Polish

Gameplay Polish

We made a set of smaller gameplay and quality of life improvements requested by Foil Hat Games.

The Results

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.

Testimonial
“Awesome job! I really look forward to working with the guys again very soon!”
Project: Nova Blast

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