Announcement

Collapse
No announcement yet.

How many people have successfully packaged an iOS game under 100mb?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    How many people have successfully packaged an iOS game under 100mb?

    If you have, how were you able to do so?

    I've tried endlessly, (Yes I've tried everything in the apk package reduction document thread many times). Changed to blank projects, converted to C++, removed every reference and unused asset in the game.

    Is there any way to reduce the engine content to a bare minimum in addition to the blacklist to get this to have a lower file size?
    Could you package one arm instead of both of them?

    If someone could show everyone how to did this it would be HUGE for mobile development for iOS with UE4.

    Essentially, many people want to download our games at the click of a button. If they aren't connected to wifi, they have to wait till they can to download it. Lowering our file sizes would increase downloads, and profits for every indie developer in the unreal community.

    If anyone would like to chime in, please do so

    #2
    In your project's target.cs file, make your SetupGlobalEnvironment() function look like this:

    Code:
    public override void SetupGlobalEnvironment(
    	TargetInfo Target,
    	ref LinkEnvironmentConfiguration OutLinkEnvironmentConfiguration,
    	ref CPPEnvironmentConfiguration OutCPPEnvironmentConfiguration
    	)
    {	
    	if (Target.Platform == UnrealTargetPlatform.IOS)
    	{
    		// to make World Explorers as small as possible we excluded some items from the engine.
    		// uncomment below to make a smaller iOS build
    		UEBuildConfiguration.bCompileRecast = false;
    		UEBuildConfiguration.bCompileSpeedTree = false;
    		UEBuildConfiguration.bCompileAPEX = false;
    		UEBuildConfiguration.bCompileLeanAndMeanUE = true;
    		UEBuildConfiguration.bCompileForSize = true;
    		UEBuildConfiguration.bCompilePhysXVehicle = false;            
    
    		UEBuildConfiguration.bCompileBox2D = false;            
    		UEBuildConfiguration.bCompileCEF3 = false;
    	}
    }
    Also, keep in mind that the download is going to be ~40MB smaller for iOS 9 users due to app thinning. The IPA generated by UE4 is universal and contains both 32-bit and 64-bit binaries, but iOS 9 will only download the one the device can run.

    Comment


      #3
      Originally posted by manoelneto View Post
      In your project's target.cs file, make your SetupGlobalEnvironment() function look like this:

      Code:
      public override void SetupGlobalEnvironment(
      	TargetInfo Target,
      	ref LinkEnvironmentConfiguration OutLinkEnvironmentConfiguration,
      	ref CPPEnvironmentConfiguration OutCPPEnvironmentConfiguration
      	)
      {	
      	if (Target.Platform == UnrealTargetPlatform.IOS)
      	{
      		// to make World Explorers as small as possible we excluded some items from the engine.
      		// uncomment below to make a smaller iOS build
      		UEBuildConfiguration.bCompileRecast = false;
      		UEBuildConfiguration.bCompileSpeedTree = false;
      		UEBuildConfiguration.bCompileAPEX = false;
      		UEBuildConfiguration.bCompileLeanAndMeanUE = true;
      		UEBuildConfiguration.bCompileForSize = true;
      		UEBuildConfiguration.bCompilePhysXVehicle = false;            
      
      		UEBuildConfiguration.bCompileBox2D = false;            
      		UEBuildConfiguration.bCompileCEF3 = false;
      	}
      }
      Also, keep in mind that the download is going to be ~40MB smaller for iOS 9 users due to app thinning. The IPA generated by UE4 is universal and contains both 32-bit and 64-bit binaries, but iOS 9 will only download the one the device can run.
      Thanks for sharing this manoelneto! I'd like to ask, how can you be certain these Engine items are not being used in your game? Is there a proper way to check and confirm before doing this?

      I ask because I've followed the package slimming documentation before and found that whilst blacklisting certain things are fine when on Android, they will cause the game to break on iOS despite the base of the game being exactly the same for both platforms.

      Comment


        #4
        Originally posted by Sabun View Post
        Thanks for sharing this manoelneto! I'd like to ask, how can you be certain these Engine items are not being used in your game? Is there a proper way to check and confirm before doing this?

        I ask because I've followed the package slimming documentation before and found that whilst blacklisting certain things are fine when on Android, they will cause the game to break on iOS despite the base of the game being exactly the same for both platforms.
        The names of some of those settings should give some hints to what they are going to cut. Box2D is 2D physics, PhysXVehicle is vehicle physics, Recast (I think) is used for runtime collision generation (I think you need it if you have dynamically generated splineMeshComponents) and CEF is the Chromium browser used by the browser UMG widget (not used on iOS). SpeedTree is only good if you license SpeedTree and APEX is for GPU cloth, which doesn't work on mobile anyway.
        Last edited by manoelneto; 06-19-2016, 05:58 AM.

        Comment


          #5
          Hi,
          what do you look for if you have a Blueprint-only project (which won't have any .cs files)?

          Another post said to add some code (any code) to force the project to generate the .cs files,
          but will that stop the project from being recognised specifically as blueprint (content) only?

          Thanks.

          Comment


            #6
            Originally posted by ash22 View Post
            Hi,
            what do you look for if you have a Blueprint-only project (which won't have any .cs files)?

            Another post said to add some code (any code) to force the project to generate the .cs files,
            but will that stop the project from being recognised specifically as blueprint (content) only?

            Thanks.
            Thats correct, if you have a Code - Project you have to compile your project directly on a mac with XCode or have to fiddle around with cross compiling.

            Comment


              #7
              Ok, thanks pyr0t0n!

              Comment


                #8
                You can also use new Mobile Packaging Wizard: https://docs.unrealengine.com/latest...ckagingWizard/
                Realtime Database Firebase | Ultimate Mobile Kit Firebase | Extended Facebook | Universal Mobile Ads | Google Analytics

                Comment


                  #9
                  Both Apple and Google have drawn a line at the 100 MB mark, but with different limits: iOS games aren’t limited in size, but games that exceed 100 MB can’t be downloaded over a cellular network, just wifi. Android games are limited to 100 MB and are forced to store additional assets in Expansion packs. Oddly enough, those get downloaded at the same time on most devices.

                  Comment


                    #10
                    Hi,

                    I tried this on an empty code project and remote compiled from a PC on Macbook. But the size of IPA still the same.

                    I'm using a launcher version engine 4.13. Is github version engine needed for this to work?

                    Thanks!
                    Last edited by Jason.C; 11-17-2016, 01:43 AM.

                    Comment


                      #11
                      I'm also trying to pack my game in 100mb I was getting closer at 150mb in 4.13 and then I upgraded to 4.14 and now the ipa is 230Mb!!! My game is a ball floating in empty space with some particles why is so heavy?
                      So far I tried:
                      To delete anything beyond the files used
                      To set up in settings/ packages only the basic maps.
                      Build using the Project Launcher

                      Its there a way to see files size contribution to the ipa?


                      update: I cut closer to the original size in 4.13 my removing armv64 for iOS and keeping only armv7, now the ipa is 175Mb... still too big : /

                      update 2: 161Mb after cutting OpenGL ES 2.0
                      Last edited by arnaldo; 01-05-2017, 02:50 PM.

                      Comment


                        #12
                        I got my ipa size for Garden Wars to around 85-91MB on iOS (depending on device) & 47MB on Android. Was gonna write about it here but thought it would make a useful blog post

                        Reducing the size of your iOS or Android game (Unreal Engine 4)

                        Of course, it's a relatively small and simple game - all unlit shaders etc (but still a lot more complex than tappy chicken).

                        Hope the info there helps!
                        Dev Blog
                        Twitter: @TheRealSpoonDog
                        150 FREE Blueprint functions for your project

                        Comment


                          #13
                          v. useful, thanks [MENTION=340]Spoondog[/MENTION]

                          Comment


                            #14
                            Originally posted by Spoondog View Post
                            I got my ipa size for Garden Wars to around 85-91MB on iOS (depending on device) & 47MB on Android. Was gonna write about it here but thought it would make a useful blog post

                            Reducing the size of your iOS or Android game (Unreal Engine 4)

                            Of course, it's a relatively small and simple game - all unlit shaders etc (but still a lot more complex than tappy chicken).

                            Hope the info there helps!
                            Sir. This post delivers!
                            I could have a lije button...

                            Comment

                            Working...
                            X