June 1st, 2022
Features #
Inventory items can now be hidden from players.
Description: Player stats such as matchmaking ratings can be tracked as
extfields 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, andupdateItemsV0returned segments/deltas won’t contain items with tags that match the configuration getStoresV0return stores will not contain store entries with tags that match the configuration getInventoryV2returned inventory will not contain instanced and stackables whose corresponding content specs contain tags that match the configuration GameDataService.GetLoginDataV1which usesInventoryService.GetLoginDatareturned player inventory and content items (stores, update entries, item catalog, crafting entries, etc) are all filtered based on the tags in the configuration GetInventoryServiceV3inventory data split by hiddenandplayervisible itemsUpdateItemsPartnerV2,UpdateItemsServiceV2, andGrantItemsServiceV2segments/deltas split by hiddenandplayervisible itemsGame server
hostnameandportinformation can now be provided as part of theMatchReadyV1Notification.- Description: Previously, game servers communicated
hostnameandportinformation to game clients viaextbehavior. We’ve promoted this functionality into base Pragma. Game servers can now providehostnameandportinformation through theMatchLifecycleService.MatchReadyV2endpoint. 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
LeaderClientVersionfield.- Description: The
LeaderClientVersionfield ofEnterMatchmakingV2RequestRPC andMatchmakingPartyKotlin object is being removed as it is unnecessary.Original Replacement Removal Patch LeaderClientVersionfield ofEnterMatchmakingV2RequestRPC andMatchmakingPartyobjectNo replacement needed 0.0.71
- Description: The
- Update
deletePlayerInventoryendpoints 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
recreatePartyfunction definition.- Description: We’ve added a new plugin flow to the
PartyServicewhich will enable handling recreated parties with custom logic. - Integration steps:
- Add a new
recreatePartyfunction definition to custom implementations ofPartyPluginin order to compile.
- Add a new
- Description: We’ve added a new plugin flow to the
Replace listed
InventoryRpcprotos.- Description: We’ve completed the move from the listed protos and are now removing the old ones.
- Integration step: Replace the listed
InventoryRpcprotos.Original Replacement InstancedDeltaInstancedDeltaV2InventoryDeltaV1DataInstancedDeltaV2
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
gatewayWorkerThreadpoolSizevalue in config YAML files.- Description: Ktor defaults create thread pools of the appropriate size, so this configuration is not needed.
- Integration step: Remove
gatewayWorkerThreadpoolSizevalue 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.xmlif it is not already here. Ifpragma.mvn.versionis 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-extdirectory 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.corepragma.server-basepragma.socialpragma.gamepragma.game-commonPragma.social-common
In
5-ext/ext-protos/pom.xml:- Make the following
parentchange:
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-defspragma.proto-defs(<type>test-jar</type>)
- Make the following
In
5-ext/ext-server/pom.xml:- For the
pragma.server-basedependency, 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
RefreshTokenflows 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.