August 16th, 2022
Features #
Added a new MatchLifecycleConfig feature called inProgressMatchTimeoutMillis for setting timeouts for in-progress matches.
- Description: The new
inProgressMatchTimeoutMillisconfiguration allows you to set a timeout for in-progress matches.enablePartyRecreateis honored in case of a match timing out, so if enabled, the players will be put back into a party. This change is backwards compatible. - Details: To use this feature, in your game configuration, find
MatchLifecycleConfig.inProgressMatchTimeoutMillis, and specify the milliseconds you want a game to go for before expiring the match completely. Any subsequent MatchEnd payloads for that match will be ignored. - Example:
game:
serviceConfigs:
MatchLifecycleServiceConfig:
inProgressMatchTimeoutMillis: 10000 // exp match in 10 sec
New configuration allows you to define the endpoint for email verification links.
- Description: To decouple the
SocialGameGatewayConfigfrom the Account service, we’ve added a new configuration for defining where email verification links go. This is backwards compatible. - Example:
social:
serviceConfigs:
AccountServiceConfig:
verificationEmailEndpoint: "http://127.0.0.1:11000//v1/account/verifyemailv1"
Added RPC endpoints for applying inventory operations.
- Description: We’ve added endpoints for applying inventory operations such as stackable and instanced item grants and updates, instanced items to destroy, and rewards to grant.
- Details:
applyInventoryOperationsOperatorV1applyInventoryOperationsPartnerV1applyInventoryOperationsServiceV1
Added new fields for deleting instanced items on MatchEnd and in response to creating or updating an instanced item.
- Description: Fields have been added for destroying instanced items in two locations:
InstancedItemPluginResult(in response to creating or updating an item) andInventoryOperationsPlugin.InventoryOperations(on MatchEnd). - Details:
InstancedItemPluginResultis returned byInstancedItemPlugin.newInstancedandInstancedItemPlugin.update.
data class InstancedItemPluginResult( val extInstancedItem: ExtInstancedItem, val rewardGrants: List<RewardGrant> = listOf(), val instancedItemServerGrants: List<InstancedItemServerGrant> = listOf(), val stackableItemGrants: List<StackableItemGrant> = listOf(), val serverInstancedItemUpdates: List<ServerInstancedItemUpdate> = listOf(), val instancedItemsToDestroy: List<InstanceId> = listOf() // NEW FIELD )InventoryOperationsPlugin.InventoryOperationsis returned byInventoryOperations.getInventoryOperationsFromMatchEnd.
data class InventoryOperations( val stackableItemGrants: List<StackableItemGrant> = listOf(), val stackableItemUpdates: List<StackableItemUpdate> = listOf(), val instancedItemGrants: List<InstancedItemGrant> = listOf(), val instancedItemServerGrants: List<InstancedItemServerGrant> = listOf(), val instancedItemUpdates: List<InstancedItemUpdate> = listOf(), val rewardGrants: List<RewardGrant> = listOf(), val instancedItemsToDestroy: List<InstanceId> = listOf() // NEW FIELD )
Integrations #
Update SDK configuration with new authorization tokens.
- Description: The original
partnerSessionAuthTokenconfig value in Unity/Unreal SDKs was built before the separation of Social and Game backend tokens. The new config valuespartnerSessionGameAuthTokenandpartnerSessionSocialAuthTokenhave been added to allow Partner sessions to designate specific tokens per backend. - Integration steps:
- In the Unreal/Unity SDK, update any configs with a Partner session auth token (such as in
pragma.json).original replacement partnerSessionAuthTokenpartnerSessionGameAuthToken - Add a
partnerSessionSocialAuthTokenconfig option for situations where a Partner session needs to connect to the Social backend, and provide it with a Partner Social token.
- In the Unreal/Unity SDK, update any configs with a Partner session auth token (such as in
Replace the listed RPC request implementation calls with their replacements, as they are being removed.
- Description: This is part of our larger engine cleanup.
- Integration step: If you’re using any of these calls in plugins or custom services, replace them and apply transforms when necessary.
original replacement Service::requestRpcAndTransform()Service::requestRpc()RpcClient::requestRpcAsync()async { requestRpc() }Service::requestRpcAsync()async { requestRpc() }Service::requestRpcAsyncAndTransform()async { Service::requestRpc() }
Update PartyPlugin implementation by migrating any logic from recreate into returnFromMatchmaking and returnFromMatch.
- Description: The method
recreatehas been replaced by thereturnFromMatchmaking&returnFromMatchmethods. These two new methods have a more flexible interface and allow a subset of the whole party to be returned to the Party service. - Integration steps:
- Open
PartyPluginimplementations. - Replace implementations of
recreatewith the new functionsreturnFromMatchmakingandreturnFromMatch. - Delete implementation of
recreatefrom interface.original replacement recreatereturnFromMatchmaking&returnFromMatch
- Open
Bugs and Fixes #
Added a new fix for cleaning up a match if MatchLifecycleServiceConfig.enablePartyRecreate is disabled.
- Description: When
MatchLifecycleServiceConfig.enablePartyRecreateis disabled, Pragma Engine now properly unsets all game loop related session data, and the SDKs properly clean up their cached Party information.
Docs #
[Updated Services Guide] Updated Extension Data section on the Party page to include information like hidden data.
[New Introduction Page] Added a generated configuration table.
[Updated Introduction Page] Updated the Plugins & Extension Data section within Introduction.
[Updated Services Guide] Added new content to the Plugins & Extension Data section within Customization.
[Updated Services Guide] Replaced the “Dependent Jobs” page with a new Concurrency page which contains information on both concurrency and dependent jobs in Pragma Engine.