June 28th, 2022
Features #
- New game loop configuration options available.
- Description: We’ve added the following new config options for match lifecycle:
SessionConfig.enableMatchReconnect
andMatchLifecycleServiceConfig.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
gameServerVersion
configuration class to theDefaultGameServerCompatibilityPlugin
.
- Description: To allow easy customization of a hardcoded game server version for CI/testing scenarios, we’ve introduced a
InventoryService
now supports multiple updates to a singleInstancedItem
through match end processing or the variousUpdateItem
APIs.- 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.UpdateResult
has been updated with a new fieldserverInstancedItemUpdates
which 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 launch
scope.launch
async
scope.async
coroutineContext
scope.coroutineContext
- If you rely on
PragmaNode
being aCoroutineScope
in 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
ProgressionData
parameter from your implementations ofStorePlugin
andCraftingPlugin
.- Description: To prepare for the deletion of
ProgressionService
, we are removing progression-related fields from various plugins. - Integration steps:
- Remove the
ProgressionData
parameter from your implementations of the following plugins:StorePlugin
CraftingPlugin
- Remove the
- Description: To prepare for the deletion of
Replace usage of
MatchProcessedV2Notification
withMatchProcessedV3Notification
.- Description: To prepare for the deletion of
ProgressionService
, we are disabling support forMatchProcessedV2Notification
in order to remove progression-related data. - Integration steps:
- Replace usage of
MatchProcessedV2Notification
withMatchProcessedV3Notification
.
Original Replacement MatchProcessedV2Notification
MatchProcessedV3Notification
- Replace usage of
- Description: To prepare for the deletion of
Add new
inventoryData
parameter toupdate()
method in custom implementations ofInstancedItemPlugin
.Description: The
InstancedItemPlugin
interface has been updated. Theupdate()
method now expectsinventoryData
to be passed in.inventoryData
contains a snapshot of the player’s inventory.Integration steps:
- Change the
InstancedItemPlugin.update()
method to include the newinventoryData
parameter.
Original Replacement fun update( initialInstancedItem: InstancedItem, instancedSpec: InventoryContent.InstancedSpec, updateEntry: InventoryContent.UpdateEntry, inventoryContent: InventoryServiceContent, clientRequestExt: ExtInstancedItemUpdate?, serverRequestExt: ExtInstancedItemServerUpdate? ): UpdateResult
fun update( initialInstancedItem: InstancedItem, instancedSpec: InventoryContent.InstancedSpec, updateEntry: InventoryContent.UpdateEntry, inventoryContent: InventoryServiceContent, inventoryData: InventoryData, clientRequestExt: ExtInstancedItemUpdate?, serverRequestExt: ExtInstancedItemServerUpdate? ): UpdateResult
- Note that the data class
UpdateResult
has 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
InventoryProtoTestFactory
methods.Description: Certain
InventoryProtoTestFactory
methods have been changed to return the default instance.Integration steps:
- If you use any of the below
InventoryProtoTestFactory
methods, 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
awsRegion
configuration in theMultiplayCapacityProvider
, as this value will always beeu-west-1
according to Multiplay.