diff --git a/docs/index.md b/docs/index.md
index 3ec747fba..fcf5b0460 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -21,5 +21,5 @@ New to Beamable? Get up and running in minutes:
Need help? We've got you covered:
-- **[Community Portal](https://portal.beamable.com/)** - Connect with other developers
-- **[GitHub Repository](https://github.com/beamable/BeamableProduct)** - Source code and issues
\ No newline at end of file
+- **[Support Hub](https://beamable.com/support)** - Connect with Beamable experts
+- **[GitHub Repository](https://github.com/beamable/BeamableProduct)** - Source code and issues
diff --git a/docs/unity/getting-started/installing-beamable.md b/docs/unity/getting-started/installing-beamable.md
index 3fb161bcb..a73e58a63 100644
--- a/docs/unity/getting-started/installing-beamable.md
+++ b/docs/unity/getting-started/installing-beamable.md
@@ -4,7 +4,7 @@ Welcome to Beamable! This guide will walk you through the steps required to inst
!!! info "Compatibility"
- • Beamable supports Unity versions 2021.3 to 6000.3 and is compatible with all template types
+ • Beamable supports Unity versions 2021.3 to 6000.3 and is compatible with all template types
• Beamable supports Windows, Mac, iOS, Android, and WebGL platforms
## Setting Up an Account in the Beamable Portal
@@ -33,7 +33,7 @@ Congratulations, the Beamable SDK is now installed!
## Log into Beamable
-Open the Beamable Login Window by clicking the Beamable button in the Unity toolbar. Now see the Beamable Login Window prompts for user account credentials. Enter the Organization Alias and Password you created when you signed up for Beamable.
+Open the Beamable Login Window by clicking the Beamable button in the Unity toolbar. Now see the Beamable Login Window prompts for user account credentials. Enter the Organization Alias, Email, and Password with which you signed up for Beamable.
{: style="max-width: 400px;" }
@@ -47,7 +47,7 @@ Navigate to the _Beam Library_ by finding it from the Beamable Button in the top
In the _Beam Library_, find the _Admin Console_ card and click the _Add Prefab_ button to add the prefab to an empty scene.
{: style="max-width: 700px;"}
-Enter play-mode, and hit the `~` character (the same character as `` ` ``). This should open up the _Admin Console_. You can type in a bunch of commands like `help`, or `dbid`.
+Enter play-mode, and hit the `~` character (the same key as `` ` ``). This should open up the _Admin Console_. You can type in a bunch of commands like `help`, or `dbid`.
!!! Note
The `dbid` command will print out the current player's id. Learn more in the [frictionless auth section](./../user-reference/beamable-services/identity/frictionless.md).
@@ -56,9 +56,9 @@ Enter play-mode, and hit the `~` character (the same character as `` ` ``). This
## Beam CLI Dependency
-The Beamable plugin will automatically install the Beam CLI into your Unity project. The Beam CLI is a developer tool for managing Beamable resources like Microservices, Content, and more. The Beamable Unity plugin relies on the CLI for interacting with Beamable. Your Unity project is a valid Beamable CLI project, which means you can also use the CLI directly if required.
+The Beamable plugin will automatically install the Beam CLI into your Unity project. The Beam CLI is a developer tool for managing Beamable resources like Microservices, Content, and more. The Beamable Unity plugin relies on the CLI for interacting with Beamable. Your Unity project is a valid Beamable CLI project, which means you can also use the CLI directly if required.
-You should expect to see a `.beamable` folder and a `.config`folder in your Unity project's file structure. The `.beamable` folder contains Beamable-specific information about your project, and the `.config` folder is a special `dotnet` folder that defines the version of the Beam CLI. If you are using source control, both of these folders should be included.
+You should expect to see a `.beamable` folder and a `.config`folder in your Unity project's file structure. The `.beamable` folder contains Beamable-specific information about your project, and the `.config` folder is a special `dotnet` folder that defines the version of the Beam CLI. If you are using source-control, you should include both of these folders in source control.
The `.config` folder has a file called `dotnet-tools.json` which specifies the version of the Beam CLI being used by the Beamable Unity SDK. By default, the Beamable SDK will maintain this number, and you should not edit it by hand.
@@ -85,4 +85,4 @@ New versions of the Beamable SDK may depend on different versions of the Beam CL
!!! danger "User Beware: Changing the CLI version may cause issues."
- Starting in SDK 3.0, you _may_ disable the SDK's explicit control of the `dotnet-tools.json` by enabling the `Beamable/Editor/AdvancedCli/Disable Version Requirement` setting in Unity's Project Settings window. If you do this, please understand that the Beamable SDK may stop functioning, as it is trying to use an unplanned version.
+ Starting in SDK 3.0, you _may_ disable the SDK's explicit control of the `dotnet-tools.json` by enabling the `Beamable/Editor/AdvancedCli/Disable Version Requirement` setting in Unity's Project Settings window. If you do this, please understand that the Beamable SDK may stop functioning, as it would then be trying to use an unplanned version.
diff --git a/docs/unity/samples/account-deletion.md b/docs/unity/samples/account-deletion.md
index 459ebd1a8..231d1b6f3 100644
--- a/docs/unity/samples/account-deletion.md
+++ b/docs/unity/samples/account-deletion.md
@@ -20,7 +20,7 @@ For these reasons, Beamable provides the Forget User API. This document outlines
There are a couple different ways to forget user info:
-• **Beamable Portal**: "Forget user" is available as an administrative option. This is useful in a scenario where a player "requests" deletion of their account info, and is followed up by a customer support member.
+• **Beamable Portal**: "Forget user" is available as an administrative option. This is useful in a scenario where a player requests deletion of their account info, and is followed up by a customer support member.
• **Self-Service**: The [`object/accounts/{objectId}/admin/forget`](https://docs.beamable.com/reference/delete_object-accounts-objectid-admin-forget) API can be called from a microservice to allow users to initiate their own account info deletion.
@@ -38,10 +38,10 @@ Based on guidelines for user account deletion, this method should be paired with
## Option 2. Forget User via Code
-**The script can be downloaded as a GitHub Gist here:** [DeletePlayerInfoService.cs](https://gist.github.com/beamable-gists/4ee1ecc72475eca5e6f63aecfdba762a)
+**The script can be downloaded as a GitHub Gist here:** [DeletePlayerInfoService.cs](https://gist.github.com/beamable-gists/4ee1ecc72475eca5e6f63aecfdba762a)
_The full script can also be found at the bottom of this document._
-The API is only callable by an admin (e.g., a microservice). Therefore, you will need to follow the steps to create a microservice before this script can be called. See the [Microservice Framework](../user-reference/cloud-services/microservices/microservice-framework.md) for more info.
+The API is only callable from a privileged context such as a microservice. Therefore, you will need to follow the steps to create a microservice before this script can be called. See the [Microservice Framework](../user-reference/cloud-services/microservices/microservice-framework.md) for more info.
The API used here is [`object/accounts/{objectId}/admin/forget`](https://docs.beamable.com/reference/delete_object-accounts-objectid-admin-forget). The `objectId` is the player's account ID, **not** their realm ID. Typically, a user's realm ID is equal to the account ID+1 since both these values are created in rapid succession.
diff --git a/docs/unity/samples/lightbeam-account.md b/docs/unity/samples/lightbeam-account.md
index 5ff664fae..1ff1bcd1c 100644
--- a/docs/unity/samples/lightbeam-account.md
+++ b/docs/unity/samples/lightbeam-account.md
@@ -2,7 +2,7 @@
The Account Management Lightbeam can be opened through the Beam Library window.
-There are no prerequisites to use this Lightbeam. This sample will allow you create multiple accounts, optionally attach email & password credentials, and configure the accounts' alias and avatar.
+There are no prerequisites to use this Lightbeam. This sample will allow you create multiple accounts, optionally attach email & password credentials, and configure the accounts' aliases and avatars.
!!! tip "Read the SDK Docs"
Find more information about the Accounts SDK by reading the [Username / Password](../user-reference/beamable-services/identity/username-password.md) Section
@@ -14,4 +14,4 @@ There are no prerequisites to use this Lightbeam. This sample will allow you cre
-->
-
\ No newline at end of file
+
diff --git a/docs/unity/user-reference/beamable-services/bi/ab-testing-overview.md b/docs/unity/user-reference/beamable-services/bi/ab-testing-overview.md
index 42e0112b9..2dc07608c 100644
--- a/docs/unity/user-reference/beamable-services/bi/ab-testing-overview.md
+++ b/docs/unity/user-reference/beamable-services/bi/ab-testing-overview.md
@@ -11,7 +11,7 @@ The concept of A/B Testing is to run experiments across a cohort, segmented set,
- **Increase KPIs** - Key performance indicators, including retention, can be isolated and improved through testing
- **Increase Revenue** - By improving KPIs, improve revenue
- **Decrease Costs** - Game makers can focus on a leaner feature-set which is proven to matter to players
-- **Decrease Risks** - Roll out new gameplay features more frequently to a subset of the players. Ensure its ready before releasing to everyone
+- **Decrease Risks** - Roll out new gameplay features more frequently to a subset of the players. Ensure it is ready before releasing to everyone
Generally you will want to follow a process:
@@ -182,7 +182,7 @@ GetCloudDataManifestResponse playerManifestResponse =
**Loading Data**
-Loop through the `meta`. There will be 0 or more values. The implementation here depends on the needs of the project. In this example, each loop iteration is parsed as Json and tested for compatibility with the `MyPlayerProgression` data type.
+Loop through the `meta`. There will be 0 or more values. The implementation here depends on the needs of the project. In this example, each loop iteration is parsed as JSON and tested for compatibility with the `MyPlayerProgression` data type.
```csharp
foreach (CloudMetaData cloudMetaData in playerManifestResponse.meta)
diff --git a/docs/unity/user-reference/beamable-services/bi/analytics-overview.md b/docs/unity/user-reference/beamable-services/bi/analytics-overview.md
index d4db2eec5..a87a2caf8 100644
--- a/docs/unity/user-reference/beamable-services/bi/analytics-overview.md
+++ b/docs/unity/user-reference/beamable-services/bi/analytics-overview.md
@@ -35,25 +35,25 @@ These KPI's, defined below, are meant to help you in the following ways:
| KPI | Detail |
|-----|--------|
-| platform_session_install | detect when a player is first created |
-| platform_session_daily | detect daily activity of the player, good for measuring retention |
-| platform_session_session | provides you with session data |
-| platform_session_session_end | provides you with end of session data |
-| platform_ua_attribution | provides you with user acquisition data related to campaigns |
-| platform_cohort_join | data to identify when a player joins a cohort (segment) |
-| platform_commerce_external_revenue | data to identify when a player makes real money purchases from an external source |
-| platform_commerce_hard_purchase | data to identify when a player makes real money purchases (Hard Currency) |
-| platform_commerce_virtual_purchase | data to identify when a player spends virtual currency |
-| platform_commerce_failed_purchase | data to identify when purchases have failed |
-| platform_entitlement_entitlement | Player has been granted an entitlement |
-| platform_stats_stats | player stat has been modified |
-| platform_group_group_create | group has been created |
-| platform_group_group_invite | player has been invited to a group |
-| platform_group_group_join | player has joined a group |
-| platform_group_group_leave | player has left a group |
-| platform_group_group_application | player has applied to join a group |
-| platform_administration_change_email | player has changed their email |
-| platform_administration_reset_password | player has reset their password |
+| `platform_session_install` | detect when a player is first created |
+| `platform_session_daily` | detect daily activity of the player, good for measuring retention |
+| `platform_session_session` | provides you with session data |
+| `platform_session_session_end` | provides you with end of session data |
+| `platform_ua_attribution` | provides you with user acquisition data related to campaigns |
+| `platform_cohort_join` | data to identify when a player joins a cohort (segment) |
+| `platform_commerce_external_revenue` | data to identify when a player makes real money purchases from an external source |
+| `platform_commerce_hard_purchase` | data to identify when a player makes real money purchases (Hard Currency) |
+| `platform_commerce_virtual_purchase` | data to identify when a player spends virtual currency |
+| `platform_commerce_failed_purchase` | data to identify when purchases have failed |
+| `platform_entitlement_entitlement` | Player has been granted an entitlement |
+| `platform_stats_stats` | player stat has been modified |
+| `platform_group_group_create` | group has been created |
+| `platform_group_group_invite` | player has been invited to a group |
+| `platform_group_group_join` | player has joined a group |
+| `platform_group_group_leave` | player has left a group |
+| `platform_group_group_application` | player has applied to join a group |
+| `platform_administration_change_email` | player has changed their email |
+| `platform_administration_reset_password` | player has reset their password |
## Game Maker User Experience
@@ -291,43 +291,43 @@ SELECT * FROM information_schema.columns WHERE table_schema = '[your de_ID goes
The above query will yield the following results. And as you can see the information provided in this table is immensely valuable. Beamable by default calculates a bunch of information for you making it easy to extract MAU, DAU, Session Length, Spending habits and more.
-| Column Name | Data Type | Detail |
-| :--------------------------- | :----------- | :------------------------------------------------------------------------------------ |
-| event_id | bigint | Id of the event |
-| act_date | varchar(256) | Date of the event as a string |
-| act_time | timestamp | timestamp of the event |
-| gamer_tag | bigint | PlayerId of the player |
-| e.spend3d | varchar(256) | How much the player has spent in the last 3 days |
-| e.sessions14d | varchar(256) | how many sessions the player has had in the last 14 days |
-| e.corrid | varchar(256) | a correlation id which can be used across tables |
-| e.sessiondays | varchar(256) | has played a session at least once for a total of N days. These are not consecutive. |
-| e.spendtotal | varchar(256) | total amount spent |
-| e.sessions28d | varchar(256) | how many session the player has had in the last 28 days |
-| e.device.platform | varchar(256) | what platform they were using when this event was written |
-| e.sessionstotal | varchar(256) | total number of sessions |
-| e.purchasestotal | varchar(256) | total purchases |
-| e.spend7d | varchar(256) | total amount spent in the last 7 days |
-| e.timebetweensessionsminutes | varchar(256) | average time between sessions in minutes |
-| e.firstdailysession | varchar(256) | was this event the first daily session? |
-| e.sessions3d | varchar(256) | how many sessions in the last 3 days |
-| e.purchases7d | varchar(256) | how many purchases in the last 7 days |
-| e.dayssinceinstall | varchar(256) | how many days since the player installed |
-| e.sessions7d | varchar(256) | how many session in the last 7 days |
-| e.spend28d | varchar(256) | how much have they spent in the last 28 days |
-| e.ip | varchar(256) | the ip address of the player for this session event |
-| e.purchases14d | varchar(256) | total purchases in the last 14 days |
-| e.purchases28d | varchar(256) | total purchases in the last 28 days |
-| e.purchases3d | varchar(256) | total purchases in the last 3 days |
-| e.spend14 | varchar(256) | total spend in the last 14 days |
+| Column Name | Data Type | Detail |
+| :----------------------------- | :----------- | :------------------------------------------------------------------------------------ |
+| `event_id` | bigint | Id of the event |
+| `act_date` | varchar(256) | Date of the event as a string |
+| `act_time` | timestamp | timestamp of the event |
+| `gamer_tag` | bigint | PlayerId of the player |
+| `e.spend3d` | varchar(256) | How much the player has spent in the last 3 days |
+| `e.sessions14d` | varchar(256) | how many sessions the player has had in the last 14 days |
+| `e.corrid` | varchar(256) | a correlation id which can be used across tables |
+| `e.sessiondays` | varchar(256) | has played a session at least once for a total of N days. These are not consecutive. |
+| `e.spendtotal` | varchar(256) | total amount spent |
+| `e.sessions28d` | varchar(256) | how many session the player has had in the last 28 days |
+| `e.device.platform` | varchar(256) | what platform they were using when this event was written |
+| `e.sessionstotal` | varchar(256) | total number of sessions |
+| `e.purchasestotal` | varchar(256) | total purchases |
+| `e.spend7d` | varchar(256) | total amount spent in the last 7 days |
+| `e.timebetweensessionsminutes` | varchar(256) | average time between sessions in minutes |
+| `e.firstdailysession` | varchar(256) | was this event the first daily session? |
+| `e.sessions3d` | varchar(256) | how many sessions in the last 3 days |
+| `e.purchases7d` | varchar(256) | how many purchases in the last 7 days |
+| `e.dayssinceinstall` | varchar(256) | how many days since the player installed |
+| `e.sessions7d` | varchar(256) | how many session in the last 7 days |
+| `e.spend28d` | varchar(256) | how much have they spent in the last 28 days |
+| `e.ip` | varchar(256) | the ip address of the player for this session event |
+| `e.purchases14d` | varchar(256) | total purchases in the last 14 days |
+| `e.purchases28d` | varchar(256) | total purchases in the last 28 days |
+| `e.purchases3d` | varchar(256) | total purchases in the last 3 days |
+| `e.spend14` | varchar(256) | total spend in the last 14 days |
### What Tables are available?
As you use Beamable, more and more data will be available. That means more tables will also be available. By default there are a select few tables available.
-- platform
-- platform_session_session
-- platform_session_session_end
-- platform_session_install
+- `platform`
+- `platform_session_session`
+- `platform_session_session_end`
+- `platform_session_install`
But as you use Beamable features and as you write custom Telemetry events more data and tables will automatically be available. So it's important that you query to see what tables are available from time to time. The following query will provide you with a list of tables that are available to you at any given point in time.
diff --git a/docs/unity/user-reference/beamable-services/bi/segmentation-overview.md b/docs/unity/user-reference/beamable-services/bi/segmentation-overview.md
index 7bcea6e09..1d620ee19 100644
--- a/docs/unity/user-reference/beamable-services/bi/segmentation-overview.md
+++ b/docs/unity/user-reference/beamable-services/bi/segmentation-overview.md
@@ -27,11 +27,11 @@ Most of the segmentation in Beamable is to create a cohort by a _stat_. You can

-In this trail, we also added these values to complete and save the trial.
+In this trial, we also added these values to complete and save the trial.
-
+
-What this is doing is creating a trail that can be joined by a cohort. As you will learn in the A/B Testing area, that trials can be used in various places to run experiments. The above will create a cohort called "7thDayReturningPlayers" and all actions can be performed on this cohort from various other parts of Beamable.
+What this is doing is creating a trial that can be joined by a cohort. As you will learn in the A/B Testing area, that trials can be used in various places to run experiments. The above will create a cohort called "7thDayReturningPlayers" and all actions can be performed on this cohort from various other parts of Beamable.
### Upload CSV to Create a Cohort
diff --git a/docs/unity/user-reference/beamable-services/game-economy/inventory-overview.md b/docs/unity/user-reference/beamable-services/game-economy/inventory-overview.md
index b95db88f5..e13ec672a 100644
--- a/docs/unity/user-reference/beamable-services/game-economy/inventory-overview.md
+++ b/docs/unity/user-reference/beamable-services/game-economy/inventory-overview.md
@@ -68,7 +68,7 @@ You can see bellow the flows when getting and granting the Inventory Items with
### `IFederatedInventory` interface
-TO use the Federated Inventory you should start by implementing the `IFederatedInventory` interface in your microservice. Be aware that this interface also implements `IFederatedLogin` because federated authentication is a prerequisite, as mentioned earlier. `T` must be your implementation of the `IThirdPartyCloudIdentity` - a very simple interface that requires you to define a unique name/namespace for your federation. This enables you to have multiple federation implementations in a single microservice.
+To use the Federated Inventory you should start by implementing the `IFederatedInventory` interface in your microservice. Be aware that this interface also implements `IFederatedLogin` because federated authentication is a prerequisite, as mentioned earlier. `T` must be your implementation of the `IThirdPartyCloudIdentity` - a very simple interface that requires you to define a unique name/namespace for your federation. This enables you to have multiple federation implementations in a single microservice.
```csharp
public class MyFederationIdentity : IThirdPartyCloudIdentity
@@ -98,7 +98,7 @@ public class MyFederationService : Microservice, IFederatedInventory GetInventoryState(string id)
}
```
-The important thing to emphasize here is the `id` argument. It's the same external account id that you return from the `Authenticate` method. If you want to access the player's id in the Beamable system, you can use `this.Context.UserId`
+The important thing to emphasize here is the `id` argument. It's the same external account id that you return from the `Authenticate` method. If you want to access the player's id in the Beamable system, you can use `this.Context.UserId`
As an example, you can use the wallet address as an external user identifier when implementing blockchain federation.
### `StartInventoryTransaction` implementation
@@ -199,4 +199,4 @@ You can also check those other samples:
- [Genamon - a game that uses Generative AI and blockchain with federated authentication and inventory](https://github.com/beamable/genamon-polygon)
- [Polygon/Ethereum authentication and inventory federation](https://github.com/beamable/polygon-example)
-- [Solana/Phantom authentication and inventory federation](https://github.com/beamable/solana-example)
\ No newline at end of file
+- [Solana/Phantom authentication and inventory federation](https://github.com/beamable/solana-example)
diff --git a/docs/unity/user-reference/beamable-services/game-economy/stores-overview.md b/docs/unity/user-reference/beamable-services/game-economy/stores-overview.md
index 1225b8141..345bad031 100644
--- a/docs/unity/user-reference/beamable-services/game-economy/stores-overview.md
+++ b/docs/unity/user-reference/beamable-services/game-economy/stores-overview.md
@@ -435,7 +435,7 @@ Here we are setting the namespace to **payments** and then the key is **client_a
!!! danger "Security Warning"
- This feature is not secure unless you track this from within a MicroService and validate the purchase. It is highly advisable to do so in order to not allow a customer to spoof or false track a purchase.
+ This feature is not secure unless you track this from within a MicroService and validate the purchase. It is highly advisable to do so in order to not allow a customer to spoof or falsely track a purchase.
Once your configuration has been setup to allow this API to function, then you can use the `.Api.PaymentService.Track` API to track the purchase. The various fields of the tracking request may be arbitrary strings of your choice, but for the sake of consistency you may want to match the patterns used by the Beamable Commerce Service.
diff --git a/docs/unity/user-reference/beamable-services/game-economy/virtual-currency-overview.md b/docs/unity/user-reference/beamable-services/game-economy/virtual-currency-overview.md
index b7a7adc05..6f1836b5d 100644
--- a/docs/unity/user-reference/beamable-services/game-economy/virtual-currency-overview.md
+++ b/docs/unity/user-reference/beamable-services/game-economy/virtual-currency-overview.md
@@ -12,9 +12,9 @@ Currencies can be configured from the [Content Manager Editor](../profile-storag
The currencies for a given player can be managed in several ways, depending on your use case.
-**Client-Authoritative (Unity code):** If your game does not include networked multiplayer and can tolerate cheating, allowing the client to read/write their own currencies is the simplest option. Examples of this can be seen in the bellow. Note that your currency must have "Write Self" enabled.
+**Client-Authoritative (Unity code):** If your game does not include networked multiplayer and can tolerate cheating, allowing the client to read/write their own currencies is the simplest option. Examples of this can be seen below. Note that your currency must have "Write Self" enabled.
-**Server-Authoritative (Microservice):** A much more secure way to handle currency modifications is via a Microservice. In this scenario, the client is not able to modify their currencies directly, it is handled on the server. You can check the [Microservices](../../cloud-services/microservices/microservice-framework.md) section for more information.
+**Server-Authoritative (Microservice):** A much more secure way to handle currency modifications is via a Microservice. In this scenario, the client is not able to modify their currencies directly, because it is handled on the server. You can check the [Microservices](../../cloud-services/microservices/microservice-framework.md) section for more information.
**Portal (Development):** Player currencies can also be modified through the Portal; Note that this should only be used during development or to make corrections to a player account.
@@ -24,7 +24,7 @@ The Beamable API provides helper functions to subscribe to changes in the curren
The main API components are [`InventoryUpdateBuilder`](https://csharp.cdocs.beamable.com/latest/classBeamable_1_1Common_1_1Api_1_1Inventory_1_1InventoryUpdateBuilder.html#details) which builds a list of one or more currency operations to execute, and [`InventoryService`](https://csharp.cdocs.beamable.com/latest/classBeamable_1_1Api_1_1Inventory_1_1InventoryService.html#details) which executes the currency operations.
-_Note: This Beamable system handles player inventory **and also** player currency._
+_Note: This Beamable system handles player inventory of items **and also** currency._
### Adding Currency
@@ -273,4 +273,4 @@ namespace Beamable.Examples.Services.InventoryService.InventoryCurrencyExample
}
}
}
-```
\ No newline at end of file
+```
diff --git a/docs/unity/user-reference/beamable-services/identity/federated-identity.md b/docs/unity/user-reference/beamable-services/identity/federated-identity.md
index d9b3eb316..a90dc355d 100644
--- a/docs/unity/user-reference/beamable-services/identity/federated-identity.md
+++ b/docs/unity/user-reference/beamable-services/identity/federated-identity.md
@@ -15,7 +15,7 @@ You should first create a microservice or use an existing one. You can bundle mu
### Implementing an IFederationId interface
-Create an implementation of IThirdPartyCloudIdentity in Beamable/Common (or any shared assembly).
+Create an implementation of IThirdPartyCloudIdentity in Beamable/Common (or any shared assembly).
This will create a "tuna" namespace for your new authentication scheme. Namespace will be a part of the authentication endpoint path. In the following example, TunaCloudIdentity will correspond to `/your_microservice/tuna/authenticate` and HaddockCloudIdentity will correspond to `/your_microservice/haddock/authenticate`.
```csharp
diff --git a/docs/unity/user-reference/beamable-services/identity/frictionless.md b/docs/unity/user-reference/beamable-services/identity/frictionless.md
index 240788af2..11f377084 100644
--- a/docs/unity/user-reference/beamable-services/identity/frictionless.md
+++ b/docs/unity/user-reference/beamable-services/identity/frictionless.md
@@ -1,6 +1,6 @@
# Frictionless Authentication
-Beamable’s SDK provides frictionless authentication by default when the SDK is initialized. This is completely done for you under the hood. It is quite simple, and thus the Code Sample for it is short. However, this is an opportunity for you to learn more about the Beamable SDK and what it does for you when it is initialized from any “prefab”, service or API.
+Beamable’s SDK provides frictionless authentication by default when the SDK is initialized. This is completely done for you under the hood. It is quite simple, and thus the Code Sample for it is short. However, this is an opportunity for you to learn more about the Beamable SDK and what it does for you when it is initialized from any prefab, service or API.
{: style="height:auto;width:600px"}
diff --git a/docs/unity/user-reference/beamable-services/identity/html-sign-in.md b/docs/unity/user-reference/beamable-services/identity/html-sign-in.md
index e70578b44..4e895fbfa 100644
--- a/docs/unity/user-reference/beamable-services/identity/html-sign-in.md
+++ b/docs/unity/user-reference/beamable-services/identity/html-sign-in.md
@@ -133,4 +133,4 @@ function login(evt) {
!!! warning "CID-scoped logins"
When the scope field is in `{{cid}}.{{pid}}` form, that is a realm-scoped login, the standard login for players. For some purposes, such as administrative tools, you may want a CID-scoped login, which will yield a token that is pertinent to your organization as a whole, rather than a specific realm.
- In the case of CID-scoped logins, you must include 'customerScoped=true' in the body.
+ In the case of CID-scoped logins, you must include `"customerScoped":true` in the body.
diff --git a/docs/unity/user-reference/beamable-services/identity/providers/facebook-sign-in.md b/docs/unity/user-reference/beamable-services/identity/providers/facebook-sign-in.md
index c7ae4c25b..98e482d56 100644
--- a/docs/unity/user-reference/beamable-services/identity/providers/facebook-sign-in.md
+++ b/docs/unity/user-reference/beamable-services/identity/providers/facebook-sign-in.md
@@ -11,10 +11,10 @@ Below is a typical Facebook usage pattern. You initiate from your UI that you wa
### Configure Facebook App
-In orther to setup the Unity Project you need to configure the Facebook Dashboard:
+In order to setup the Unity Project you need to configure the Facebook Dashboard:
- The app must be connected to a business and the business should be verified.
-- Since we are using email you need to add it's permissions: Dashboard / Use Cases / Customize the `Authenticate and request data from users with Faebook Login / Permissions and Features => add email
+- Since we are using email you need to add its permissions: Dashboard / Use Cases / Customize the `Authenticate and request data from users with Facebook Login / Permissions and Features => add email

@@ -55,7 +55,7 @@ private void FB_AuthCallback (ILoginResult result)
## Beamable Login with AccessToken
!!! info "Beamable SDK Initialization"
- The following assumes that you have initialized the Beamable SDK and it is stored in _beamContext variable.
+ The following assumes that you have initialized the Beamable SDK and it is stored in a variable named `_beamContext`.
```csharp
_beamContext = BeamContext.Default;
await _beamContext.OnReady;
@@ -166,4 +166,4 @@ If you have implemented a default Facebook authentication flow using Beamable, y
### Questions?
-If you have questions about these answers or filling our the Data Protection Survey, please email [support@beamable.com](mailto:support@beamable.com).
\ No newline at end of file
+If you have questions about these answers or filling our the Data Protection Survey, please email [support@beamable.com](mailto:support@beamable.com).
diff --git a/docs/unity/user-reference/beamable-services/identity/providers/google-play-game-services-sign-in.md b/docs/unity/user-reference/beamable-services/identity/providers/google-play-game-services-sign-in.md
index 2c31c9a19..2648f5ccf 100644
--- a/docs/unity/user-reference/beamable-services/identity/providers/google-play-game-services-sign-in.md
+++ b/docs/unity/user-reference/beamable-services/identity/providers/google-play-game-services-sign-in.md
@@ -39,12 +39,12 @@ In orther to setup the Unity Project you need to Set the GPS Secret to Beamable
### Additional iOS Setup
-Make sure that your game flow takes into account fact that the iOS is not supported platform by Google Play Game Services.
+Make sure that your game flow takes into account the fact that iOS is not a supported platform by Google Play Game Services.
## Google Play Game Services Integration
-The Beamable SDK contains a wrapper for GPGS behavior on Android (iOS is not supported). The provided class is called SignInWithGPG, which can be initialized after following steps from [Google documentation](https://developers.google.com/games/services/console/enabling). It does contain two Actions that developer can subscribe to: `OnLoginResult` and `OnRequestServerSideAccessResult`. In order to perform login as third party to Beamable both of them must return successfully—first returns info about local login, second one about getting server side access token that is required for Beamable backend.
+The Beamable SDK contains a wrapper for GPGS behavior on Android (iOS is not supported). The provided class is called SignInWithGPG, which can be initialized after following steps from [Google documentation](https://developers.google.com/games/services/console/enabling). It does contain two Actions that developer can subscribe to: `OnLoginResult` and `OnRequestServerSideAccessResult`. In order to perform login as third party to Beamable both of them must return successfully. The first returns info about local login, and the second about getting the server side access token that is required for the Beamable backend.
```csharp
SignInWithGPG _gpg;
diff --git a/docs/unity/user-reference/beamable-services/identity/providers/steam-sign-in.md b/docs/unity/user-reference/beamable-services/identity/providers/steam-sign-in.md
index 058d4f9ae..f8b1ad090 100644
--- a/docs/unity/user-reference/beamable-services/identity/providers/steam-sign-in.md
+++ b/docs/unity/user-reference/beamable-services/identity/providers/steam-sign-in.md
@@ -155,8 +155,8 @@ In the following sections, you will see that we use the above code to convert th
Now that we have the Steam Session Token, we need to account for 3 different scenarios:
-New Player
-Returning Player already linked to Steam
+New Player
+Returning Player already linked to Steam
Returning Player linking their account with Steam
We can tell which of these scenarios to follow by checking two pieces of information: whether the Steam ID is already attached to a Beamable account and whether the current, local account has a Steam 3rd party association.
diff --git a/docs/unity/user-reference/beamable-services/live-ops/events-overview.md b/docs/unity/user-reference/beamable-services/live-ops/events-overview.md
index 981591be0..d7b7c8570 100644
--- a/docs/unity/user-reference/beamable-services/live-ops/events-overview.md
+++ b/docs/unity/user-reference/beamable-services/live-ops/events-overview.md
@@ -338,7 +338,7 @@ Refer to the table below for an example of a limited store, where event-driven o
Typically, the event rewards (for the **standard** events described above) are based on the player's individual progress (score, rank, etc.) in the game and the reward is given to that individual.
-However, with **group** events, rewards are based on group progress (e.g., combined score of every group member). When a group event is rewarded, all **eligible** members of the group receive the reward — regardless of individual contribution to the event.
+However, with **group** events, rewards are based on group progress (that is, combined score of every group member). When a group event is rewarded, all **eligible** members of the group receive the reward — regardless of individual contribution to the event.
!!! warning "Important Notes"
diff --git a/docs/unity/user-reference/beamable-services/live-ops/mail-overview.md b/docs/unity/user-reference/beamable-services/live-ops/mail-overview.md
index ec346fe98..aada9074d 100644
--- a/docs/unity/user-reference/beamable-services/live-ops/mail-overview.md
+++ b/docs/unity/user-reference/beamable-services/live-ops/mail-overview.md
@@ -2,7 +2,7 @@
The Beamable **Mail** feature allows game makers to create and manage in-game mail messaging systems for players.
-The purpose of this feature is to allow players to manage in-game mail messages. Let's say your users have an inbox in their player profile, and they can receive messages whenever something significant happens. This is a good fit for Mail._
+The purpose of this feature is to allow players to manage in-game mail messages. Let's say your users have an inbox in their player profile, and they can receive messages whenever something significant happens. This is a good fit for Mail.
Mail provides a robust messaging system that enables players to send and receive persistent messages with attachments and rewards, creating engagement through communication and item distribution.
diff --git a/docs/unity/user-reference/beamable-services/live-ops/player-stats-and-activities.md b/docs/unity/user-reference/beamable-services/live-ops/player-stats-and-activities.md
index 55079536e..943154833 100644
--- a/docs/unity/user-reference/beamable-services/live-ops/player-stats-and-activities.md
+++ b/docs/unity/user-reference/beamable-services/live-ops/player-stats-and-activities.md
@@ -46,6 +46,6 @@ These are used to create campaigns using time as parameters. For example, you ca
- Last session date
- Last purchase date
-And as another parameter, you can set if you want the campaign to happen before and to the date point, only in the specified day or during and after that day, as showed in the image below.
+As another parameter, you can choose whether the date point comparison looks for players whose stat falls on or before the date point, exactly on the date point, or on or after the date point, as illustrated below.
{: style="height:auto;width:400px"}
diff --git a/docs/unity/user-reference/beamable-services/profile-storage/cloud-save.md b/docs/unity/user-reference/beamable-services/profile-storage/cloud-save.md
index 87d86c521..6d3e20491 100644
--- a/docs/unity/user-reference/beamable-services/profile-storage/cloud-save.md
+++ b/docs/unity/user-reference/beamable-services/profile-storage/cloud-save.md
@@ -49,7 +49,7 @@ When changes are detected by the service and finished saving locally, the Local
Cloud Saved files are written to an object store that is managed by the Cloud Saving service. The key of the object is the MD5 checksum of the content in the file, this is done to preserve the history of the files.
-The manifest tracks the MD5 checksum(etag) of the file and the common name(key) of the file, so we can fetch the object by its MD5 checksum and write it to disk using the common name.
+The manifest tracks the MD5 checksum (etag) of the file and the common name (key) of the file, so we can fetch the object by its MD5 checksum and write it to disk using the common name.
**Json Format**
@@ -185,7 +185,7 @@ Here are the major operations that can be performed against the player data.
## Sample Code
-Here is a sample code that demonstrates how to use the Cloud Save Service in Unity. This is a sample code that shows all the different options for using the Cloud Save Service. Note that this is an example for reference only. We do not recommend copying directly the functions used in the sample.
+Here is some sample code that demonstrates how to use the Cloud Save Service in Unity. This sample code shows all the different options for using the Cloud Save Service. Note that this is an example for reference only. We do not recommend copying directly the functions used in the sample.
CloudSavingServiceExample.cs
diff --git a/docs/unity/user-reference/beamable-services/profile-storage/content/content-getting-started.md b/docs/unity/user-reference/beamable-services/profile-storage/content/content-getting-started.md
index 334af10bb..094a5bd43 100644
--- a/docs/unity/user-reference/beamable-services/profile-storage/content/content-getting-started.md
+++ b/docs/unity/user-reference/beamable-services/profile-storage/content/content-getting-started.md
@@ -1,9 +1,10 @@
# Content - Getting Started
-Beamable's ContentService allows game makers to create, manage, and distribute game content. Content can be created in the Beamable Content Manager window in the Unity Editor, and then published to Beamable's servers. Once published, content can be pulled into a game at runtime via the ContentService API.
+
+Beamable's Content Service allows game makers to create, manage, and distribute game content. Content can be created in the Beamable Content Manager window in the Unity Editor, and then published to Beamable's servers. Once published, content can be pulled into a game at runtime via the ContentService API.
## Creating Custom Content Types
-In this snippet, the custom `Armor` item type is created. Note that, as a subclass of `ItemContent`, whose content type is already `"items"`, Armor's resulting content type will be `"items.armor"`. In the Content Manager in Unity, this will appear as a nested category under the `items` type.
+In this snippet, the custom `ArmorItem` item type is created. Note that, as a subclass of `ItemContent`, whose content type is already `"items"`, Armor's resulting content type will be `"items.armor"`. In the Content Manager in Unity, this will appear as a nested category under the `items` type.
Armor.cs
```csharp
@@ -13,7 +14,7 @@ using Beamable.Common.Inventory;
namespace Beamable.Examples.Services.ContentService
{
[ContentType("armor")]
- public class Armor : ItemContent
+ public class ArmorItem : ItemContent
{
public string Name = "";
public int Defense = 0;
@@ -21,7 +22,7 @@ namespace Beamable.Examples.Services.ContentService
}
```
-In this snippet, the `Armor` reference is resolved for use at runtime. There are 2 different methods for resolving content. Both are shown here for comparison. In production, choose whichever one method works best for the needs of the project.
+In this snippet, the `ArmorItem` reference is resolved for use at runtime. There are two different methods for resolving content. Both are shown here for comparison. In production, choose whichever one method works best for the needs of the project.
See session [ContentLink vs ContentRef](content-overview.md#contentlink-and-contentref) in the Content Overview for more info.
@@ -38,11 +39,11 @@ namespace Beamable.Examples.Services.ContentService
public class ContentServiceCustomExample : MonoBehaviour
{
// Fields ---------------------------------------
- [SerializeField] private ArmorLink _armorLink;
- [SerializeField] private ArmorRef _armorRef;
+ [SerializeField] private ArmorItemLink _armorLink;
+ [SerializeField] private ArmorItemRef _armorRef;
- private Armor _armorFromLink = null;
- private Armor _armorFromRef = null;
+ private ArmorItem _armorFromLink = null;
+ private ArmorItem _armorFromRef = null;
// Unity Methods --------------------------------
protected void Start()
diff --git a/docs/unity/user-reference/beamable-services/profile-storage/content/content-overview.md b/docs/unity/user-reference/beamable-services/profile-storage/content/content-overview.md
index 15313580e..ab8fb847c 100644
--- a/docs/unity/user-reference/beamable-services/profile-storage/content/content-overview.md
+++ b/docs/unity/user-reference/beamable-services/profile-storage/content/content-overview.md
@@ -20,7 +20,7 @@ Namespaces are locations for content to be published so that the content does no
!!! warning Global Namespace
- Beamable APIs that use content under the hood can only look to the global namespace.
+ Beamable APIs that use content under the hood, such as Commerce and Inventory, can only use entries from the "global" namespace.
## Content Data
@@ -124,17 +124,19 @@ private async void SetupBeamable()
}
```
-Beamable supports subscriptions to Content as well as direct references to certain pieces of content. Both of these will allow you to download content from the server, depending on the Game Maker's needs.
+Beamable supports subscriptions to Content as well as direct references to individual pieces of content. Both of these will allow you to download content from the server as needed.
### ContentLink and ContentRef
Subscriptions use a PlatformSubscription to dynamically read the data on the server, and fire a callback when the data is changed. However, ContentLink and ContentRef are both resolved manually when the data is needed.
-Beamable supports 2 methodologies for referencing a content object; [`ContentLink`](https://csharp.cdocs.beamable.com/latest/classBeamable_1_1Common_1_1Content_1_1ContentLink.html) and [`ContentRef`](https://csharp.cdocs.beamable.com/latest/classBeamable_1_1Common_1_1Content_1_1ContentRef.html). While they are both very similar syntactically and need to be resolved before using, they perform differently and have different use-cases.
+Beamable supports two methodologies for referencing a content object; [`ContentLink`](https://csharp.cdocs.beamable.com/latest/classBeamable_1_1Common_1_1Content_1_1ContentLink.html) and [`ContentRef`](https://csharp.cdocs.beamable.com/latest/classBeamable_1_1Common_1_1Content_1_1ContentRef.html). While they are both very similar syntactically and need to be resolved before using, they perform differently and have different use-cases.
- `ContentLink` - Beamable will perform a first frame load to resolve the reference. `ContentLink`s must be present and resolvable (that is, they cannot be `null`)
- `ContentRef` - Beamable will perform a lazy load to resolve the reference. As such, it is okay for a `ContentRef` to be `null` as long as it is never resolved
+In short, `ContentLink`s are strict "hard" connections whereas `ContentRef`s are "soft" or "loose" connections.
+
ContentServiceExistingExample.cs
```csharp
using System;
@@ -301,7 +303,7 @@ Beamable provides a streamlined Content Publishing pipeline. You can deploy your
{: style="height:auto;width:500px"}
-When you create your Beamable account, we automatically create a "Development to Production" pipeline of distinct environments for you. These environments are "Dev" → "Staging" → "Production". This is how we enable you to publish your content to our servers for the development environment while allowing you the peace of mind to know that the "Production" environment has not been modified.
+When you create your Beamable account, we automatically create a "Development to Production" pipeline of distinct environments for you. These environments are "Dev" → "Staging" → "Production". This is how Beamable enables you to publish your content for the development environment while allowing you the peace of mind to know that the "Production" environment has not been modified.
Then, once you have tested that the new content in your environment looks correct, you can go into the Portal to promote the "Dev" content to "Staging" and eventually "Production".
@@ -315,9 +317,9 @@ While using the Content Manager Editor (Unity Editor) it will be saved locally t
/Assets/Beamable/Editor/content/
```
-On Client's Builds (On-device) The development location is not included in the built game project. Instead, when the player loads the game, a fresh copy of all content is retrieved from the Beamable back-end and stored on-device. This allows Beamable to serve _dynamic_ content to the game project. By default, this is a lazy loading operation. Each of Beamable's feature prefabs show a loading progress indicator UI automatically.
+On client builds for devices, the development location is not included in the built game project. Instead, when the player loads the game, a fresh copy of all content is retrieved from the Beamable backend and stored on device. This allows Beamable to serve _dynamic_ content to the game project. By default, this is a lazy loading operation. Each of Beamable's feature prefabs show a loading progress indicator UI automatically.
-Content is stored on-device in a within Unity's [`Application.persistentDataPath`](https://docs.unity3d.com/ScriptReference/Application-persistentDataPath.html).
+Content is stored on device within Unity's [`Application.persistentDataPath`](https://docs.unity3d.com/ScriptReference/Application-persistentDataPath.html).
```csharp
Application.persistentDataPath + $"/content/{contentId}.json";
@@ -328,16 +330,6 @@ Content is cached by the client and stored both in memory and persisted to disk.
See source code of `Runtime/DisruptorEngine/Content/ContentCache.cs` for more info.
-## Game Content Designer
-
-Config data, or "Content" as it is called within Beamable, is realm-scoped and can be deployed from either...
-
-- **Unity** - Via Unity's [`ScriptableObject`](https://docs.unity3d.com/Manual/class-ScriptableObject.html)
-- **Google Sheets** - Via Beamable's Game Content Designer
-
-Within the context of a CI/CD pipeline, game makers can create jobs that invoke the Content deployment function against data it pulled from source control, and pass in arguments for which realm this Content should go to. This is not theoretical, this is what game makers do today in production.
-
-
## Remote Configuration Workflows
A fundamental pattern for using Beamable Content is **Remote Configuration**. With modest planning, game makers can maximize the user experience while minimizing the number of game updates shipped. This workflow allows game makers to update game content remotely and do so in real-time. Games can tweak existing features, launch new features, test out functionality -- all without necessarily shipping app updates or code changes.This can be especially useful for live-ops, seasonal events, and limited-time offers.
diff --git a/docs/unity/user-reference/beamable-services/profile-storage/content/content-unity.md b/docs/unity/user-reference/beamable-services/profile-storage/content/content-unity.md
index 5e368b309..566fa0fcf 100644
--- a/docs/unity/user-reference/beamable-services/profile-storage/content/content-unity.md
+++ b/docs/unity/user-reference/beamable-services/profile-storage/content/content-unity.md
@@ -1,6 +1,6 @@
# Unity Editor Integration of Beamable Content Services
-The Unity SDK many features to support the Beamable Content Service within the Unity Editor including a Content Manager window, Conflict Handlings, Validation tools and others
+The Unity SDK has many features to support the Beamable Content Service within the Unity Editor.
## Content Manager Editor
@@ -44,11 +44,11 @@ The Content Manager now supports **Auto-Sync**, which automatically detects remo
A file is marked as **Conflicted** only when:
- Both local and remote versions have been modified, **and**
-- The changes are incompatible (i.e., they don't match).
+- The changes are incompatible (that is, they don't match).
**No conflict is triggered if:**
-- Both sides made identical changes (e.g., the same field updated to the same value).
+- Both sides made identical changes (for example, the same field updated to the same value).
- The file is deleted on both sides.
- Only one side has changes (remote-only or local-only modifications sync normally).
diff --git a/docs/unity/user-reference/beamable-services/social-networking/connectivity.md b/docs/unity/user-reference/beamable-services/social-networking/connectivity.md
index ffa2c8e76..a06c343ef 100644
--- a/docs/unity/user-reference/beamable-services/social-networking/connectivity.md
+++ b/docs/unity/user-reference/beamable-services/social-networking/connectivity.md
@@ -1,6 +1,6 @@
# Connectivity
-The Connectivity drives the heartbeat sent back to the Beamable backend platform. If the game client loses connectivity, the heartbeat will stop and the Beamable API will gracefully wait for reconnection before resuming the full online feature-set.
+The Connectivity system drives the heartbeat sent back to the Beamable backend platform. If the game client loses connectivity, the heartbeat will stop and the Beamable API will gracefully wait for reconnection before resuming the full online feature-set.
The system monitors internet connectivity and updates automatically if any changes occur; including remote server outages or loss of local ethernet/Wi-Fi internet.
@@ -13,14 +13,14 @@ The main API highlights include [`ConnectivityService`](https://csharp.cdocs.bea
| Method Name | Detail |
| :---------- | :----- |
| HasConnectivity | Getter. Determines if the app has internet connectivity |
-| SetHasInternet | Setter. Determines if the app has internet connectivity
_Note: Calling this is not required. The Beamable system will properly monitor connectivity and update the ConnectivityService._ |
+| SetHasInternet | Setter. Determines if the app has internet connectivity
_Note: Calling this is not required. The Beamable system will automatically monitor connectivity and update the ConnectivityService._ |
### Sample Code
Here are some code examples to help you get started.
-In this `ConnectivityServiceExample.cs`, the UI shows the current state of the internet connectivity and updates automatically if any changes occur (ex. if the ethernet / Wi-Fi is manually disabled or enabled by the user).
+In this `ConnectivityServiceExample.cs`, the UI shows the current state of the internet connectivity and updates automatically if any changes occur (for example, if the ethernet / Wi-Fi is manually disabled or enabled by the user).
ConnectivityServiceExample.cs
```csharp
@@ -117,7 +117,7 @@ namespace Beamable.Examples.Services.ConnectivityService
### Disable Network Connection
-Game makers can set a global disable to simulate not having wifi before BeamContext initialization.
+Game makers can set a global disable to simulate not having Wi-Fi before BeamContext initialization.
```csharp
private static void ForceDisableConnectivity()
@@ -363,7 +363,7 @@ A few noteworthy clarifications:
2. **ConnectivityService**: This service maintains the state on whether internet connectivity is currently available, and is also responsible for invoking any reconnect hooks and so forth
2. The NoConnectivityException errors can occur as a result of a couple of conditions:
1. The **ConnectivityChecker**, which checks connectivity every 3 seconds, experiences a failure **OR**
- 2. A request to Beamable experiences a timeout or HTTP status code 0 from Unity
+ 2. A request to Beamable experiences a timeout or HTTP status code 0 from Unity
Beamable also makes regular heartbeat calls which may also fall into this class
3. When a NoConnectivityException is encountered, the **ConnectivityService** is notified that the internet connection has been lost, and the **ConnectivityService** then invokes any relevant hooks for reconnecting when the service is restored.
diff --git a/docs/unity/user-reference/beamable-services/social-networking/friends.md b/docs/unity/user-reference/beamable-services/social-networking/friends.md
index 0d0fab74f..a8944a6d7 100644
--- a/docs/unity/user-reference/beamable-services/social-networking/friends.md
+++ b/docs/unity/user-reference/beamable-services/social-networking/friends.md
@@ -170,7 +170,7 @@ public class FriendsSample : MonoBehaviour
#### Importing Friends from Facebook
-A player who has associated a Facebook credential with their account may automatically import Facebook friends. Facebook friends who have also linked a Facebook credential will be listed as Beamable friends. When one player imports Facebook friends, all imported friends will have the initiating player as a friend as well.
+A player who has associated a Facebook credential with their account may import Facebook friends in bulk. Facebook friends who have also linked a Facebook credential will be listed as Beamable friends. When one player imports Facebook friends, all imported friends will have the initiating player as a friend as well.
```csharp
using Beamable;
diff --git a/docs/unity/user-reference/beamable-services/social-networking/groups.md b/docs/unity/user-reference/beamable-services/social-networking/groups.md
index ba327a2c1..a7c03fe79 100644
--- a/docs/unity/user-reference/beamable-services/social-networking/groups.md
+++ b/docs/unity/user-reference/beamable-services/social-networking/groups.md
@@ -7,8 +7,8 @@ The purpose of this feature is to allow players to play together in-game.
Players can create groups and interact in real-time. Interactions include donating currency between group members for spending on in-game items. Depending on the game design, group members may have shared goals where interaction and collaboration are a key part of success.
Here are some common use cases for the Groups feature:
-• **Collaboration** - Group members may share resources to progress on common goals (e.g. quests)
-• **Competition** - All groups in the game community compete directly and indirectly for rewards
+• **Collaboration** - Group members may share resources to progress on common goals (such as quests)
+• **Competition** - All groups in the game community compete directly and indirectly for rewards
• **Communication** - Groups functionality integrates with text chat. See [Chat](chat.md) for more info
Here is the glossary of group-related terms.
diff --git a/docs/unity/user-reference/beamable-services/social-networking/lobbies.md b/docs/unity/user-reference/beamable-services/social-networking/lobbies.md
index 243bc06f2..cb262918c 100644
--- a/docs/unity/user-reference/beamable-services/social-networking/lobbies.md
+++ b/docs/unity/user-reference/beamable-services/social-networking/lobbies.md
@@ -12,7 +12,7 @@ Lobbies can also be found by game type and optionally setting a limit or skip va
To join a lobby requires a `lobbyId` in the case of an open lobby and `passcode` in the case of a closed lobby.
-Other actions provided by the Beamable **Lobbies** feature includes:
+Other actions provided by the Beamable **Lobbies** feature include:
- Adding players to the lobby
- Removing players from the lobby
diff --git a/docs/unity/user-reference/beamable-services/social-networking/matchmaking.md b/docs/unity/user-reference/beamable-services/social-networking/matchmaking.md
index 390b2dfd8..9b6700c49 100644
--- a/docs/unity/user-reference/beamable-services/social-networking/matchmaking.md
+++ b/docs/unity/user-reference/beamable-services/social-networking/matchmaking.md
@@ -2,9 +2,9 @@
The Beamable **Multiplayer** feature allows game makers to create real-time and turn-based multi-user game experiences. For a project to offer multiplayer, it must first offer **matchmaking**.
-In multiplayer gaming, matchmaking is the process of creating/finding a **Match** (e.g. Multiplayer 'Room') based on criteria. For example, a client could say "give me a match to play in with 2 total players of any skill level". Beamable supports matchmaking through its [`MatchmakingService`](https://csharp.cdocs.beamable.com/latest/classBeamable_1_1Experimental_1_1Api_1_1Matchmaking_1_1MatchmakingService.html).
+In multiplayer gaming, matchmaking is the process of creating/finding a **Match** (for example, a Multiplayer 'Room') based on criteria. For example, a client could say "give me a match to play in with 2 total players of any skill level". Beamable supports matchmaking through its [`MatchmakingService`](https://csharp.cdocs.beamable.com/latest/classBeamable_1_1Experimental_1_1Api_1_1Matchmaking_1_1MatchmakingService.html).
-The Matchmaking service has many built-in events to attach listeners (e.g. match starting, search timeout, etc). This makes it very simple to connect your game's custom UI to Beamable's services.
+The Matchmaking service has many built-in events to attach listeners (match starting, search timeout, etc). This makes it very simple to connect your game's custom UI to Beamable's services.
The outcome of a successful matchmaking search gives the participating players a match ID. This can be used to integrate Beamable's in-house [Multiplayer](multiplayer.md) solution, or a third-party multiplayer suite such as [Photon](https://www.photonengine.com/).
diff --git a/docs/unity/user-reference/beamable-services/social-networking/tournaments.md b/docs/unity/user-reference/beamable-services/social-networking/tournaments.md
index e0a9eb784..a5168e156 100644
--- a/docs/unity/user-reference/beamable-services/social-networking/tournaments.md
+++ b/docs/unity/user-reference/beamable-services/social-networking/tournaments.md
@@ -173,13 +173,13 @@ Game Makers set up tournaments by defining their content. This content includes
### Testing Notes
-- **Manage Test Tournaments**. Tournaments set to cycle frequently (e.g., hourly) for testing purposes can cause issues if left active. It is best practice to delete these test tournaments after completing your testing.
+- **Manage Test Tournaments**. Tournaments set to cycle frequently (for example, hourly) for testing purposes can cause issues if left active. It is best practice to delete these test tournaments after completing your testing.
- **Early Cycle Termination**. Game makers can end a tournament cycle early. However, this action only affects the current cycle. Subsequent tournaments remain scheduled and operate under their original time cycle parameters.
-- **Avoid Cadence Changes on Existing Tournaments**. Changing the cadence (e.g., from daily to weekly) for a tournament that already exists with a specific Tournament ID can lead to errors during testing. To avoid issues, create a new tournament (with new Tournament ID) when a different cadence is desired.
+- **Avoid Cadence Changes on Existing Tournaments**. Changing the cadence (for example, from daily to weekly) for a tournament that already exists with a specific Tournament ID can lead to errors during testing. To avoid issues, create a new tournament (with new Tournament ID) when a different cadence is desired.
### Protips
- While both leaderboards and tournament content are viewable within the Beamable portal, direct management of Tournaments currently requires API calls.
- Player scores persist for the duration of the tournament cycle; when players enter the next cycle their scores begin at 0, but within the new tier and stage dictated by promotion or demotion.
- From cycle to cycle, player scores are reset to 0 but tiers persist. If you, the Game Maker, wish to carry over previous Tournament scores, a separate microservice will be required to pre-seed this information when each new cycle starts.
-- Tournaments differ from Events by featuring a recurring time cycle. Events each have a beginning and end, and potentially multiple phases. Events can have one-off occurrences or be scheduled to recur, but Tournaments always require a cadence.
\ No newline at end of file
+- Tournaments differ from Events by featuring a recurring time cycle. Events each have a beginning and end, and potentially multiple phases. Events can have one-off occurrences or be scheduled to recur, but Tournaments always require a cadence.
diff --git a/docs/unity/user-reference/cloud-services/microservices/microservice-framework.md b/docs/unity/user-reference/cloud-services/microservices/microservice-framework.md
index 38a333df6..2e2261027 100644
--- a/docs/unity/user-reference/cloud-services/microservices/microservice-framework.md
+++ b/docs/unity/user-reference/cloud-services/microservices/microservice-framework.md
@@ -1,6 +1,6 @@
# Microservices Overview
-Beamable Microservices are small C# projects that can handle web traffic for your game in Unity, Unreal, or custom engine. The C# project is written with the modern dotnet library which means you have full access to the vast majority of dotnet features, including Nuget, Msbuild, and the myriad of performance improvements available in recent dotnet updates.
+Beamable Microservices are small C# projects that can handle web traffic for your Unity game, Unreal game, or custom engine game. The C# project is written with the modern dotnet library which means you have full access to the vast majority of dotnet features, including Nuget, Msbuild, and the myriad of performance improvements available in recent .NET updates.
!!! warning "Dotnet and Docker Dependency!"
@@ -255,10 +255,6 @@ However, within a Beamable's Microservice, game makers must rely instead on Beam
|-----------------|-------------------|
| [Microservice Serialization Supported Types](https://docs.google.com/spreadsheets/d/1EWGhLQmoDIEAjwHk6Fn0BTJ3u8yAj5B2TxbefuBvZ88/edit?usp=sharing) | All other types |
-#### UseLegacySerialization
-
-A breaking change is introduced in Beamable SDK v0.11.0. If you began your project with an **earlier** version of the SDK, see [Beamable Releases Unity SDK Version 0.11.0](https://www.beamable.com/blog/beamable-releases-unity-sd-version-0-11-0) for more info. Otherwise, simply disregard this issue.
-
### Handling Errors
When a call to a Beamable service fails, it will throw a `RequesterException`. The exception can be caught using standard C# try/catch practices. In the example below, the call to `SetCurrency` will fail, and the `catch` block will capture a `RequesterException` that exposes details about the failure.
diff --git a/docs/unity/user-reference/cloud-services/microstorages.md b/docs/unity/user-reference/cloud-services/microstorages.md
index fb7fbaae8..3fe1e8782 100644
--- a/docs/unity/user-reference/cloud-services/microstorages.md
+++ b/docs/unity/user-reference/cloud-services/microstorages.md
@@ -1,6 +1,6 @@
# Microstorages
-Beamable Microstorages are mongo databases that integrate seamlessly with Beamable Microservices to provide powerful custom state management solutions. Microstorages have a C# project written in dotnet that _represents_ the storage database. This C# project is used as identity, and can be a place to put data related code, such as model types. Beamable Microservices can access storage objects through the `Storages` accessor.
+Beamable Microstorages are MongoDB databases that integrate seamlessly with Beamable Microservices to provide powerful custom state management solutions. Microstorages have a C# project written in dotnet that _represents_ the storage database. This C# project is used as identity, and can be a place to put data related code, such as model types. Beamable Microservices can access storage objects through the `Storages` accessor.
## Getting Started
diff --git a/docs/unity/user-reference/cloud-services/scheduled-jobs.md b/docs/unity/user-reference/cloud-services/scheduled-jobs.md
index 6283f9a88..fa425a285 100644
--- a/docs/unity/user-reference/cloud-services/scheduled-jobs.md
+++ b/docs/unity/user-reference/cloud-services/scheduled-jobs.md
@@ -52,7 +52,7 @@ var job = await Services.Scheduler.Schedule()
.Save("sample");
```
-The `.Http()` method allows the developer to use the `.Run()` function which creates a HTTP action for the job. Optionally, a third parameter can be given as the body for the HTTP request. By default, the HTTP action will use JSON to serialize any request payload. There are overloads of the method available that allow a developer to specify a custom body, accept header, and custom headers.
+The `.Http()` method allows the developer to use the `.Run()` function which creates a HTTP action for the job. Optionally, a third parameter can be given as the body for the HTTP request. By default, the HTTP action will use JSON to serialize any request payload. There are overloads of the method available that allow a developer to specify a custom body, accept header, and custom headers.
## Job Triggers
@@ -237,4 +237,4 @@ public class ExampleService : Microservice
await assumed.Services.Inventory.AddCurrency("currency.gems", 10);
}
}
-```
\ No newline at end of file
+```
diff --git a/docs/unity/user-reference/editor-systems/beam-library.md b/docs/unity/user-reference/editor-systems/beam-library.md
index 6e9a928d6..2391b5890 100644
--- a/docs/unity/user-reference/editor-systems/beam-library.md
+++ b/docs/unity/user-reference/editor-systems/beam-library.md
@@ -25,7 +25,7 @@ The purpose of this feature is to offer the game maker an in-game UI for executi
#### Usage
-The Admin Flow can be opened at runtime in multiple ways...
+The Admin Flow can be opened at runtime in multiple ways:
- Within the Unity Editor, press the "~" key
- Within a Mobile Build, use a "three-finger swipe-up gesture"
diff --git a/docs/unity/user-reference/editor-systems/builds-environments.md b/docs/unity/user-reference/editor-systems/builds-environments.md
index 2e79dddae..41f84e499 100644
--- a/docs/unity/user-reference/editor-systems/builds-environments.md
+++ b/docs/unity/user-reference/editor-systems/builds-environments.md
@@ -4,13 +4,13 @@ If you run the project in the Unity editor in play mode, the realm that will act
{width=600px}
-When you do a build in Unity, the realm that is selected for the build is whatever is stored in the config-default.txt file.
+When you do a build in Unity, the realm that is selected for the build is whatever is stored in the `config-defaults.txt` file in the `Assets/Beamable/Resources/` folder.
-To update what is in the config-defaults.txt, you can open the account section, and click the "Save Configs-Defaults" file which will save whatever realm you are using in the editor to the file.
+To update what is in `config-defaults.txt`, you can open the account section, and click the "Save Config-Defaults" file which will save whatever realm you are using in the editor to the file.
{width=400px}
-For automated builds (e.g. Unity Cloud, Github Actions, etc.), we also have a Unity pre-build script which will swap out the realm based on an environment variable. You can basically have multiple config-.txt files.
+For automated builds (such as Unity Cloud, Github Actions, etc.), we also have a Unity pre-build script which will swap out the realm based on an environment variable. You can basically have multiple `config-.txt` files.
{width=300px}