SG Patcher - modern game update system. The system split your game into the main part and downloadable part. It works with platforms: Android/IOS/Windows/Mac/Linux/UWP.
Reasons why you might need this system:
You need to distribute your game, but don’t know how.
You need to make additional updates for your application on the Play Market/App Store
You want to update the game or download additional files after starting the game.
You want your users to be able to download more than 100/200 mb over Cellular Data.
You want your users to download only the modified part of the game.
You want to make your own game launcher for desktop platforms.
You often update the game and want players to quickly receive your updates.
You want to add scenes/materials/animations and other resources in one click without Play Market/AppStore.
You do not want to rewrite the entire project to work with AssetBundles.
Your game is difficult to use AssetBundles.
You want to check the integrity of your game before launching.
With our system you will be able to configure the update process in a few minutes. You will have to just fill in a few fields, and after that the system itself will pack all the necessary game resources and send them to the server. SGPatcher does not require special servers. Use any storage that can be accessed via FTP/SFTP or Amazon S3 or even Google Drive.
SG Patcher compares the previous version of the game and the new one and tracks changes in files, which allows to make patches with very small size.
If you need to update scripts on mobile platforms with SGPatcher, this is easy to do, add new scripts to the project, use them on scenes, send the update using SGPatcher. Next, you need to send a new version of scripts to PlayMarket/AppStore. The version in PlayMarket/AppStore will be synchronized with the SGPatcher update pack.
Features:
Binary diff algorithm
In-game update
Support: Android, IOS, etc
Support IL2CPP
Localization (Multilingual)
SG Resources (Alternative to Unity “Resources”, SGResources are not included in the main build, but come with a downloadable part)
Resume download support
Offline mode
Integrity check
Launcher
Google Drive
Amazon S3
FTP/SFTP
RockTomate CI/CD
.NET Standard 2.0 API
Different degrees of protection against breakdowns and hacking
Works in Catalina(OSX)
Lock launch app without Launcher
WPF and Xamarin
Plugin supports: Any OS except WebGL.
Unity client supports: Any OS except WebGL(Android, IOS, etc).
Hello! Thanks for reply! We recorded a video lesson for working with Asset Bundles. Now it is in the process of video editing. It will take literally several hours. While we wait, you can go to our Discord channel there is video without processing. https://discord.gg/3kXeRzv
This looks amazing, by the first look.
Still have to go through videos to get a better understanding (I’m trying to be like thorough lol, otherwise - it’s already sold). It seems like you’ve done great job, especially supporting Android/iOS.
I do have question or two, kinda specific maybe but if you can find time to answer shortly, would be appreciated.
Could this be used to simply reduce game install size (APK/IPA) and then load content after install?
Like, for example - I pack up just enough in build to have “menu scene” working and then load maps/players and other typical content that takes a lot of build size - like textures, scenes etc via this system?
I’m essentially trying to figure out would this be a way simpler alternative to typical assetbundles flow?
IF Question #1 answer is yes, then would it be safe to assume that something like this would work:
A) Published APK, for example, of a game is version 1.00 (or any that has this system inside for first time).
B) “Update” or patch is 1.01 and ready on server, containing everything that is not built.
C) Upon opening the game, system detects that there is new version available and simply pulls the content & sorts things out?***
*** Version 1.01 obviously being the “full game”.
I hope I was able to explain my thoughts. I’m developing for years now but have been so lucky to avoid AssetBundles or any remote content in games, however it’s way overdue to get to that, we’re getting very limited with current game development in these areas where build size and game size matters.
So, yeah I bought the asset - I figured it’s doable way I asked, after going through manual and video.
Looks good! Fairly easy to setup.
With some thoughts into project structure - should be just nice to use. For example, in my projects I’ve moved to using strict directory strucure already long time ago (e.g. _Scenes, _Resources, _Scripts) so all checks out.
However, I did stumble upon an interesting issue. Please see image attached.
After I configured & tested FTP connection, sorted out asset bundles settings (all fields except assemblies as I figured it’s optional, which was to be OK for quick test) - and made a build versoin in “Versions tab”; I got to this exception.
Actually, first one was that directory VERSIONS is not existing. Then, since there was no obvious workaround for that - I made it myself in project root directory. Then after - it started to give this exception upon clicking the “Build and patch” button in “Versions” tab.
Up to this point of writing this, I have exhausted all - what might seem as - Windows 10 security settings, by even granting full possible rights to all users on that folder. Not sure if that might be the issue or I missed something in configuration?
I am using Unity 2019.3.6f, am on Android target platform and tried to build with AssetBundles option as mentioned above. Any thoughts/insights on this VERSIONS folder and possible cause for bug/issue?
EDIT: I did notice that files actually get built and uploaded to FTP regardless of this VERSION folder exception, but after running the APK - I get fully same message as Floddi, few posts up.
Absolutely, all of these points occur. In addition, if an error occurs during application, the program will reinstall the main package.
Also:
There is a function to change the start version, see the documentation.
There is an integrity check function. It can be like protection against cracker programs that replace dlls. If you select “Need to check integrity before start” in the settings SG Patcher will not allow fake dll to run.
here’s the settings - all relevant I hope - from Unity editor:
SG settings:
all should check out
scenes that would be remote content are in “Content” folder, rest are in build
_Resources is now empty at the moment, but that’s likely also irrelevant to case?
Build settings:
Loader as first scene, also - I am using “AfterLoad” scene to be next one, which is not packed into remote data, that’s deliberate at this point just to go through patching sucessfully (not getting the loader exception)
I was able to get it working at around 50% success rate:
in editor - when I click “Clear cache” in tool window - it’s the only way it works
if I press play without clearing cache - it throws storage exception (which Floddi reported and myself)
on Android device and Bluestacks - not working, immediately goes to same error (app installed first time)
Let me know if you can make something out of this, I know it’s not ideal - but I can share the project as well if need be (just a dummy project with nothing inside aside plugin and dummy empty scenes).
Thank you!
EDIT:
I also noted that, I guess due to VERSIONS folder exception - whenever I do make a new version, and should then see 2 (according to manual - where I could set any version as “initial”), but instead it just always shows highest version.
I have a question. You say that the scenes should not be included in the build settings.
But if I do not include a scene in build settings the scene don’t get a ID, and then it breaks my other assets since they only works with scene ids.
Is this correct from what I understand from the documentation?
Ah so this won’t work with World Streamer scenes or Sectr scenes then since I think the levels have to be included in the build settings for it to work…
This was really what I was looking for, but I guess it’s not going to be possible. Thanks anyway