[Plugin] Easy Google PAD




Marketplace Link

Easy Google PAD streamlines the complexities of Google’s Play Asset Delivery (PAD), handling the heavy lifting of implementation within your Unreal Engine workflow. This powerful integration empowers you to bypass Google Play’s 150MB file size limit, delivering a tailored and optimized user experience for your Android projects.

Enjoy enhanced flexibility with install-time, fast-follow, and on-demand asset loading. Drastically reduce CDN costs by strategically utilizing Google PAD’s generous free 2GB allocation, and boost your game’s visual quality without sacrificing a quick initial download. Easy Google PAD is built in C++ for maximum performance and minimal overhead, ensuring smooth integration into your development process.

Even projects exceeding 2GB benefit significantly from Easy Google PAD. Use the free 2GB tier for core elements like menus and initial levels, ensuring a smooth first-time experience, while keeping DLCs and rarely visited areas on your CDN for updates and flexibility. Intelligently download high-quality assets during gameplay or loading screens to showcase your game’s best visuals.

Ready to elevate your Android game development? Experience the power of Easy Google PAD today!

Changelog:
V2.0: (UE5.2+)

  • Decoupled from Unreal Engine’s GooglePAD plugin.
  • Migrated to the new play-core library separate library feature.
  • Updated to use Asset Delivery SDK 2.2.0 (Android 14 now supported!)
  • Minor bug & crash fixes
  • New documentation for V2+ setup

V1.2:

  • Updated enum conversion for debugging.
  • Minor bug fixes

V1.1.0:

  • Added a 4th delegate that provides updates on any relevant information and event
  • Added more edge cases to error capture delegate
  • Comments, function/variable descriptions have been refactored for easier to understand info
  • Minor bug fixes

Documentation

Example Project

Features:

★ Checks for previously downloaded asset packs and mounts them automatically

★ Initiate connection to google play backend to que up downloads

★ Check cellular data connection during downloads

★ Updates users on download progress through a delegate binding

★ Mount up and sets mount point of downloaded asset packs

★ Loads/Serializes downloaded asset data

★ Ability to access Object or Class from within a downloaded PAK file

★ [Get current platform] helper function

★ [Is Device a Tablet] helper function, used to differentiate between device types Phone/Tablet

★ [Get Project Name], helpful when setting up path strings

Example Project Features:

★ Setup example for all 3 different asset delivery modes

★ Static paths & dynamically gathered paths (Different device types)

★ How to access content inside asset packs PAK file

★ Removal of downloaded asset packs

★ UI texture setup based on device type

★ Shop DLC asset pack example

★ Download progress bar & text visuals

★ Heavily commented blueprints

Code Modules:

Runtime Module: EasyGooglePAD
Editor Module: EasyGooglePADEditor

Number of C++ Classes: Editor x2, Runtime x6

Supported Development Platforms: Android, Windows, Linux, Mac

Supported Target Build Platforms: Android

The product is currently waiting for review! Will keep this thread updated!

Will there be support for 4.27? 5.0 is very unstable currently and I had to revert back to 4.27 source code and editing to fulfill the conditions of the new Google Play Store requirements.

Hey Galvanicus, yes there will be support for 4.27 alongside 4.26 and 5.0!

Hi, first of all, great idea to make this kind of plugin. It will be very useful for most of the mobile indie devs like me :).
I have one major question, is it possible to patch a game with on-demand delivery mode, and if so, how?
The idea is when I publish an update of the game, and it’s just some fixes of Data Tables for example, the user to download only this pak file?
Thank you.

1 Like

Hey Mariyan, thank you for your interest! :smiley:
So, this is actually described over in GooglePAD Docs under “Asset updates”, but to summarize:

App updates for fast-follow and on-demand asset packs follow these steps:

  1. The patch for the app, including all assets, is downloaded to a secure location on the device.
  2. The app binary is updated; this includes any install-time asset packs.
  3. All previously-downloaded asset packs are invalidated.
  4. The patch for the assets is copied and applied to assets stored in the app’s internal storage.

They do describe it like the patches updates the binaries of each pak when you send another AAB up to google play. So leaving a pak as it previously was during last packaging should technically not update its current google play equivalent.

Then again I have not tried doing something like that so I can’t guarantee if it works or not.
I may give it a try here in the coming days, I’ll let you know if I do so!

If this is working it will be great. I will be the first to buy the plugin :).

@Ericho @Mariyan
It doesn’t work like that unfortunately. You would need to setup the chunk downloader for this and link it to a dedicated server.
What GooglePAD does is the following:

  1. Give you 1 GB initial download space for your app
  2. Give you an additional 512 MB fast follow download. What that means is that as soon as the user downloads your first batch, they also automatically download the FF batch right after.
  3. Give you 512 MB on demand. So if you have let’s say World 1, world 2 and world 3, you can set world 1 and all assets in the core chunk and set world 2 as a separate chunk and world 3 as another separate chunk. Those will always exist in the app on google play and the user will only use what they need. If they unlock world 2, then the on-demand is triggered and they download the content required.

All of this is packaged in your .aab file you submit. When you submit another .aab, afaik, it overwrites the previous and the user must download it all again.
They did mention in their blog post that google PAD uses a delta method to update but I haven’t seen it nor understand how it can be set so that in the future, you only download additional on-demand chunks instead of the whole application each time. If anyone could solve this and post a solution on how to do this, then it will solve a lot of issues for a lot of android developers in UE.

If what you want is to send live patches or live updates to the game, you cannot do so through google PAD. That is done through the chunk downloader.

