[Plugin] Easy Google PAD

Thank you for your answer.
But GooglePlay does have a 2GB size limit for AAB files. I just uploaded a 2.16GB AAB file, and GooglePlay reminded me that it exceeded 2GB( I split the PAK to make it on-demand), but I think I can reduce it to less than 2GB as long as I optimize the resources.

I successfully compressed the project to 1.96GB, successfully downloaded the additional PAK using the plug-in, and successfully mounted it, and everything is running normally.

But I found a problem, when I turn off WIFI and cellular data during the download process, “OnDownloadFailure” does not return any event, do you know what the problem is?(I confirmed that I have bound the event.)

Glad to hear you had a smooth implementation!

There is a loop going on while the download breaks halfway through that tries to verify end users internet accessibility, when Wi-Fi is lost it should prompt you about using your Cellular Data to continue the download as well.

If the popup doesn’t happen and GooglePAD is waiting for an update to the Confirm status(Unknown / Pending states), it could technically just loop infinitely, or until Wi-Fi is turned back on.

There is a planned update to overhaul the error capture functionality,

  • Add more edge cases
  • More informational return values
  • A new potential delegate return that will update you on things like you’re currently experiencing, without returning as a failed download.
    It will most likely be something like “DownloadStatusInfo” and it’ll return info about where in the download you’re currently at and things like that!

I can’t promise any dates, but it shouldn’t be later than the soon to come UE 5.2 update.

OBS: If you send me an email I could help you make small edits to the Plugin that should solve your current issue, if you decide you can’t wait for the next update.

Thank you for your answer, but my game will not be released this year, I am just testing it in advance, if you plan to update the network status in the future, I am very happy to look forward to it.

In addition, I also had a BUG during the test, I am not sure if it is, when the download progress is 100%, the OnDownloadFailure event is executed, but I forgot to print the message, so I am not sure what the problem is, it Only appeared 1 out of 10 tests.

Alright, sounds good! :slight_smile:

The bug you are referring to is when the download is complete, something goes wrong during the “Mounting” part of the process, where it installs and verifies the files into your application.

It’s not something I can control (It’s using the AssetRegistry module), but when it happens you’ve already finished downloading all files so an easy solution is to retrigger the AssetPack install node and it will skip directly to the mounting part and it will retry mounting all the PAKs.
For those rare occasions were it happens, it works the second time around everytime in my experience.

Anyhow, keep an eye out for the update! I hope it will make the product even more streamlined and easy to understand. An update to the PDF documentation will happen at the same time!

An update has been made and should be available soon (Up to 2 weeks is my estimate)!
Will update documentation and product page to reflect the changes while we wait for the update to go live.

Details for the update:

  • 4th Delegate implemented that represents the current status of the GooglePAD process.
    Can be used for debugging and/or gameplay.
  • Added more edge case scenarios for Error captures.
  • More informational error reporting, previously was a few ambiguous ones.
  • Refactoring comments and function/variable descriptions
  • Minor bug fixes

Should be a lot easier to control and/or understand what is happening during the GooglePAD process for live applications now!

Will post here again once the update is live, stay tuned!

It’s nice to be able to implement new features quickly.

But before that, I also encountered a strange problem. At present, the plug-in seems to have no way to run compatible with the IOS platform? I get some error logs on IOS version:

[2023.05.11-04.57.58:858][ 0]LogStreaming: Error: Couldn’t find file for package /Script/EasyGooglePAD requested by async loading code. NameToLoad: /Script/EasyGooglePAD
[2023.05.11-04.57.58:858][ 0]LogStreaming: Error: This will hitch streaming because it ends up searching the disk instead of finding the file in the pak file.
[2023.05.11-04.57.58:858][ 0]LogStreaming: Error: Found 1 dependent packages…

Yes, GooglePAD is not compatible with the iOS system.
It’s designed for the Google Play Store by Google, they have not announced any plans to support iOS in the future either unfortunately.

I mistakenly thought that this log would crash the game, but it doesn’t seem to have any effect.

Impeccable timing with my update last night!
Had I been a day later 4.27 wouldn’t get the latest update (Due to how Epic Games handles the marketplace, Plugins can only update the latest 3 versions).

With the engine dropping the day after last update though, expect updates to take longer before going through the verification process by Epic.

Version 1.1 should be available for 4.27+ now!

Support for Engine Version 5.2 is pending approval, should be available within the next few days.

Thank you all for your support, if you find a moment to spare, consider leaving a review as it helps tremendously! :heart:

There is a bug present in the 4.27 (Plugin version 1.1.0) version that causes an error output for Mount Path, if you are on 4.27 and using the plugin, either download a 5.0+ version of the plugin and copy the differences over to your version or send me an email for instructions on how to remove it.

Unreal marketplace is structured in a way were plugins can only update the files for the last 3 engine versions and with 5.2 released that means 4.27 can no longer be updated.

1 Like

When we reload our core game on changing languages, we get an error which crashes Android devices:

2023-12-14 14:13:14.757 17993-19113/? D/UE: [2023.12.14-12.13.14:757][355]LogGarbage: Warning: Disregard for GC object EasyGooglePADObject /Engine/Transient.EasyGooglePADObject referencing World /Game/Maps/StartingLevel.StartingLevel which is not part of root set

We solved this by modifying the c++ code as follows:

/**
 * Global Object that handles all GooglePAD related functionalities.
 */
UCLASS()
class EASYGOOGLEPAD_API UEasyGooglePADObject : public UObject
{
	GENERATED_BODY()
		
private:
	// * UObject World Override, required for world reference used in timers.
	virtual class UWorld* GetWorld() const override;
	UPROPERTY(Transient)
	TWeakObjectPtr<UWorld> World; // must be weak so that GC doesnt get angry that something in the root set wants to keep the world alive
public:
	void SetWorldRef(UWorld* WorldContextReference);

and

#include "Engine/Engine.h"
#include "Engine/World.h"
#include "Serialization/ArrayReader.h"

class UWorld* UEasyGooglePADObject::GetWorld() const
{
	return World.Get();
}

Sorry for the inconvenience this has caused, It’s a minor detail that I seem to have overlooked

Also, thank you for sharing your solution with everyone! I’ll make sure to reflect these changes into the plugin

Hopefully your experience with EGP have been better for the most part!

1 Like

Version 2.0 Is finally available through the marketplace!

A few key changes:

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