Unity 5 Publishing Metrics
I worked through the “Roll-a-ball” beginner tutorial of Unity 5 and published to all the platforms that I may care about. I thought you’d be interested in my findings. Here are results from Windows, Mac, Android, iOS, and WebGL.
Particularly interesting part of the publishing process is that I used a single Mac installation to publish to everything, including Windows. Cross-compiling has been around forever, but it is nice to have the process be so easy. A couple platforms took an extra step, but it was painless.
App size: 30 MB
The Windows package was zero-install. All the frameworks were provided in a nice data subdirectory. This package would be very easy to wrap up in your favorite installer tool. I did not test on a completely fresh Windows installation, but this initial test is promising.
The guidelines require small indies to use the made with unity splashscreen if not paying for the premium version. I wanted to see how long this “payment” lasted. The Unity logo was on the screen for just a couple seconds. If anything, I think it made my beginner app look more professional.
App size: 40 MB
The Mac app had all the frameworks in its standard .app bundle. It was zero-install.
“Made with unity” was identical to the Windows version and was on the screen for just a couple seconds.
App size (reported by iOS): 61 MB
Instead of a ready-to-upload package, Unity created an Xcode project that I then needed to load and compile manually in to an iOS package. The project compiled with no problems. I actually don’t mind this because iOS projects require lots tweaking in the settings to get the package just right. I already had a $99/year iOS developer account to be able to do this test. This project would not run in the free simulator.
This image is the final archive that could be uploaded to the app store.
Just like the others, the “made with unity” was very breif. Maybe 2 seconds.
And now the app running the tutorial.
App APK size: 18.4 MB
App Installed Size: 30 MB
Android was probably the easiest to publish. It spit out an APK that could then go directly in to Google Play. I already had the Android SDK and a signing key ready-to-go. A new user would need to set all that up. It is not trivial to do, so maybe “easy” is misleading. It is easy once all those behind-scenes steps are done.
Unity added no extra permissions. Since Google now hides the INTERNET permission, I unbundled the APK itself and did not seen any in there.
I don’t know why the Android-based splashscreen looks different than the others. The part I care about was fine. It was on the screen for just a couple seconds.
Screenshot from the app listing showing install size.
And now the app screenshot
App download size (via directory listing): 124 MB
WebGL took forever to compile, and the result is a monstrosity. To their credit, Unity calls this feature beta. I agree.
Splashscreen lasted 2 seconds.
The screenshot looks nicer than it really is. This game had a lot of artifacts. WebGL from Unity is not ready for prime time.
I hope you find this quick test useful. I say except for WebGL, Unity passes.
I didn’t do any performance metrics, but I am mostly interested in 2D. I am sure any modern mobile device could handle the types of apps I plan to create.
Thanks for the post. Interesting findings. I wonder what stuff Unity is outputting that takes up so much data.
I have a game that’s a similar sort of scene, but the view is top down. No textures, just primitives, colours and lighting. It’s all setup through code though. Cordova build is 2.9mb. That is such a large cut down from the unity output.
Thanks for sharing @dannagle. My experiences definitely mirror your own, although I’ve only been targeting desktop. Good to know that the mobile workflow is pretty easy, as well.
The WebGL exports seems insanely bloated. 125MB on the web is pretty much a non-starter. Judging from your screenshots that has to be mostly code as I can’t image you have any large image or audio assets.
@agmcleod There’s something appealing about such a lean build!
It seems the culprit is a single uncompressed
rollballwebgl.jsfile at 104 MB. It also looks like I included some temporary work files in my original estimation, so we can deduct 17 MB.
Dans-MBP:Release dannagle$ uglifyjs -o rollballwebgl-ugly.js rollballwebgl.js FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory Abort trap: 6
A very interesting read, thank you for sharing @dannagle! Now I’m even more eager to try out Unity…