August 16th, 2022
Features #
Added a new MatchLifecycleConfig
feature called inProgressMatchTimeoutMillis
for setting timeouts for in-progress matches.
- Description: The new
inProgressMatchTimeoutMillis
configuration allows you to set a timeout for in-progress matches.enablePartyRecreate
is 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
SocialGameGatewayConfig
from 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:
applyInventoryOperationsOperatorV1
applyInventoryOperationsPartnerV1
applyInventoryOperationsServiceV1
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:
InstancedItemPluginResult
is returned byInstancedItemPlugin.newInstanced
andInstancedItemPlugin.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.InventoryOperations
is 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
partnerSessionAuthToken
config value in Unity/Unreal SDKs was built before the separation of Social and Game backend tokens. The new config valuespartnerSessionGameAuthToken
andpartnerSessionSocialAuthToken
have 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 partnerSessionAuthToken
partnerSessionGameAuthToken
- Add a
partnerSessionSocialAuthToken
config 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
recreate
has been replaced by thereturnFromMatchmaking
&returnFromMatch
methods. 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
PartyPlugin
implementations. - Replace implementations of
recreate
with the new functionsreturnFromMatchmaking
andreturnFromMatch
. - Delete implementation of
recreate
from interface.original replacement recreate
returnFromMatchmaking
&returnFromMatch
- Open
Bugs and Fixes #
Added a new fix for cleaning up a match if MatchLifecycleServiceConfig.enablePartyRecreate
is disabled.
- Description: When
MatchLifecycleServiceConfig.enablePartyRecreate
is 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.