Pragma Engine 0.0.53
February 1st, 2022
- Users can now use map accessors instead of iterating over an array all the time.
- Platform can be configured to bind to a port different from what it advertises.
- Unreal can now build with Unity and PCH disabled.
- Required integrations:
- Some protos have been renamed, so relevant imports and references will need to be updated. See full notes for complete list.
- New matchmaking function must be added to successfully compile.
- Added suspend to
LobbyStrategyinterface functions. - Update references to renamed
TestFactoryclasses. - Changed config getter method names in
BaseServerITclass.
- Bugfix:
- Removed unsupported WebSocket scheme in HTTP responses for
GET /v1/info.
- Removed unsupported WebSocket scheme in HTTP responses for
Features #
Users can now use map accessors instead of iterating over an array all the time.
- Description:
ItemCatalognow hasInstancedEntriesMapandStackableEntriesMap.
- Description:
Platform can be configured to bind to a port different from what it advertises.
- Description: Platform can now be configured to bind to a port different from what it’s advertising, such as when used behind a dynamically registering load balancer. Unless explicitly set in configuration, these values will default to the relevant
socialPort/gamePortconfig values. This change is backwards compatible. - Details:
SocialPlayerGatewayConfighas new valuesocialBindPort.GamePlayerGatewayConfighas new valuessocialBindPortandgameBindPort.
- Description: Platform can now be configured to bind to a port different from what it’s advertising, such as when used behind a dynamically registering load balancer. Unless explicitly set in configuration, these values will default to the relevant
Unreal can now build with Unity and PCH disabled.
- Description: The Unreal SDK now builds properly with both “Unity” and “PCH” disabled (strict IWYU).
Added new hooks to Lobby service to enable refreshing cached inventory and progression.
- Description: We’ve added refreshInventory and refreshProgression functions to the LobbyPlayer data class passed to existing lobby plugins. These allow you to trigger updates to cached information from the client.
- Details:
refreshInventoryandrefreshProgressionfunctions return an updated copy of data and recache the new result with that player.- These functions take in an
InventoryClientandProgressionClientrespectively, which can be constructed and used from within the plugin. - These calls should be invoked sparingly–not on every plugin call. We recommend using ext fields to make an
UPDATEcommand that can be called from the client if the player is in a lobby and an operation causing a cache refresh occurs.
Integrations #
Some protos have been renamed, so relevant imports and references will need to be updated.
- Description: Protos have been updated for consistency. Please make the changes below to ensure compatibility.
- Integration steps:
- Renamed
rewardsContent.prototorewardContent.proto.- Any imports will need to be updated.
- Renamed
RewardsCountmessage toRewardCount.- Any references and imports will need to be updated.
- Renamed
RewardsTablemessage toRewardTable.- Requires updating any code referencing
RewardsTableproto messages, as well as the followingInventoryTestFactorymethods:Original Replacement rewardsTables()rewardTables()rewardsTable()rewardTable()
- Requires updating any code referencing
- Moved
RewardsCatalogfromRewardContent.prototoInventoryRpc.proto.- This message was only used by RPC, not content. Any references and imports will need to be updated.
- Renamed references to the following content access properties in
InventoryServiceContent:Original Replacement stackableItemSpecsstackableSpecsinstancedItemSpecsinstancedSpecscatalogUpdateEntriesupdateEntriesrewardsTablesrewardTables - Renamed the following content files in
5-ext/content/shared/:Original Replacement CatalogCraftingEntries.jsonCraftingEntries.jsonCatalogUpdateEntries.jsonUpdateEntries.jsonInstancedItemSpecs.jsonInstancedSpecs.jsonStackableItemSpecs.jsonStackableSpecs.json
- Renamed
New matchmaking function must be added to successfully compile.
- Description: Add new function
addToMatchAndBuildMatchmakingDetailsto implementations ofMatchmakingStrategyplugin. This will be used in our upcoming game loop systems. - Integration step:
- Paste the following no-op stub into any
MatchmakingStrategyimplementations:
- Paste the following no-op stub into any
- Description: Add new function
override fun addToMatchAndBuildMatchmakingDetails(
matchmakingKey: ExtMatchmakingKey,
partiesByTeamId: MutableMap<Int, MutableSet<MatchmakingParty>>,
partyToAdd: MatchmakingParty
): ExtCreateMatchV1Request? {
return null
}
Added suspend to LobbyStrategy interface functions.
- Description: Added suspend to function definitions
setExtPlayerInfoandsetExtLobbyInfo. - Integration steps:
You will need to make the following changes:
Original Replacement fun setExtPlayerInfosuspend fun setExtPlayerInfofun setExtLobbyInfosuspend fun setExtLobbyInfoIf the code is called in
mockk everyorverifyblocks, you will also need to update:Original Replacement every { lobbyStrategy.setExtLobbyInfo... }coEvery { lobbyStrategy.setExtLobbyInfo... }verify { lobbyStrategy.setExtLobbyInfo... }coVerify { lobbyStrategy.setExtLobbyInfo... }
- Description: Added suspend to function definitions
Update references to renamed
TestFactoryclasses.- Description: You will need to update references to any of the
TestFactoryclasses listed below. These have been renamed for increased clarity. - Integration step:
- If you have any tests using any
TestFactoryfrom this table, you will need to update your references to the new class name:Original Replacement (pragma.inventory.)TestFactoryInventoryTestFactory(pragma.matchmaking.)TestFactoryMatchmakingTestFactory(pragma.)InventoryTestFactoryInventoryProtoTestFactory(pragma.)MatchmakingTestFactoryMatchmakingProtoTestFactory
- If you have any tests using any
- Description: You will need to update references to any of the
Changed method names in
BaseServerITclass- Description:
getConfigAsJsonNode()has been renamed togetGame ConfigAsJsonNode()andgetSocialConfigAsJsonNode()has been added. - Integration step:
- You will need to change all calls to
getConfigAsJsonNode()togetGameConfigAsJsonNode().
- You will need to change all calls to
- Description:
Bugfix #
- Removed unsupported WebSocket scheme in HTTP responses for
GET /v1/info.- Description: HTTP requests to the
GET /v1/infoendpoint will no longer return the nonfunctioningwsSchemein theauthenticateBackendsection.
- Description: HTTP requests to the
Deprecations #
| Original | Replacement |
|---|---|
ItemCatalog.InstancedEntries/StackableEntries | ItemCatalog.StackableEntriesMap/InstancedEntriesMap |
ContentData.get(Long) | ContentData.get(String) |
ContentDataNodeService::getOrLoadContent() | use ContentDataNodeService::getHandler() OR the ContentDataProxy class |