June 28th, 2022
Features #
- New game loop configuration options available.
- Description: We’ve added the following new config options for match lifecycle:
SessionConfig.enableMatchReconnectandMatchLifecycleServiceConfig.enablePartyRecreate. These both default to true, so to switch off match reconnect and party recreation configs, you’ll need to switch them to false.
- Description: We’ve added the following new config options for match lifecycle:
- You can now configure game server version in the
DefaultGameServerCompatibilityPlugin.- Description: To allow easy customization of a hardcoded game server version for CI/testing scenarios, we’ve introduced a
gameServerVersionconfiguration class to theDefaultGameServerCompatibilityPlugin.
- Description: To allow easy customization of a hardcoded game server version for CI/testing scenarios, we’ve introduced a
InventoryServicenow supports multiple updates to a singleInstancedItemthrough match end processing or the variousUpdateItemAPIs.- Description: Previously, attempting to apply multiple updates to an instanced item would cause only the last update to apply. Now, Pragma Engine handles multiple updates.
- Details:
InstancedItemPlugin.UpdateResulthas been updated with a new fieldserverInstancedItemUpdateswhich is aList<ServerInstancedItemUpdate>.
Integrations #
Modify your custom services by following the provided directions.
Description: We have reduced the number of thread pools in Pragma Engine to make the overall system more monitorable and configurable. This may affect your custom services.
Integration steps:
- Make the following changes in your custom service.
Original Replacement launchscope.launchasyncscope.asynccoroutineContextscope.coroutineContext- If you rely on
PragmaNodebeing aCoroutineScopein your custom service, or if your service does not appear to run in Pragma Engine 0.0.73, please contact us to assess the best solution for your specific usage.
Remove the
ProgressionDataparameter from your implementations ofStorePluginandCraftingPlugin.- Description: To prepare for the deletion of
ProgressionService, we are removing progression-related fields from various plugins. - Integration steps:
- Remove the
ProgressionDataparameter from your implementations of the following plugins:StorePluginCraftingPlugin
- Remove the
- Description: To prepare for the deletion of
Replace usage of
MatchProcessedV2NotificationwithMatchProcessedV3Notification.- Description: To prepare for the deletion of
ProgressionService, we are disabling support forMatchProcessedV2Notificationin order to remove progression-related data. - Integration steps:
- Replace usage of
MatchProcessedV2NotificationwithMatchProcessedV3Notification.
Original Replacement MatchProcessedV2NotificationMatchProcessedV3Notification - Replace usage of
- Description: To prepare for the deletion of
Add new
inventoryDataparameter toupdate()method in custom implementations ofInstancedItemPlugin.Description: The
InstancedItemPlugininterface has been updated. Theupdate()method now expectsinventoryDatato be passed in.inventoryDatacontains a snapshot of the player’s inventory.Integration steps:
- Change the
InstancedItemPlugin.update()method to include the newinventoryDataparameter.
Original Replacement fun update( initialInstancedItem: InstancedItem, instancedSpec: InventoryContent.InstancedSpec, updateEntry: InventoryContent.UpdateEntry, inventoryContent: InventoryServiceContent, clientRequestExt: ExtInstancedItemUpdate?, serverRequestExt: ExtInstancedItemServerUpdate? ): UpdateResultfun update( initialInstancedItem: InstancedItem, instancedSpec: InventoryContent.InstancedSpec, updateEntry: InventoryContent.UpdateEntry, inventoryContent: InventoryServiceContent, inventoryData: InventoryData, clientRequestExt: ExtInstancedItemUpdate?, serverRequestExt: ExtInstancedItemServerUpdate? ): UpdateResult- Note that the data class
UpdateResulthas also been updated with a new parameter, but as it has a default value, no integration steps are required.
- Change the
You may need to create your own test factory if you use certain
InventoryProtoTestFactorymethods.Description: Certain
InventoryProtoTestFactorymethods have been changed to return the default instance.Integration steps:
- If you use any of the below
InventoryProtoTestFactorymethods, create your own test factory with the provided replacement or an appropriate equivalent.
Original Replacement InventoryProtoTestFactory.extStackableSpec()fun extStackableSpec(i: Int) = generateProto(ExtStackableSpec::class, i)InventoryProtoTestFactory.extInstancedItemServerGrant(I:Int)fun extInstancedItemServerGrant(i: Int) = generateProto(ExtInstancedItemServerGrant::class, i)- If you use any of the below
Bugs and Fixes #
- Removed references to the
awsRegionconfiguration in theMultiplayCapacityProvider, as this value will always beeu-west-1according to Multiplay.