Skip to content

Commit

Permalink
Docs names fixes
Browse files Browse the repository at this point in the history
Leinnan committed Sep 26, 2024
1 parent 01e680b commit b4b8564
Showing 26 changed files with 72 additions and 40 deletions.
Original file line number Diff line number Diff line change
@@ -94,7 +94,7 @@ The last part of the id is the only one you should edit through the **Content Wi
The SDK fetches the content manifest before the `OnBeamableStarted` callback is
triggered. By default, it downloads the content manifest and each individual piece of content. You can enable and disable this behaviour it can be configured to do so inside `Project Settings -> Beamable Runtime`.
![DownloadIndividualContent](./Images/Unreal_Content_DownloadIndividualContentOnStart.png#center)
![DownloadIndividualContent](./images/content-download-individual-on-start.png#center)
The SDK also supports automated content updates: once a user is signed into Beamable, our `UBeamContentSubsystem` begins to listen for notifications that the realm's content manifest has been updated from Beamable's server. If that happens, we will re-download the manifest. Again, we only download individual content pieces if that setting is on. There is an API you can use to manually download individual content pieces: `FetchIndividualContentBatchOperation` and `FetchIndividualContentOperation`.
### The Content Manifest
Original file line number Diff line number Diff line change
@@ -50,7 +50,7 @@ Here are the constraints around these generated clients:
- They follow the same pattern as our Auto-Generated UE APIs and are generated from the Microservice's OAPI docs.
- They'll ONLY generate types that are found in `[________Callable]` methods of your Microservices.
- The generated Plugin is NOT editable by the user (it gets destroyed/recreated with every new generation).
- In general, the type-mapping seen in the [Content section](../Feature Guides/Unreal SDK - Content.md#supported-content-serialization) is what you can expect.
- In general, the type-mapping seen in the [Content section](../features/content.md#supported-content-serialization) is what you can expect.

!!! note "Customize the Generation?"
We do have plans to enable you to declare the intent to generate a particular type via an attribute in the future. However, actually customizing the outputted code is unlikely as it is already simple enough to write wrapper around it should you want a different style interface.
File renamed without changes.
14 changes: 14 additions & 0 deletions Docs/docs/features/stores.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<style>
img[src*='#center'] {
display: block;
margin: auto;
}
</style>

Beamable's Store feature allows the game maker to create a storefront in their application. Users can purchase items with virtual currency.

!!! note "Unreal Project Requirements"
Beamable does support buying listings with in game IAPs, but for Unreal SDK there is no support for it yet. It will be added in future releases.

In Unreal Stores are represented by `UBeamStoreContent` class which is subclass of `UBeamContentObject`. It does contain a list of links to `UBeamListingContent` types.
Listing type contain all the information about the offer, requirements for player, costs and benefits.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -54,33 +54,33 @@ Please, follow along these instructions:
#### Making your First Request
Once your Editor opens, you'll see the Beamable Logo in your upper-right bar, next to the Settings dropdown. This button opens the Beamable window.

![BeamableWindowLocation](Images/Unreal_Intro_BeamableWindowLocation.png#center)
![BeamableWindowLocation](Images/intro-beamable-window-location.png#center)

In this window, you can login to the account you just created in the Beamable portal. When you do, you should see the window below:

![](Images/Unreal_Intro_BeamableWindowOpened.png#center)
![](Images/intro-beamable-window-opened.png#center)

Here's some a quick tour of Beamable terminology:

- `Realm` is an isolated data environment (think of it as a branch, but for your backend).
- By default, you have one of these these for your `dev`, `staging` and `prod` environments.
- The `ApplyToBuild` button sets the realm information in the `Config/DefaultEngine.ini` file of your project. Whatever realm is configured in this file, is the realm your build will be pointed towards. [Dedicated Server Builds](../Use Guide/Unreal SDK - Dedicated Servers) don't need to care about their baked in `TargetRealm`. They fetch their target realm from Environment Variables.
- `Content` opens up the **Content Window**. See the [Content Docs](../Unreal SDK - Content) for more info.
- The `ApplyToBuild` button sets the realm information in the `Config/DefaultEngine.ini` file of your project. Whatever realm is configured in this file, is the realm your build will be pointed towards. [Dedicated Server Builds](../guides/dedicated-servers.md) don't need to care about their baked in `TargetRealm`. They fetch their target realm from Environment Variables.
- `Content` opens up the **Content Window**. See the [Content Docs](../features/content.md) for more info.
- `Open Portal` opens the **Portal** in your default web-browser already logged in with your editor user and pointed at your current realm.
- `Microservices` opens the **Microservice Window**. See the [Microservice Docs](../Unreal SDK - Microservices) for more info.
- `Microservices` opens the **Microservice Window**. See the [Microservice Docs](../features/microservices.md) for more info.
- `Reset PIE Users` (Play-In-Editor) removes your PIE users locally cached data.
- By default, when you sign into a Beamable account in PIE (in your game code), Beamable will use the same user until you delete the files `Saved/Beamable/UserSlots/PIE_XXXXX.json`. This button does that for you. After you click it, the next time you enter PIE, a brand new Beamable player account will be created in your current realm.

Now that you are familiar with the **Beamable Window**, you are ready to make your first Beamable request (we'll do it via Blueprint, but you can do the exact same flow in C++ by making these calls in your Project's `GameMode` class's `BeginPlay` function).

To get started, open your Level Blueprint and add the following pattern:

![](Unreal_Intro_OnBeamableReady.png#center)
![](images/intro-on-beamable-ready.png#center)

The `BeamRuntime` is an `GameInstanceSubsystem` that is responsible for controlling the SDK's lifecycle and, in clients, player authentication.

!!! warning "Runtime Concepts Guide"
The [Runtime Concepts Guide](../Unreal SDK - Runtime Concepts) explains how the Beamable Runtime works. Please read it after you are done with this guide as the default Beamable configuration might not be the best fit for your type of game and it'll give you examples of common setups.
The [Runtime Concepts Guide](runtime-concepts.md) explains how the Beamable Runtime works. Please read it after you are done with this guide as the default Beamable configuration might not be the best fit for your type of game and it'll give you examples of common setups.

Now that you have this event hooked up, you can add your first **Beam Flow Node**. These nodes are custom nodes that wrap around the following functionality:

@@ -91,7 +91,7 @@ Now that you have this event hooked up, you can add your first **Beam Flow Node*
- A set of Custom Event nodes (for success, error and completion) of the request being made to the Beamable backe-end.
- Because of this, Unreal does not allow the use of these nodes (or any node that expands to Event nodes) outside of **EventGraphs** or **Macros used in EventGraphs**.

![Unreal_Intro_BeamFlowNode.png](Images/Unreal_Intro_BeamFlowNode.png#center)
![intro-beam-flow-node.png](images/intro-beam-flow-node.png#center)

With the SDKs default configuration and the above setup, you can enter PIE (Play-In-Editor). You should see several requests's responses being written to your Output Log window. After you see the final `GetMe` request, you can exit PIE knowing you've very first request to the Beamable backend.

@@ -102,6 +102,6 @@ This verbose logging will print out ***everything*** about the request being mad

When reporting an issue, try to reproduce the issue with the logs of the relevant systems set to Verbose and attach them to the issue.
#### Next Steps
Now that you've made your first Beamable Request, take a look at the [Unreal SDK - Runtime Concepts](../Unreal SDK - Runtime Concepts) page so you understand more about how the SDK is structured and the various paths to using it and the best path for your game.
Now that you've made your first Beamable Request, take a look at the [Runtime Concepts](runtime-concepts.md) page so you understand more about how the SDK is structured and the various paths to using it and the best path for your game.

If you'd like to see a more complicated example running on Beamable, take a look at [our Samples](../../Samples/Unreal SDK - Samples Intro).
If you'd like to see a more complicated example running on Beamable, take a look at [our Samples](../samples/intro.md).
Original file line number Diff line number Diff line change
@@ -123,7 +123,7 @@ Feel free to copy-paste them as a template of how to implement and reason about
Beam-Flow nodes are the purple nodes with Beamable Icons that you can find. There are two flavors of them; one are Raw Requests that you can use to hit our APIs; the other is the Operation Beam Flow node.
![beam-flow-node](./Images/Unreal_Operations_And_Waits_BeamFlowNodes.png#center)
![beam-flow-node](./Images/operation-and-waits-beam-flow-nodes.png#center)
Beamable Operation Flow Nodes assume a few things:
Original file line number Diff line number Diff line change
@@ -38,12 +38,12 @@ The `UBeamUserSlots` Engine Subsystem is responsible for:

The image below describes how the SDK's lifecycle injects itself into UE's lifecycle:

![InitFlow](Images/Unreal_Runtime_Concepts_InitFlow.png#center)
![InitFlow](images/runtime-concepts-init-flow.png#center)

The next image show a high-level description of the authentication flows supported by the SDK:


![](Images/Unreal_Runtime_Concepts_AuthFlow.png#center)
![](Images/runtime-concept-authflow.png#center)

Now that you have a high-level understanding of the SDK's initialization flows, read up on how to achieve the two most common Sign Up and Login flows among the ones we provide.
## Player Sign Up and Login Flows with Beamable
@@ -74,7 +74,7 @@ In PC/Console titles, often the user can sign-in and up from inside the game. Th

Start by turning off Frictionless Authentication in `Project Settings -> Beamable Core -> Authenticate Frictionless (...)`.

![](Unreal_Runtime_Concepts_DisableFrictionlessAuth.png#center)
![](images/images/runtime-concepts-disable-frictionles-auth.png#center)

Next, in your `BeginPlay` implementation, register a function to run when the SDK has successfully started via `UBeamRuntime::RegisterOnStarted`. If the SDK has already started when you call this function, it'll run the callback you provide it as its parameter immediately; if not, it'll wait until the SDK is fully ready and then call it.

@@ -126,6 +126,6 @@ The lowest layer of systems are shared between the SDK's UE Editor integration a
- These are integrated with our `UBeam____Api` subsystems.
- `BeginOperation` is effectively the same a creating a new promise.
- `TriggerOperationSuccess`, `TriggerOperationError` and `TriggerOperationCancelled` should be called when you want to complete the Operation.
- This is a somewhat complex subsystem so we recommend you read [Operations & Waits](../Unreal SDK - Operations & Waits).
- This is a somewhat complex subsystem so we recommend you read [Operations & Waits](../operations-and-waits).

The systems above are used by various environments the Beamable SDK runs in: PIE, Editor, Dedicated Server Builds and regular game builds. Their code is pretty heavily commented and complex; still, feel free to read it and figure things out that way.
12 changes: 6 additions & 6 deletions Docs/docs/index.md
Original file line number Diff line number Diff line change
@@ -30,16 +30,16 @@ Most of the Beamable workflows are enabled through the Beamable CLI; our editor

The SDK is tightly integrated with the CLI in some ways more than others. For example:

- [Content](../Feature Guides/Unreal SDK - Content), being designer-focused, has its own UE-familiar content editing UI so you can edit the various JSON blobs that defines your game's content.
- [Microservices](../Feature Guides/Unreal SDK - Microservices), however, being more engineer focused, leans more directly on the CLI.
- [Content](features/content.md), being designer-focused, has its own UE-familiar content editing UI so you can edit the various JSON blobs that defines your game's content.
- [Microservices](features/microservices.md), however, being more engineer focused, leans more directly on the CLI.

In other words: **The Beamable CLI is invisible to the user where it needs to be and explicit to users that need to work with them.**
## Where to start?

Regardless of who you are, we recommend run through the [Introduction to the SDK](../Use Guide/Unreal SDK - Intro) and [Runtime Concepts](../Use Guide/Unreal SDK - Runtime Concepts) documents. After this, it depends on what you're game is or what you are looking to do.
Regardless of who you are, we recommend run through the [Introduction to the SDK](guides/intro.md) and [Runtime Concepts](guides/runtime-concepts.md) documents. After this, it depends on what you're game is or what you are looking to do.

- If you are a game maker looking to implement simple and common back-end features, take a look at the docs for [Inventory](../Feature Guides/Unreal SDK - Inventory), for currency and items, and [Stats](../Feature Guides/Unreal SDK - Stats), for player-scoped key-value stores.
- If you are a game maker looking to implement highly specific features, browse the documentation for [Content](../Feature Guides/Unreal SDK - Content) and [Microservices](../Feature Guides/Unreal SDK - Microservices) to think about how to structure your game's data and custom data with Beamable.
- If you are looking to integrate Beamable into your game through Unreal's `IOnlineSubsystem`, take a look at the [Online Subsystem Beamable](../Feature Guides/Unreal SDK - Online Subsystem).
- If you are a game maker looking to implement simple and common back-end features, take a look at the docs for [Inventory](features/inventory.md), for currency and items, and [Stats](features/stats.md), for player-scoped key-value stores.
- If you are a game maker looking to implement highly specific features, browse the documentation for [Content](features/content.md) and [Microservices](features/microservices.md) to think about how to structure your game's data and custom data with Beamable.
- If you are looking to integrate Beamable into your game through Unreal's `IOnlineSubsystem`, take a look at the [Online Subsystem Beamable](features/online-subsystem.md).

If you have any questions, feel free to contact us through one of our Customer Success channels.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
19 changes: 11 additions & 8 deletions Docs/mkdocs.yml
Original file line number Diff line number Diff line change
@@ -57,16 +57,19 @@ plugins:

nav:
- Use Guide:
- Getting Started: 'Use Guide/Unreal SDK - Intro.md'
- Runtime Concepts: 'Use Guide/Unreal SDK - Runtime Concepts.md'
- Operations & Waits: 'Use Guide/Unreal SDK - Operations & Waits.md'
- Dedicated Servers: 'Use Guide/Unreal SDK - Dedicated Servers.md'
- Getting Started: 'guides/intro.md'
- Runtime Concepts: 'guides/runtime-concepts.md'
- Operations & Waits: 'guides/operations-and-waits.md'
- Dedicated Servers: 'guides/dedicated-servers.md'
- Feature Guides:
- Content: 'Feature Guides/Unreal SDK - Content.md'
- Microservices: 'Feature Guides/Unreal SDK - Microservices.md'
- Content: 'features/content.md'
- Microservices: 'features/microservices.md'
- Stores: 'features/stores.md'
- Samples:
- Samples Intro: 'Samples/Unreal SDK - Samples Intro.md'
- Hathora Demo: 'Samples/Unreal SDK - Hathora Demo.md'
- Samples Intro: 'samples/intro.md'
- Hathora Demo: 'samples/hathora-demo.md'
- Discord Demo: 'samples/discord-demo.md'
- Steam Demo: 'samples/steam-demo.md'

copyright: |
&copy; 2024 <a href="https://github.com/Beamable" target="_blank" rel="noopener">Beamable</a>
33 changes: 24 additions & 9 deletions docs_build.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
#!/bin/sh

pip install mkdocs-material
pip install mkdocs-glightbox
pip install mkdocs-autorefs

argument=${1:-"nothing"}
if [ $argument = "serve" ]; then
cd Docs
mkdocs serve
fi
main() {
name_pattern='^[a-zA-Z0-9./-]+$'

# Use 'find' to recursively list all files and directories
find "Docs/docs/" -print0 | while IFS= read -r -d '' path; do
name=$(basename "$path")

# Check if the name contains only lowercase letters and hyphens
if [[ ! "$name" =~ $name_pattern ]]; then
echo "Invalid name: $path"
exit 2
fi
done
pip install mkdocs-material
pip install mkdocs-glightbox
pip install mkdocs-autorefs

argument=${1:-"nothing"}
if [ $argument = "serve" ]; then
cd Docs
mkdocs serve
fi
}
main

0 comments on commit b4b8564

Please sign in to comment.