The Use of Google PAD Plugin

Hello,
Is there anyone, that successfully use Google PAD plugin to update his app with On-Demand Delivery Mode.
I have no problem with Install-Time Mode, but this way you can’t patch the app with seperate packs. I did everything from unreal docs, not sure only for the part about “Including Chunks in your App Bundle Build”. I created the chunks with no problem, but can someone explain better this two parts:

  • Replace [assetpackname] with the name of the asset pack that the chunks will be bundled into.
  • Finally, you need to add a build.gradle file in the asset pack folder containing the following code.
    With some example probably?
    Thanks in andvance.

This document is kind of rude. Where should I store build.gradle in ? Which folder exactly ?
And [assetpackname] should be like pakchunk1-Android_ASTC ? If my chunk file named pakchunk1-Android_ASTC ??? So then where should I store it ? under [assetpackname]/src/main/assets ?

I got error like this !

Making .aab with Gradle...
UATHelper: Packaging (Android (ASTC)): To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/6.1.1/userguide/gradle_daemon.html.
UATHelper: Packaging (Android (ASTC)): Daemon will be stopped at the end of the build stopping after processing
UATHelper: Packaging (Android (ASTC)): Creating install-time assetpack for GooglePAD: assetpacks/install-time/obbassets
UATHelper: Packaging (Android (ASTC)): :assetpacks:install-time:obbassets
UATHelper: Packaging (Android (ASTC)): :assetpacks:fast-follow:pakchunk1-Android_ASTC
UATHelper: Packaging (Android (ASTC)): FAILURE: Build failed with an exception.
UATHelper: Packaging (Android (ASTC)): * Where:
UATHelper: Packaging (Android (ASTC)): Build file 'Z:\build.gradle' line: 1
UATHelper: Packaging (Android (ASTC)): * What went wrong:
UATHelper: Packaging (Android (ASTC)): A problem occurred evaluating root project 'app'.
UATHelper: Packaging (Android (ASTC)): > Plugin with id 'com.android.asset-pack' not found.
UATHelper: Packaging (Android (ASTC)): * Try:
UATHelper: Packaging (Android (ASTC)): Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
UATHelper: Packaging (Android (ASTC)): * Get more help at https://help.gradle.org
UATHelper: Packaging (Android (ASTC)): BUILD FAILED in 6s

Hi,
If you want to use Install-time delivery mode you don’t need to make gradle file and moving any .pak files. And it works just fine for me.
With the other two methods I have the same questions as you. But these errors are strange, it’s like GooglePAD plugin is disabled!

I know. What I’m facing is my game is over 1.1G So I was consider to use fast-forward extra with install-time. So I was setting up following UE4 documentation. But still got error and no helpful google information… So…

Fortunately, my game is 400mb so far and I gave up trying with fast-forward or On-demand mode.
Documentation in this part is bad, I had no luck finding better explanation too.
Something off the topic, do you have any problems with saving under Android? I even wrote bug report(but no answer so far), that saving works only after restarting the game and with Write/Read permissions granted.

And I think it will be more interesting to find out how to patch the game. For example if you want to update only some balance changes that concern only Data Tables, it’s bad in general to update GBs of assets everytime.
Can’t see if this is possible with UE as it always build main.obb file and no option to build patch.obb file, and then to include in the AAB.

I think main issue is UE need to update engine. More like unity. they got extra field to setup aab. For these all discussion. It really is engine issue. User need to findout how and principle ? nah…

Hi,
I found that [assetpackname] is unique name different from any other fast-follow and on-demand asset
pack name. So I used ‘assetpackname’ for test. Maybe any unique name will be ok.
Build/Android/gradle folder does not exist. So I made directory for myself.


My project directory is GameLiftTutorial.

I Made text file named ‘build.gradle’ for myself and it’s content is same as unreal document page.
You need not edit this file because it automatically found asset pack name and type.

apply plugin: 'com.android.asset-pack'

def fileparts = projectDir.absolutePath.replaceAll('\\\\', '/').tokenize('/')
def assetPackName = fileparts[fileparts.size()-1]
def assetPackType = fileparts[fileparts.size()-2]

assetPack {
    packName = assetPackName
    dynamicDelivery {
        deliveryType = assetPackType
        instantDeliveryType = assetPackType
    }
}

I made directory for pak file for myself and copy pak file.

Packaging and upload works well without error.
But I don’t implement API, so app does not run.
I think asset pack name(‘assetpackname’ in my test) will be used when implementing API.

Hi, Thanks for your answer, but can u tell me what do u have in the OBB file, as I don’t see any difference when I did everything like u do. I don’t have any error, but when I open the OBB file pak files are from folder: Saved\StagedBuilds\Android_ETC2"ProjectName"\Content\Paks, where by default are assets for Install-Time mode?
I don’t think Unreal even reaches that gradle file and do anything at all!

