March 1st, 2022
- Limited Access Event Mode is now available via the Pragma Portal.
- Required integration:
5-ext/ext-protos/pom.xml
has been updated and needs to be regenerated.- The Portal configuration location has changed.
longRangeProxy
has been deprecated.- Removed
InstancedItemPlugin.init
method. - Updated
RewardSelectorPlugin.init
parameters.
- Removed
runBlockingTestWithTimeout
has been removed.- As part of a code cleanup, many
runBlocking
calls have been removed. - Several party
ext
protos have been renamed.
- Improvements and bug fixes
- Additional validation for
storeEntries
inStores.json
. - Fixed a crash in the SDK when trying to handle valid
CraftV1
responses that containedErrors
associated with the craft attempt.
- Additional validation for
Integrations: #
5-ext/ext-protos/pom.xml
has been updated and needs to be regenerated.- Description:
5-ext/ext-protos/pom.xml
has been updated to add compatibility with Apple Silicon. - Integration steps:
- Move your existing
5-ext/ext-protos/pom.xml
out of thepragma-engine
directory. (If you have never customized this file, you may instead delete it.) - Run make ext to regenerate the
pom.xml
file. - If you made customizations to this file, diff the new and old
pom.xml
files and manually restore the changes you have made.
- Move your existing
- Description:
- The Portal configuration location has changed.
- Description: Portal config has been moved out of
game-config.json
andsocial-config.json
and is now in YAML (e.g.LocalConfig.yml
orCommonConfig.yml
) as part of theFilePortalModulePlugin
settings. - Integration steps:
- Most users will not want to directly translate the
game-config.json
andsocial-config.json
to the yml; the defaults should remain in place for the majority of portal uses. Your config file should only have these entries (with the portalSource value being the path to the folder containing the portal HTML and JavaScript files):
game: pluginConfigs: GameOperatorGatewayNodeService.portalPlugin: class: "FilePortalModulePlugin" config: portalSource: "web/portal-base" social: pluginConfigs: SocialOperatorGatewayNodeService.portalPlugin: class: "FilePortalModulePlugin" config: portalSource: "web/portal-base"
- If you are doing something custom, you’ll want to include the relevant sections in the config to add or override the settings. Here’s an example:
game: pluginConfigs: GameOperatorGatewayNodeService.portalPlugin: class: "FilePortalModulePlugin" config: portalSource: "custom/portal/path" //override modules: 1: "PlayerSupport" 2: null //disable a module 3: "ContentCatalogs" 100: "MyCustomGameModule" //add custom module defaultModule: "MyCustomGameModule" //override discordClientId: "DISCORD_CLIENT_ID" //override social: pluginConfigs: SocialOperatorGatewayNodeService.portalPlugin: class: "FilePortalModulePlugin" config: portalSource: "custom/portal/path" //override modules: 1: "Accounts" 2: null //disable a module 100: "MyCustomSocialModule" //add custom module defaultModule: "MyCustomSocialModule" //override discordClientId: "DISCORD_CLIENT_ID" //override
- Most users will not want to directly translate the
- Description: Portal config has been moved out of
longRangeProxy
has been deprecated.- Description: Please use
randomProxy
instead oflongRangeProxy
. - Details:
- See
2-pragma/core/src/main/kotlin/pragma/utils/RandomProxy.kt
for implementation details. - See
2-pragma/core/src/test/kotlin/pragma/utils/RandomProxyTest.kt
for example usages. - Note the two integration items below regarding
InstancedItemPlugin.init
andRewardSelectorPlugin.init
.
- See
- Description: Please use
- Removed
InstancedItemPlugin.init
method.- Description: Removed
InstancedItemPlugin.init
aslongRangeProxy
has been removed.
- Description: Removed
- Updated
RewardSelectorPlugin.init
parameters.- Description:
longRangeProxy
has been deprecated. - Integration step: use
randomProxy
in place oflongRangeProxy
.
- Description:
Original | Replacement |
|
|
runBlockingTestWithTimeout
has been removed.- Description: We have updated the
runBlocking
functions for unit tests. - Integration steps:
- Use
runTest
in place ofrunBlockingTestWithTimeout
for unit tests. - Use
runIntegrationTest
in place ofrunBlockingTestWithTimeout
for integration tests.
- Use
- Description: We have updated the
Original | Replacement |
|
|
|
As part of a code cleanup, many
runBlocking
calls have been removed.- Description: Many
runBlocking
calls have been removed. This will require changes in your codebase. - Integration step: Make the following changes in your code.
Original Replacement TestAccountManager.operatorClient
TestAccountManager.getOperatorClient()
TestAccountManager.partnerClient
TestAccountManager.getPartnerClient()
PragmaClientFactory.playerEndpointInfo
PragmaClientFactory.getPlayerEndpointInfo()
PragmaClientFactory.operatorEndpointInfo
PragmaClientFactory.getOperatorEndpointInfo()
PragmaClientFactory.partnerEndpointInfo
PragmaClientFactory.getPartnerEndpointInfo()
- Description: Many
Several party
ext
protos have been renamed.- Description: As part of the ongoing development of the party service, a couple
ext
protos have been renamed. You will need to make changes in5-ext
to have empty definitions for these new protos in order to compile. - Integration step: Make the following changes in
5-ext/ext-protos/src/main/proto/shared/partyExt.proto
.
Original Replacement ExtPartyDetails
ExtPublicPartyData
ExtPartyPlayer
ExtPublicPlayerData
- Description: As part of the ongoing development of the party service, a couple
Features: #
- Limited Access Event Mode is now available via the Pragma Portal.
- Description: Limited Access Events (LAEs) restrict which Players can log in and stay logged in to a specific Game Shard by associating Player Groups to an LAE. LAEs also have a start and an end date that will indicate how long the LAE is enforced. LAEs can be turned on in the portal by setting a Game Shard Access Mode to Specific Groups.
Bugs and fixes: #
- Additional validation for
storeEntries
inStores.json
.- Description: The content system will now ensure that
StoreEntries
havereceivedQuantityByCatalogId
field populated. This check is performed during content apply and service startup, and the engine will not start if this field is missing.
- Description: The content system will now ensure that
- Fixed a crash in the SDK when trying to handle valid
CraftV1
responses that containedErrors
associated with the craft attempt.