What's the recommended way to get .obb files?

Is there a standard plug-in or code snippet for getting and downloading the obb files before even starting the game?
I’m using blueprints – I’m OK with C++ but generally don’t want to set up build-from-source for Unreal Engine, so if there’s some plugin, that’d be great.

Also, comment from the peanut gallery: I’d think that this would be one of the first things the Android deploy shell would take care of for me automatically, but apparently that’s not happening until 4.8.

Is anybody actually shipping a game on Android? How do you solve this?

Hi jwatte,

Unfortunately, until the 4.8 obb downloader goes into effect, the only way is to package your data in your .apk in order to guarantee that the device has a downloadable .obb. The APKPackaging part in ProjectSettings>Platforms-Android has the most recent instructions for the current release. I hope this helps!

Hi jwatte

I am currently testing the Beta builds of my game on Google Play. The only solution for now is to pack everything into the .apk file (the option in the project settings) and fit in below the 50MB file size limit. As my game is a very simple project I am currently at 43MB for the ETC1 build, but you do need to delete the fonts from the /Fonts folder before packaging to get that low, just leave the Roboto-Regular in place. You will find a little bit more of info in the thread linked in my signature.

Wait, can’t you just upload the OBB file as an apk extension file to Google Play?

Yes, you can upload it, but the app won’t download. Just read the info on the Android tab in the project settings. It’s all there.

Thank you all for your answers!

So, if I already have some C++ code in the project, is there something I can add to my app to make sure that the OBB is there?
Like, how do I know what name the OBB is supposed to have, and where do I get it from? Or does this require JNI magic that’s not available in 4.7.5?
Is there something I can backport from the 4.8 branch? (some pointers to file names and branch names would be helpful)

Sadly, I don’t quite fit in the 50 MB limit – the Unreal APK is 30 MB all on itself; my APK is another 50 MB if just building ETC1; 100 MB if building “all.”
I’m using some custom fonts and high-resolution materials for 3D objects (which is somewhat ironic, because the game plays like a 2D game…)

Hey guys if anyone here finds out how to do it before 4.8 please post it here and help us out! :slight_smile:

Hi MaxFights,

The explanation by rimau above is pretty much the extent of it for right now. The good news is 4.8 (for which I don’t have a date, however) is definitely on its way.

I’ve looked at this, and it seems the “easiest” solution is to update the Java wrapper project. In the main launch activity, first check for the epansion file. If it’s not there, rather than setting up the native code, pop an alert asking the user whether they want to download now or cancel. When they say “download,” call into the downloader library (available in the ADK) to kick off the download and show a progress bar.
It’s a bit of surgery on the Java code, but looks like it can be done. You’d need to check out the code from GitHub to work on this, though.

This is exactly what we are doing for 4.8, along with a splash screen behind the UI.

Any chance you could check in early code that can be back-ported to 4.7.5 locally? If I want to ship before May, waiting for 4.8 isn’t going to cut it :slight_smile:

Since we are talking about the 4.8. will there be a proper way to set the package and application names that are not the same and not reflecting the project’s folder name?

It is a really important thing once your app gets ready for publishing. If you did not plan to include it for 4.8 please do, it really does matter how your icon is signed on the players device. And all the Google Play rules and limitations that apply once you publish your .apk even for alpha testing only, make all this naming problems a major issue at the moment.

jwatte: I’m checking on the status of the OBB download code for you.

rimau: The package name may be changed freely in 4.7.5 in the Project Settings->Android section. [PROJECT] is replaced with the project name, but you may replace this with anything valid now and it will not cause a conflict any more. The project name is used internally in a number of places; I’ll have to investigate what may be done.

Thank you for the info Chris. So all we would need now, besides many other things ;), is to find out how to change the app name as it is shown by the system, both under the icon and in the app manager.

There does appear to be one easy way to change the displayed app name. Create a Build\Android\res\values folder in your project’s folder and create a strings.xml file there containing this:


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">MyAppName</string>
</resources>


replacing MyAppName with the name you want to use. It appears it doesn’t get written over on packaging so this will be used instead of the project name.

Oh, that’s nice! I wish the engine just created this for me when I set a dispay name, though.

Hmm… maybe this is what github is for? :slight_smile:

Chris, thank you for this one. It works and it looks so much better now, like a proper app name.
And since you seem to bring all the good news in this thread maybe you do know the answer to this question as well?
https://answers.unrealengine.com/questions/216042/android-minimum-os-version-setting-issue.html

The OBB downloading code was checked into the master branch this morning:

https://github.com/EpicGames/UnrealEngine/commit/2cddee3fb1e5761583f67a604385cb3ed9fbbea5

Testing is still ongoing.

This is a known bug in the store itself with alpha and beta uploads. It will show the correct version when published.