How does it “just work”? Can you please explain. My OBB is not included in the ABB

There is no way u don’t have OBB file in AAB.
If u open your AAB with WinRAR for example u will see the content(look the attached pic) enter obbassets folder then assets, there will see main.obb.png.
Screenshot_5


Not for me unfortunately.

It’s 60MB. I know the game is not in there.

Can I just made an obbassets folder and add it? I have no idea it could be opened in Win-Rar!

This is really strange. And no u can’t add this folder.
Please check your settings for packaging.
Did u enable GooglePAD plugin and if u don’t build for Distribution uncheck the option in the plugin settings.


Screenshot_6

Did you add ObbFilters to DefaultEngine.ini ?
From Unreal Document ‘Excluding Chunks From the OBB File’

[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings]
+ObbFilters="-*pakchunk1*"
+ObbFilters="-*pakchunk2*"
+ObbFilters="-*pakchunk3*"
+ObbFilters="-*pakchunk4*"
+ObbFilters="-*pakchunk5*"
+ObbFilters="-*pakchunk6*"
+ObbFilters="-*pakchunk7*"
+ObbFilters="-*pakchunk8*"
+ObbFilters="-*pakchunk9*"

I’m not sure that is the problem.

After that I changed many thing, but upload my packaged obb files screenshot

and my aab file screenshot

Full rebuild or deleteing ‘intermediate’ folders may fix the problem.

Hey hauk, thank u very much for your answer. It will be great if we can find what is the problem in my case. I never use any obb filter and already tried deleting Intermediate and Saved folders. Unfortunately I never got to see this folder “assetpackname” that includes the pak files in my AAB.
This is my result after building:

This is the content ot AAB:


This is the pak file in the assets folder, with whish I’m testing:

Can u please tell me what SDK, NDK and jdk are u using.
And maybe some packaging settings.
I’m testing some things and when I checked some setting related to OBB, the AAB don’t have any OBB inside, only base is included, it’s like there is some bug.

I found that you made directory ‘on_demand’.
On unreal document, it has to be ‘on-demand’.
I’m suspicious of that.

It would be good to add ObbFilters to DefaultEngine.ini
to exclude chunk files from the OBB File.

It would be nice if Epic could make a video tutorial
like chunkdownloader tutorial (ChunkDownloader Explained | Inside Unreal - YouTube)

I’m not sure about no OBB inside.
I’ll show you my build settings for reference.
I installed Android Studio 4.0 according to

This is my environment variable.
env

And unreal editor settings.



This is awesome, really appreciate the help, I was struggling with this alot, and finally someone to pay attention. Thanks alot.
I was thinking the same, about Epic making some video tutorial for Google PAD.
So when I changed the name, that I mistyped “on-demand” and exclude the pak from main.obb everything is looking ok in the AAB :). I still need to test how this will ectually working when download from Google Play, but I have onather question:

Do u have any knowledge about updating the app, but only with the changes u made? For example if u are making some game balance changes and need to update only Data Tables for the app, what should be done, to make Google Play updates only this for the user or u have to use your own way for updating.

I tried Google PAD a few months ago, I’m not sure how to update App.
To upload new AAB to Google Play, I need to update new store version.
Do I have to do a fresh download of the whole app if I do that?
And I used ShowCelllarDataConfirmation function(Google PAD API).
No response and I still don’t know why.

I couldn’t get answers to those questions so I tried the ChunkDownloader plugin.
There was a video tutorial so it was a bit easy to access.
Of course, in this case, you need a web server.

The problem here is that everything referenced by GameInstance have to be inside in
install-time pack(main.obb). Because GameInstance should be exist in app update screen.
If GameInstance references some Widget,
and the Widget references some Character blueprint,
and the Character references some Datatable…
Then GameInstance, Widget, Character, Datatable all have to be inside install-time pack recursively.
I haven’t been able to solve that problem.

For one reason or another, I’ve stopped paying attention to the game update system for now.
If you look at the ChunkDownloader plugin tutorial, maybe it’s about the update system.
It will be of great help.

Thanks again for your answer.
I was wondering if there is a easier way, like using Google platform for patching. Unfortunately I have the same conclusion so far, and I think ChunkDownloader will do the job, but as my game is single player right now I don’t want to mess with servers and online stuff. I was using GameSparks before for multiplayer strategy game, but don’t want to mess with such platforms, if possible.
My app is around 350 MB right now, but in early Beta stage and for the release will be bigger as the content will be more. Will wait fo now and look around for best solution.