September 13th, 2022
Features #
Twitch authentication now available.
- Description: You can now use
TwitchIdentityProviderPlugin
to configure Twitch login with Pragma Engine.
Added endpoint that returns a map of grouped content data for any given content type.
- Description: Added new
getContentSourceOperatorV1
endpoint in Inventory service that returns content data grouped by source file for a given content type.
Party leaders can now assign a new leader or add additional leaders.
Description: A party leader can assign another player to be party leader by calling
assignPartyLeaderV1
with thePragmaId
of the player to assign.When
PartyConfig
enableTransferPartyLeader
is true, the player that callsassignPartyLeaderV1
will lose leader privileges (default behavior). IfenableTransferPartyLeader
is set to false, theassignPartyLeaderV1
call will result in multiple leaders in the party.Unity SDK:
public void AssignPartyLeaderV1(PragmaId playerId, CompleteDelegate onComplete) public Future AssignPartyLeaderV1(PragmaId playerId)
- Helper to get the list of all leaders:
IReadOnlyList<IPartyPlayer> GetAllLeaders()
- Helper to get the list of all leaders:
Unreal SDK:
void UPragmaPartyService::AssignPartyLeaderV1(const FString& PlayerId, const FOnCompleteDelegate& OnComplete) TFuture<TPragmaResult<>> UPragmaPartyService::AssignPartyLeaderV1(const FString& PlayerId)
- Helper to get the list of all leaders:
TArray<UPragmaPartyPlayer*> UPragmaParty::GetAllLeaders() const
- Helper to get the list of all leaders:
Deprecations #
If you’re using getHostPortMap
on AbstractDaoNodeService
, switch to hostPortSchemas
in DatabaseConfig
.
- Description: Moving this functionality has allowed us to do some cleanup and remove unnecessary code. Any use of
DbCleaner
will need to be updated by removing the second argument.
Original | Replacement | Removal Patch |
---|---|---|
AbstractDaoNodeService::getHostPortMap | DatabaseConfig::hostPortSchemas | 0.0.85 |
Integrations #
If you currently have sharded inventory data, to prepare for the new dynamic sharding strategy, you’ll need to manually copy the inventory data to retain it.
Description: The default sharding strategy is changing. This update changes how we determine where data is stored and will impact studios with existing inventory and payment data who have multiple databases configured.
You must manually copy inventory data in order to keep any that is in a sharded state.
Integration step:
Data copying: Manual data copying is very dependent on how many databases you currently have.
You will need to back up all data, run a SQL copy of all relevant tables (inventory) from database shard 2 into shard 1, and configure inventory to utilize only one shard going forward.
InventoryDaoConfig: databaseConfig: driver: "MYSQLDB" username: "superuser" password: "password" hostPortSchemas: 1: "localhost:3306/local_game_player_inventory1"
You will then need to rebalance your data. Please reach out if you need any support so we can assist.
If you’re relying on default values in your configs, you’ll need to add back a shard to continue using both local shards, as the default behavior has been changed to use a single shard.
- Description: For configs that rely on default values, this change will make your environment only use a single database shard.
- Integration step: Add the second connection in your config to continue using both local shards.
- Example:
InventoryDaoConfig:
databaseConfig:
driver: "MYSQLDB"
username: "superuser"
password: "password"
hostPortSchemas:
1: "localhost:3306/local_game_player_inventory1"
2: "localhost:3306/local_game_player_inventory2"
For managed infrastructure customers, ensure that the 5-ext/buildkite/config.json
file exists.
- Description: All Pragma Engine-related Buildkite builds are now handled via the
pragma-ci-cd-buildkite-plugin
. As a result, Buildkite-related scripts have been migrated frompragma-engine
into the plugin. As of this release, the Buildkite-related scripts are being deleted frompragma-engine
, so you must ensure thepragma-ci-cd-buildkite-plugin
is in use to continue using Buildkite. - Integration steps:
- Confirm that
5-ext/buildkite/config.json
exists.config.json
only requires aplugin-version
field. The file should look something like this:
{ "plugin_version": "0.0.43" }
- Confirm that the value of
plugin_version
is at least equal to the version in4-demo/buildkite/config.json
.
- Confirm that
Unreal SDK: Rename UpdatePlayerSelectionsV1
to CanUpdatePlayerSelectionsV1
to match naming patterns.
- Description: This change was made to fix a naming inconsistency.
- Integration step: Update the following instances:
Original | Replacement |
---|---|
bool UPragmaPartyService::UpdatePlayerSelectionsV1() const | bool UPragmaPartyService::CanUpdatePlayerSelectionsV1() const |
bool UPragmaPartyService::UpdatePlayerSelectionsV1(FPragmaError& OutError) const | bool UPragmaPartyService::CanUpdatePlayerSelectionsV1(FPragmaError& OutError) const |
Bugs and Fixes #
Improved error messaging when linking accounts to other identity providers.
- Description: For the HTTP endpoint
/v1/account/linkidentityprovideraccount
EXPECTED
errors will now include thePragmaError ID
and print out debug information when inDEVELOPMENT
.UNEXPECTED
errors will still return an empty 403 response.
SDK integration simplified with a new variable in the update-pragma-sdk.sh
script that specifies the relative path within a Pragma Engine git repository.
The Arbiter repo has been moved to a new location. It will now be version tagged to provide an easier way to cross-reference against your own code.
Docs #
[Updated Services Guide] Quick Guide on kicking a player added to Party page.
[Updated Services Guide] New example for extension data on the Plugins and Extension Data page.
[Updated Introduction Guide] Updated instructions on the Initial Setup page.
[New Services Guide] Added page on Custom Errors to the Customization section.