Unity mobile deployment slow? (2+ mins)
Hey guys,
I was checking out Unity 5 today and decided to do a little frame rate test on my Samsung Galaxy S1 and Sansui Lifepad, both fairly low-spec devices. The Sansui is probably a lot newer and is running Android 4.0, while the Galaxy S is running 2.3.3. Dev machine is a Macbook Pro 2012, which is an i7 with plenty of RAM etc. So in general, things are smooth and quick in the IDE. And on both devices, I get similar frame-rates with a basic, single-mesh scene - just under 60fps.
But... It takes about 2 minutes to deploy this baseline app to either device. I recalled the last Unity game I developed for a client in 2012 using Unity 4... same deployment time, roughly, for Android & iOS, IIRC. Is it safe to assume the deployment time to mobile devices has not improved, between then and now? (Confirmed USB 2.0 port for the deployment, and tested several times on both devices.)
What is your average time to deploy via Unity, and is it a problem for you / your teams? Do you consider this an acceptable cost of doing business in the mobile arena? Granted one can test a lot of things in Unity IDE or desktop build, but even so...? I am guessing this is due to the large executable size due to inclusion of the Unity engine package(s).
Any thoughts welcomed.
I was checking out Unity 5 today and decided to do a little frame rate test on my Samsung Galaxy S1 and Sansui Lifepad, both fairly low-spec devices. The Sansui is probably a lot newer and is running Android 4.0, while the Galaxy S is running 2.3.3. Dev machine is a Macbook Pro 2012, which is an i7 with plenty of RAM etc. So in general, things are smooth and quick in the IDE. And on both devices, I get similar frame-rates with a basic, single-mesh scene - just under 60fps.
But... It takes about 2 minutes to deploy this baseline app to either device. I recalled the last Unity game I developed for a client in 2012 using Unity 4... same deployment time, roughly, for Android & iOS, IIRC. Is it safe to assume the deployment time to mobile devices has not improved, between then and now? (Confirmed USB 2.0 port for the deployment, and tested several times on both devices.)
What is your average time to deploy via Unity, and is it a problem for you / your teams? Do you consider this an acceptable cost of doing business in the mobile arena? Granted one can test a lot of things in Unity IDE or desktop build, but even so...? I am guessing this is due to the large executable size due to inclusion of the Unity engine package(s).
Any thoughts welcomed.
Comments
-edit- Oh, hah, I see @Elyaradine signposted that already...
I envy a 2 minute deployment cycle on iOS, I really do. At the moment I'm looking at roughly a 30 minute round trip from Unity build start to Xcode build to running on iOS device. I can cut that down to 12 minutes with a Mono build, but that's no longer a thing you can ship, so it's not worth testing with. This is with a 2.2Ghz build machine, but it's not the beefiest thing in the world...
Random iOS deployment tip: Poke the Xcode progress bar to see what task Xcode is currently spending time on and if your copying to device is really slow, just reboot the device and watch that plummet to mere seconds. That might be fixed since iOS 8, but I haven't really been doing time sensitive builds recently.
How about Unity Remote? Does it improve this at all?
By comparison, I've nigh-zero times to recompile + link + transfer C code. But deploying cross platform is much harder.
As for Unity Remote, no idea. We never managed to get it working. I also never successfully managed to get the game running on simulators, but that's probably because OSX makes me angry in places I didn't know I could get angry.
So it's super quick to iterate on things, but depending on what you're trying to evaluate it's arguably not useful at all (e.g. performance, or mobile-specific rendering problems, or anything that needs realtime responsiveness). But it's pretty useful for checking if your buttons are large enough to be comfortable to press on a tiny screen, or that multitouch input works.
Maybe your figures will differ a little, but for me this is clear enough for my current project, since assets are really small. If you don't plan to re-transfer your assets every time you deploy code (makes sense!), native is again perhaps a better route.
After all, once the Unity app gets installed, it still takes an age to start up, typically. I am not even factoring that in here.
Will post back here on sending larger sets of assets across... say, 20MB? ;)