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
LobbyStrategy
interface functions. - Update references to renamed
TestFactory
classes. - Changed config getter method names in
BaseServerIT
class.
- 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:
ItemCatalog
now hasInstancedEntriesMap
andStackableEntriesMap
.
- 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
/gamePort
config values. This change is backwards compatible. - Details:
SocialPlayerGatewayConfig
has new valuesocialBindPort
.GamePlayerGatewayConfig
has new valuessocialBindPort
andgameBindPort
.
- 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:
refreshInventory
andrefreshProgression
functions return an updated copy of data and recache the new result with that player.- These functions take in an
InventoryClient
andProgressionClient
respectively, 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
UPDATE
command 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.proto
torewardContent.proto
.- Any imports will need to be updated.
- Renamed
RewardsCount
message toRewardCount
.- Any references and imports will need to be updated.
- Renamed
RewardsTable
message toRewardTable
.- Requires updating any code referencing
RewardsTable
proto messages, as well as the followingInventoryTestFactory
methods:Original Replacement rewardsTables()
rewardTables()
rewardsTable()
rewardTable()
- Requires updating any code referencing
- Moved
RewardsCatalog
fromRewardContent.proto
toInventoryRpc.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 stackableItemSpecs
stackableSpecs
instancedItemSpecs
instancedSpecs
catalogUpdateEntries
updateEntries
rewardsTables
rewardTables
- Renamed the following content files in
5-ext/content/shared/
:Original Replacement CatalogCraftingEntries.json
CraftingEntries.json
CatalogUpdateEntries.json
UpdateEntries.json
InstancedItemSpecs.json
InstancedSpecs.json
StackableItemSpecs.json
StackableSpecs.json
- Renamed
New matchmaking function must be added to successfully compile.
- Description: Add new function
addToMatchAndBuildMatchmakingDetails
to implementations ofMatchmakingStrategy
plugin. This will be used in our upcoming game loop systems. - Integration step:
- Paste the following no-op stub into any
MatchmakingStrategy
implementations:
- 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
setExtPlayerInfo
andsetExtLobbyInfo
. - Integration steps:
You will need to make the following changes:
Original Replacement fun setExtPlayerInfo
suspend fun setExtPlayerInfo
fun setExtLobbyInfo
suspend fun setExtLobbyInfo
If the code is called in
mockk every
orverify
blocks, 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
TestFactory
classes.- Description: You will need to update references to any of the
TestFactory
classes listed below. These have been renamed for increased clarity. - Integration step:
- If you have any tests using any
TestFactory
from this table, you will need to update your references to the new class name:Original Replacement (pragma.inventory.)TestFactory
InventoryTestFactory
(pragma.matchmaking.)TestFactory
MatchmakingTestFactory
(pragma.)InventoryTestFactory
InventoryProtoTestFactory
(pragma.)MatchmakingTestFactory
MatchmakingProtoTestFactory
- If you have any tests using any
- Description: You will need to update references to any of the
Changed method names in
BaseServerIT
class- 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/info
endpoint will no longer return the nonfunctioningwsScheme
in theauthenticateBackend
section.
- 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 |