Intro
Unreal Beamable Samples are distributed as a configuration of the Unreal SDK repository. We call these BeamProj
. The BeamProjOverride.txt
file at the root of the Unreal SDK project defines which of the BEAMPROJ_
plugins is the active sample.
To look at any given sample, you need to:
- Have our dependencies installed ( .NET and Docker)
- Clone our UnrealSDK repository.
- Run the
prepare_repo.sh
script (we run it through GitBash but any similar shell should work). - Change the contents of the
BeamProjOverride.txt
file to match theBEAMPROJ_Plugin
of your choice.- For example,
BEAMPROJ_HathoraDemo
sets the repository as the Hathora Demo sample. - You can find the correct
BEAMPROJ_
at the each sample's page.
- For example,
- Generate Project Files.
- Open the project's
.sln
and do a clean build of theEditor
target. - Open the editor and
Project Settings -> Beamable Core -> Beamable Environment
and verify that it is set toBeamProdEnv
before signing into a Beamable account.
Further instructions for seeing each sample can be found in their respective sample docs.
Why not a separate repository?
Workflow is important to us. We want to maintain these sample projects over the long run as a means to dogfood our own tools. So... our samples are part of our repo to minimize developer friction which translates to up-to-date samples and better stability for our product; which hopefully translates for a better product for the people making amazing games with it.
Clean Up
If you are using your own organization (the one you'll use to ship your game) to test these samples out, don't forget to delete the realms once you're done exploring the samples!
More Information (Irrelevant for non-Beamable Devs)ΒΆ
To make each plugin function as its own little UE project. We have to keep the Config
and .beamable
folders in sync. This is done by:
- Our custom
Target.cs
code that will make theConfig
and.beamable
folders at the root level of the repo be exact copies of the folders inside theOverrides
directory of eachBEAMPROJ_
folder.- In other words, the contents of those folders at the root level is defined by the selected
BEAMPROJ
.
- In other words, the contents of those folders at the root level is defined by the selected
- An editor subsystem called
BeamProjSync
that, while the editor is running, file-watches those directories and copies changes made over to the appropriateBEAMPROJ_
Overrides
folder.