June 1st, 2022
Features #
Inventory items can now be hidden from players.
Description: Player stats such as matchmaking ratings can be tracked as
ext
fields on instanced items. These items can now be hidden to avoid leaking data to players.The table below contains a list of affected service calls and their new behavior.
Service call Description craftV1
,storePurchaseV4
,updateItemV4
, andupdateItemsV0
returned segments/deltas won’t contain items with tags that match the configuration getStoresV0
return stores will not contain store entries with tags that match the configuration getInventoryV2
returned inventory will not contain instanced and stackables whose corresponding content specs contain tags that match the configuration GameDataService.GetLoginDataV1
which usesInventoryService.GetLoginData
returned player inventory and content items (stores, update entries, item catalog, crafting entries, etc) are all filtered based on the tags in the configuration GetInventoryServiceV3
inventory data split by hidden
andplayer
visible itemsUpdateItemsPartnerV2
,UpdateItemsServiceV2
, andGrantItemsServiceV2
segments/deltas split by hidden
andplayer
visible itemsGame server
hostname
andport
information can now be provided as part of theMatchReadyV1Notification
.- Description: Previously, game servers communicated
hostname
andport
information to game clients viaext
behavior. We’ve promoted this functionality into base Pragma. Game servers can now providehostname
andport
information through theMatchLifecycleService.MatchReadyV2
endpoint. However, if you’ve already implemented this functionality viaext
, you can keep using that implementation indefinitely.
- Description: Previously, game servers communicated
Operators can now clear all inventory caches.
- Description: Added Operator endpoint for
ClearAllInventoryCacheOperatorV1Request
. This already existed as a Service endpoint, and is now available for Operator.
- Description: Added Operator endpoint for
Partners can now get filtered Pragma account overviews.
- Description: Added Partner endpoint for
GetPragmaAccountOverviewsPartnerV1Request
. This already existed as an Operator endpoint, and is now available via Partner.
- Description: Added Partner endpoint for
Partners can now get full inventory for a player.
- Description: Added Partner endpoint for
GetInventoryPartnerV1Request
. This already existed as an Operator endpoint, and is now available via Partner.
- Description: Added Partner endpoint for
[Portal] The content catalog is now shown in a more readable format by default with JSON rendering of ext data.
[Portal] Date of player account creation and last login is now shown.
[Portal] Rendering of date and time throughout Pragma Portal is now consistent.
- Description: Datetimes are now shown in 24h format in the browser’s timezone. On hover, the UTC datetime is shown. Example:
27 May 2022 14:34:12 (Europe/Bucharest)
.
- Description: Datetimes are now shown in 24h format in the browser’s timezone. On hover, the UTC datetime is shown. Example:
Deprecations #
- Remove any references to
LeaderClientVersion
field.- Description: The
LeaderClientVersion
field ofEnterMatchmakingV2Request
RPC andMatchmakingParty
Kotlin object is being removed as it is unnecessary.Original Replacement Removal Patch LeaderClientVersion
field ofEnterMatchmakingV2Request
RPC andMatchmakingParty
objectNo replacement needed 0.0.71
- Description: The
- Update
deletePlayerInventory
endpoints to new versions to remove Progression service data.
Original | Replacement | Removal Patch |
---|---|---|
|
| 0.0.71 |
- Update endpoints to new versions to capture Progression service removals.
Description: Endpoints that currently return progression-related data are being versioned to no longer include the progression data fields.
The Inventory and Lobby service RPC calls only require integration if you’re calling them from a custom service. Pragma Engine handles all version bumps for Pragma-owned services.
Original | Replacement | Removal Patch |
---|---|---|
|
| 0.0.72 |
|
| 0.0.72 |
|
| 0.0.72 |
Integrations #
Create a new
recreateParty
function definition.- Description: We’ve added a new plugin flow to the
PartyService
which will enable handling recreated parties with custom logic. - Integration steps:
- Add a new
recreateParty
function definition to custom implementations ofPartyPlugin
in order to compile.
- Add a new
- Description: We’ve added a new plugin flow to the
Replace listed
InventoryRpc
protos.- Description: We’ve completed the move from the listed protos and are now removing the old ones.
- Integration step: Replace the listed
InventoryRpc
protos.Original Replacement InstancedDelta
InstancedDeltaV2
InventoryDeltaV1Data
InstancedDeltaV2
Move over from the Progression service to the Inventory service.
- Description: The Progression service is being removed.
- Integration step: If you are currently using the Progression service, please contact us for help moving over to the Inventory service.
Remove
gatewayWorkerThreadpoolSize
value in config YAML files.- Description: Ktor defaults create thread pools of the appropriate size, so this configuration is not needed.
- Integration step: Remove
gatewayWorkerThreadpoolSize
value in config YAML files.
Add required Maven dependency to
5-ext/ext/pom.xml
.Description: We’re moving Test Factory classes into the core engine to better separate the proto auto generated code steps from the rest of the engine build. In the future, generated code will be embedded directly into the engine library, rather than linked through a library dependency. This will streamline incremental builds and make the overall engine project structure simpler.
Integration step:
Add the following Maven dependency to5-ext/ext/pom.xml
if it is not already here. Ifpragma.mvn.version
is undefined, match whatever version you are using for other engine dependencies (eg.${revision}
, orPRAGMA-LOCAL-SNAPSHOT
).<dependency> <groupId>pragma</groupId> <artifactId>core</artifactId> <version>${pragma.mvn.version}</version> <type>test-jar</type> <scope>test</scope> </dependency>
Create a new local configuration file to continue using custom portlets.
- Description: Custom portlets can now be loaded from any custom directory under
platform/web/portal/src/portlets
. If you currently have aportlets/5-ext
directory with custom portlets, follow the integration steps to include them in the build. - Integration steps:
Create
platform/web/portal/portalDevConfig.local.js
(next toportalDevConfig.default.js
).Add the following contents to
portalDevConfig.local.js
:module.exports = { default: { 'portlets.extraSrcDirs': ['5-ext'] }, deploy: { target: ['5-ext/portal'] } }
- Description: Custom portlets can now be loaded from any custom directory under
Make the following changes for project structure improvements.
- Description: To enable the recent project structure improvements, make the following changes, which are listed by file.
- Integration steps:
In
5-ext/pom.xml
:- Remove
<module>ext-protos</module>
from<modules>
. - Add
<groupid>[studio_name]</groupid>
above<artifactId>
tag. - Add the following properties block:
<properties> <revision>[project_name]-LOCAL-SNAPSHOT</revision> <company>[project_name]</company> <pragma.version>LOCAL</pragma.version> <pragma.mvn.version>PRAGMA-LOCAL-SNAPSHOT</pragma.mvn.version> </properties>
- Remove
In
5-ext/ext/pom.xml
:- Change
<parent><groupId>pragma</groupId></parent>
to<parent><groupId>[studio_name]</groupId></parent>
with your studio’s name in the brackets. - Change the following dependency block:
Original Replacement <dependency> <groupId>pragma</groupId> <artifactId>ext-protos</artifactId> <version>${revision}</version> </dependency> <dependency> <groupId>pragma</groupId> <artifactId>ext-protos</artifactId> <version>${revision}</version> <type>test-jar</type> <scope>test</scope> </dependency>
<dependency> <groupId>[studio_name]</groupId> <artifactId>ext-protos</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>[studio_name]</groupId> <artifactId>ext-protos</artifactId> <version>${project.version}</version> <type>test-jar</type> <scope>test</scope> </dependency>
- Change the following dependency block:
Original Replacement <dependency> <groupId>pragma</groupId> <artifactId>core</artifactId> <version>${revision}</version> </dependency>
<dependency> <groupId>pragma</groupId> <artifactId>core</artifactId> <version>${pragma.mvn.version}</version> </dependency>
- Change
For each of the dependencies listed, update
${revision}
to${pragma.mvn.version}
. Be sure to check for and update two dependency blocks, one default, and one with<type>test-jar</type>
:pragma.core
pragma.server-base
pragma.social
pragma.game
pragma.game-common
Pragma.social-common
In
5-ext/ext-protos/pom.xml
:- Make the following
parent
change:
Original Replacement <parent> <groupId>pragma</groupId> <artifactId>5-ext</artifactId> <version>${revision}</version> </parent>
<parent> <groupId>pragma</groupId> <artifactId>engine-settings</artifactId> <version>PRAGMA-LOCAL-SNAPSHOT</version> <relativePath>../../engine-settings.xml</relativePath> </parent>
- Add
<groupId>[studio_name]</groupId>
above the<artifactId>
tag. - Add
<version>[studio_name]-LOCAL-SNAPSHOT</version>
below the<artifactId>
tag. - For each of the dependencies listed, update
${revision}
to${pragma.mvn.version}
:pragma.proto-defs
pragma.proto-defs
(<type>test-jar</type>
)
- Make the following
In
5-ext/ext-server/pom.xml
:- For the
pragma.server-base
dependency, update${revision}
to${pragma.mvn.version}
. - Change
<parent><groupId>pragma</groupId></parent>
to<parent><groupId>[studio_name]</groupId></parent>
. - Make the following dependency change:
Original Replacement <dependency> <groupId>pragma</groupId> <artifactId>ext</artifactId> <version>${revision}</version> </dependency>
<dependency> <groupId>[studio_name]</groupId> <artifactId>ext</artifactId> <version>${project.version}</version> </dependency>
- For the
Bugs and Fixes #
- SDK
RefreshToken
flows now run at appropriate intervals.- Description: Authentication token intervals were previously dependent on clients’ clocks, leading to incorrect refresh intervals when clocks were incorrect. Token refresh intervals are now independent of player clocks.
- Searching for display names containing the
#
(number sign) character now works properly.