Pragma Engine 0.0.87
October 11th, 2022
Features #
Parties now remain active when a party leader leaves. #
Description: Parties are no longer disbanded when a leader leaves the party or is disconnected from Pragma Engine. When a leader leaves a party, one of the remaining party members is granted party leadership.
Related note: See integration note about party disbandment.
Game clients can now retrieve match connection details using the new matchConnectionDetailsV1
endpoint.
#
Description: Clients can now access connection details ad-hoc for an existing match by calling MatchLifecycleService.matchConnectionDetailsV1
. This returns connection details using the MatchDetails object, which is also used by MatchReconnectV1Notification
.
Details: The SDKs have been updated with the following methods on the Party service:
void UPragmaPartyService::MatchConnectionDetailsV1(const FMatchConnectionDetailsDelegate& OnComplete)
TFuture<TPragmaResult<FPragma_MatchLifecycle_MatchDetails>> UPragmaPartyService::MatchConnectionDetailsV1()
bool UPragmaPartyService::CanGetMatchConnectionDetailsV1() const
bool UPragmaPartyService::CanGetMatchConnectionDetailsV1(FPragmaError& OutError) const
public void MatchConnectionDetailsV1(MatchConnectionDetailsDelegate onComplete)
public Future<MatchDetails> MatchConnectionDetailsV1()
public bool CanGetMatchConnectionDetailsV1()
public bool CanGetMatchConnectionDetailsV1(out Error? error)
New player session endpoint for linking additional accounts. #
Description: Logged-in players can now link a new, additional account by passing a provider ID and a provider token to the new linkIdentityProviderAccountV2
endpoint.
Deprecations #
Use linkIdentityProviderAccountServiceV1
instead of linkIdentityProviderAccountV1
.
#
Description: linkIdentityProviderAccountV1
is being renamed to conform to our current naming conventions. Replace all uses of it with linkIdentityProviderAccountServiceV1
.
original | replacement | removal release |
---|---|---|
linkIdentityProviderAccountV1 | linkIdentityProviderAccountServiceV1 | 0.0.88 |
Partner Game Tokens will now require a gameShardId
.
#
Description: In Pragma Engine 0.0.88, Partner Game Tokens will only be able to communicate with the specific game shard they are assigned to instead of all game shards belonging to a game title.
Upon updating to Pragma Engine 0.0.88, regenerate your Partner Game Tokens for each of your game shards. You can do so via the Game Operator Portal (recommended) or by using the pragma-engine
CLI.
- Game Operator Portal instructions:
- Log into the Game Portal and navigate to the Game Server Management page.
- Select a game shard from the dropdown, then create tokens. This creates both Social and Game Partner tokens, but only the game tokens need to be updated. Updating the social tokens is optional.
pragma-engine
CLI instructions:- Build the latest jar via
make build
- To generate new tokens, run
java -jar ./pragma-engine.jar crypto remoteServiceToken --type game --game-shard-id "{{gameShardId}}" --expiration-hours 876000 --key-base64 "{{base64EncodedJwtPrivateKey}}"
- Replace
{{gameShardId}}
and{{base64EncodedJwtPrivateKey}}
with the appropriate values.
- Build the latest jar via
Update usages of DeletePlayerInventoryV2
to DeletePlayerInventoryV3
.
#
Description: The RPCs for deleting player inventories now additionally remove all fulfillments. Update any usages of DeletePlayerInventoryV2
to DeletePlayerInventoryV3
by release 0.0.88.
original | replacement | removal release |
---|---|---|
Raw Wrapper: PragmaInventoryServiceRaw.DeletePlayerInventoryV2() | Raw Wrapper: PragmaInventoryServiceRaw.DeletePlayerInventoryV3() | 0.0.88 |
Rich Wrapper: PragmaInventoryService.DeletePlayerInventoryV2() | Rich Wrapper: PragmaInventoryService.DeletePlayerInventory() | 0.0.88 |
original | replacement | removal release |
---|---|---|
Raw Wrapper: InventoryServiceRaw.DeletePlayerInventoryV2() | Raw Wrapper: InventoryServiceRaw.DeletePlayerInventoryV3() | 0.0.88 |
Rich Wrapper: InventoryService.DeletePlayerInventoryV2() | Rich Wrapper: InventoryService.DeletePlayerInventory() | 0.0.88 |
Integrations #
Remove references to the expirationDays
config value.
#
Description: The TokenSignerConfig
value expirationDays
has been removed, and should be taken out of any config files.
Integration step: Find and remove any references to expirationDays
in config files.
Use GameDataRPC.GetLoginDataV2
instead of GameDataRPC.GetLoginDataV1
.
#
Description:
GameDataRPC.GetLoginDataV1
has been removed. GetLoginDataV2
brings necessary cleanup along with naming that more correctly aligns with inventory’s limited grant tracking IDs as a part of the LoginData
payload.
Note that this change only applies to GameDataRPC.GetLoginData
, as InventoryRpc.GetLoginData
has not been updated and should remain at V1
.
Integration step: Update all usages of GameDataRpc.GetLoginDataV1
to GameDataRpc.GetLoginDataV2
.
original | replacement |
---|---|
PragmaGameDataServiceRaw.GetLoginDataV1 | PragmaGameDataServiceRaw.GetLoginDataV2 |
original | replacement |
---|---|
GameData.Raw.GetLoginData | GameData.Raw.GetLoginDataV2 |
original | replacement |
---|---|
GetLoginDataV1Request | GetLoginDataV2Request |
Update the config sections for TokenValidatorNodeService
to the TokenDecoderNodeService
.
#
Description: The TokenValidatorNodeService
has been renamed to the TokenDecoderNodeService
, due to the service no longer performing token validation and only performing token decoding. If you’ve used the TokenValidatorNodeService
directly in your code, update any references to the new TokenDecoderNodeService
. Note that the service’s Test Factory tokenValidatorConfig
was also renamed to tokenDecoderConfig
.
Integration step: Update the config sections for TokenValidatorNodeService
to the TokenDecoderNodeService
.
Original | Replacement |
---|---|
|
|
If your game implementation relies on party disbandment upon a party leader leaving, manually replicate the behavior using the onRemovePlayer
plugin to retain functionality.
#
Description: With the new feature that keeps parties active when a party leader leaves, existing game logic may need to be refactored to account for the new expected behavior.
Integration step: If your game implementation relies on a party disbanding when a leader leaves the party, you can retain the existing flow by manually simulating this behavior using the onRemovePlayer
plugin.
Related note: See feature note about party disbandment.
If you’re using the listed Test Factory helpers in the AccountTestFactory
, replace them with the provided helpers.
#
Description: We’ve removed/renamed several Test Factory helpers to eliminate duplication.
Integration steps: Replace the following helpers in AccountTestFactory
with their updated versions:
original | replacement |
---|---|
pragmaGameToken() | gameToken() |
pragmaSocialToken() | socialToken() |
pragmaEmailToken() | emailToken() |
Bugs and Fixes #
Improved match reconnect reliability in the case where players disconnect and reconnect to the same match multiple times.
Invalid or improperly-used tokens now report DEBUG server logs. Examples are tokens missing Authorization headers, corrupted tokens, or tokens being used for the wrong session or backend type.
Docs #
[Moved SDK Guides] The SDKs & Tools guides have been moved to the new Setup Guides section in Introduction.
[Updated Concepts Guide] Added section on Player Login Using Existing Sessions on the Login and Session page in Accounts.
[Updated Concepts Guide] Added section on Connection Details to the Game Server Management page in Game Flow.