Version 1.0 Release Notes¶
Migrating from 1.0.0 PREVIEW¶
We highly recommend you start this process with no staged changes to your VCS and in an isolated local branch such that you can revert as needed.
- Download/Clone our Tagged Release.
- Extract it to a location in the same drive as your project.
- Copy/Paste the
beam_game_maker_init.shinto your project's root (next to your.uprojectfile). - Open a shell (we recommend
GitBashif you're usinggit) in your project root directory. - Run that script passing in the path to our extracted project.
# If you just want to install the BeamableCore plugin (no OnlineSubsystem)
. beam_game_maker_init.sh "/e/Path/To/Unreal/SDK/Root/Folder"
# If you want to install OnlineSubsystemBeamable Plugin too (or had it installed).
. beam_game_maker_init.sh "/e/Path/To/Unreal/SDK/Root/Folder" true
Access Denied
Unreal's integrations with various version control systems will sometimes make files Read-Only at the OS-level. If this is the case, you may see an Access Denied error when running the above script. Part of that script is deleting the old Plugins/BeamableCore folder and some of the uasset/umap files inside it might be flagged as read-only. To fix this, revert the changes, go to the Plugins/BeamableCore, and optionally Plugins/OnlineSubsystemBeamable, search for uasset/umap files and make them NOT read-only. On Windows, this can be done by the "Properties" panel of the file.
Please contact our customer support if the above does not work.
If the script is successfull, you should see something like this:
Found .uproject: ./YourProject.uproject
Installing the SDK in your project: YourProject
Tool 'beamable.tools' is up to date (version '3.0.1' manifest file E:\Path\To\Your\.config\dotnet-tools.json) .
Beamable Tools are installed. To call them use "dotnet beam" from any directory under your Unreal project root.
Already installed BeamableCore plugin. Removing it so we can re-install it.
Installed BeamableCore plugin.
# If you're using OnlineSubsystemBeamable, you should see these lines...
Already installed OnlineSubsystemBeamable plugin. Removing it so we can re-install it.
Copying OnlineSubsystemBeamable plugin's Beamable Content folder.
Copying OnlineSubsystemBeamable plugin's Build.cs file.
Copying OnlineSubsystemBeamable plugin's Source/OnlineSubsystemBeamable/Beamable files.
Installed OnlineSubsystemBeamable plugin.
# This means that we successfully upgraded your CLI and SDK version
Installed Beamable SDK successfully.
Now, if you have microservices, do the following steps. If not, skip to the next section.
- Open a shell inside your project root and run:
dotnet tool restore. - Unlink the Unreal Project by deleting the
.beamable/linked-projects.jsonfile. - Link it again using
dotnet beam project add-unreal-project . -
Disable Automatic code Generation by setting
<GenerateClientCode>false</GenerateClientCode>in every service'scsprojfile. -
Follow the CLI upgrade guide found here to ensure your microservice is now correctly configured.
-
Run your microservice from Rider to verify the upgrade worked.
-
If you want, re-enable Automatic Code Generation by setting
<GenerateClientCode>true</GenerateClientCode>in every service'scsprojfile. - If you don't want, you can read about manual generation here
In the Unreal Solution:
-
There were a number of renames and changes, so the project is likely NOT compiling at this point; if most of your work was in Blueprints, those may not be compiling even if the editor is.
-
Target.csfile andBeam.Configure___functions- We now add code to your project's
Target.csfile. This code is callable from anyTarget.csandBuild.csfiles. - Before, you had to manually add the various
BeamableCoremodules to these things by hand. Now, you can call the respective functions based on the Type ofTargetorModule. - You can refer to the intro guide to see which functions can be called in which
Target/Modules.
- We now add code to your project's
Initialization is now manual in all cases.
- Instead of
RegisterOnStarted/RegisterOnReady, you should explicitly invoke:InitSDKorInitSDKWithFrictionlessAuth.RegisterOnReadyno longer exists. Its semantics were hard to explain and provided little benefits.- It was replaced by
RegisterOnUserReady. - The semantics for this is: "runs at the end of every user's login process, when all the
UBeamRuntimeSubsystemshave already prefetched data for that user".
- It was replaced by
RegisterOnStartedremains the same.- A few delegates have been renamed for clarity:
FRuntimeStateChangeHandler=>FBeamRuntimeHandlerFUserStateChangedCode=>FUserStateChangedHandlerCode
- We removed
IsFirstAuthandbDidFirstAuthRunin favor of a simplerIsLoggedIn(FUserSlot)function with which you can build.- The new semantics are slightly different and just tell you that there's a user in that slot or not; you are free to handle "Return to main menu" situation as you wish.
- Read more about the initialization flow here.
Microservice Clients suffered a MAJOR change.
- Microservices are now generated into their own exclusive Plugin. This makes the Microservice Client code accessible from any other Plugin or Module in your project.
- This means a few things:
- You must add this plugin to all relevant
Target.csandBuild.cs. - You must add this plugin to your Project's
.uprojectfile (can be done via the editor, but since you might not be able to compile --- you can do it manually too). - If you were using OnlineSubsystemBeamable:
- Delete the
AutoGenfolder from inside theCustomerdirectory. - Add the
MicroserviceNameMicroserviceClientsplugin as a dependency to the OnlineSubsystemBeamable plugin.
- Delete the
- You must add this plugin to all relevant
- If you haven't already, regenerate the microservice clients via by rebuilding them (or running the
dotnet beam generate-clientcommand).- This will create a new Plugin in your project called
MicroserviceNameMicroserviceClients. - This Plugin can be added to any other Plugin or your own project to gain access to the microservice clients and types.
- About code-changes:
- The new clients no longer prefix every generated type with
MicroserviceName; it only does so for the Request types. - You'll have to go through the code and use the newly generated types.
- This change was made to provide you with more control over naming data-types shared between microservice and Unreal and reduce the common-case verbosity of these names.
- This means you can fix name conflicts as they appear in your project instead of us preemptively doing it.
- The new clients no longer prefix every generated type with
- This will create a new Plugin in your project called