All of this is packaged in your .aab file you submit. When you submit another .aab, afaik, it overwrites the previous and the user must download it all again.

Thank you for the clarification @Galvanicus

All things considered it makes sense. Would be nice if the feature was included though, considering CDN costs for bigger applications.

Status Update: I’ve been going back and forth with the Marketplace team a few times over small things, like product name and so on.
It should soon be available!

If it takes to long I’m considering releasing on Gumroad until further notice. I can collect emails and give you access to the product on UE marketplace once it releases there too.

2 Likes

The wait is over, we passed technical review and legal review and can finally launch the plugin!

Thank you for shown interest!

Useful plugin but pricey

Could you provide more context on the price point?
I would be happy to answer any questions or concerns you might have

hi.
I set up the PAD according to the documentation
After execution, it shows error ASSET_PACK_STORAGE_NOT_INSTALLED
What could be the reason

Hi IsFunTseng, I replied to your question over on the marketplace page, but I’ll recap it here in case you miss it!


My documents doesn’t cover all parts of the GooglePAD implementation.

Main reason for this is because 99% of the internal logic is handled by this plugin and doesn’t require user modifications or setup.

Your current account doesn’t own a copy of EasyGooglePAD, so I assume you’re trying to implement it yourself, for this you need to reference the official documentation on GooglePAD to find out what you’re missing.

For general questions related to GooglePAD but not the EasyGooglePAD plugin, please post the question on the official UE Android Forums:
https://forums.unrealengine.com/tags/c/development-discussion/platforms/mobile-development/31/android

PS: I’m glad the documentation have been of use to you, it contains a lot of useful information not found in the official documents!
I would suggest only using it as a reference though when you run into problems while following the official documentations along during your implementation.

Happy Holidays!
Ericho

1 Like

My project is more than 1GB after packaging AAB, does this plugin help me in any way?

Because I uploaded the AAB to the Googleplay, It shows that the Upfront Asset Pack is over 1GB.

If your goal is to reduce the “Download Size” value from your applications Store Front then yes, Easy GooglePAD can reduce that number! I myself have managed to get it as low as 45mb~

Without delving to deep into details and options and all that stuff,
There is 3 Asset Pack options when using GooglePAD, install-time and fast-follow, which both adds to the “Download Size” text displayed on your apps store front, and then there is on-demand, which does NOT add to the store front app size text.
With on-demand you still have to download the content once the application has booted up, the nice thing is that you can decide to do it all at once (With flashly graphics in the background from the game) OR as needed, the download can run in the background while the player is running around in a tutorial level or while they are navigating the main menu, the choice is completely yours.

TL;DR: YES! By using GooglePADs on-demand asset pack feature you can reduce the initial download size from play store.

Hope that answered your question!
Friendly regards,
Ericho

Thank you for your quick reply, I bought the plugin half an hour ago, although I don’t know if it works, but I think it should help.

But now I have a problem, how to ensure that the packaged AAB file is less than 1GB? I don’t seem to have seen the relevant documents, and I downloaded the example you provided, but because the example project is too small, I can’t study whether some parameters can affect the size of the AAB file.

How should I do to set the size of the AAB file?
I just ticked AAB file support in Unreal Engine, the APK and OBB options are unchecked.

I don’t seem to figure out how the plugin reduces the size of the AAB file.

The example projects main purpose is to showcase how things would work logically when you want to achieve certain things with GooglePAD, like fast-follow or Shop DLC purchases that unlocks content and some other things.

The first thing I suggest is to take a look at the documentation, it’s linked both in the top of this post and on the marketplace storefront! It’s a 30 pages PDF file, if you find it’s lacking information please send me an email and I’ll see if I can improve it :grin:

In regards to how the size is reduced, check asset pack types under the Q&A section of the PDF, I go over it in greater details on there.

Thank you for your purchase, I hope you’ll achieve what you hope to achieve with the help of EasyGooglePAD!

Hello, I added the PAK exclusion and managed to adjust the AAB file below 1GB, now I can upload to GOOGLEPLAY normally, but my on-demand resource also has 1.2GB(I have split it into 8 PAKs, each PAK resource is less than 512MB), so my ABB package still exceeds the maximum limit of 2GB.

So I checked the documentation of GOOGLEPAD, it seems that GOOGLEPAD only supports 2GB files? How do those games that are larger than 2GB in size do this? For example Call of Duty Warzone has an 8GB hot update, are they using their own CDN?

OBS: IMPORTANT INFO if your application is above 2GB in size!!

Yes! The bigger games you’ll find out there uses a CDN, usually side by side with GooglePAD.

GooglePAD is free to use, so if your game is 3GB, your most efficient and profitable solution is to use GooglePAD for 2GB and the last 1GB through your CDN.
Because CDNs cost scale with the project size.

This is a blog post on Google Play from a big company that saved a lot of money on CDN costs due to GooglePAD!

An example use cases of combining CDN and GooglePAD would be to use the extra 1GB from your own CDN in the areas of your application you rarely need/load for the user. That way you save money because not every user gets to that point in the game (Maybe the very latest area of the game that takes 10+ hours to reach) or that one Shop DLC that users can buy could be stored through your CDN.

GooglePAD PAKs should be used in as many common areas as possible simply because it’s free and efficient! :slight_smile:

Side note: It might not matter if the AAB file is above 2GB, when it goes through a Binary check on Google Play it will be split up into chunks with relevancy connections to one another, which means that the final download for your game may only be 1gb or even less.
The AAB contains ALL your files, all the texture compressions and so forth, which can make it bloat, and that’s totally fine and nothing to worry about.