July 5th, 2022

Features #

  • You can now trigger a variety of inventory operations on a per-player basis at match end via the new InventoryOperationsPlugin.
    • Description: You can now update or grant stackable and instanced items on a per-player basis at match end via the new InventoryOperationsPlugin.
    • Details: If you opted into using the early preview of this plugin via the @OptIn(WorkInProgress::class) annotation, please see the integration note below.

Integrations #

  • Update your InstancedItemPlugin to match the new interface.

    • Description: You can now return additional item grants, rewards, and updates on InstancedItemPlugin.newInstanced. Changes have been made to the InstancedItemPlugin interface to support this new feature, so you will need to make updates to your InstancedItemPlugin.

    • Integration steps:

      • UpdateResult has been renamed to InstancedItemPluginResult to reflect that this is the return type for both InstancedItemPlugin.newInstanced() and InstancedItemPlugin.update().
    • In addition to the new return type, newInstanced() has additional parameters.

      OriginalReplacement
      fun newInstanced(
          instancedSpec: InventoryContent.InstancedSpec,
          clientRequestExt: ExtPurchaseRequest?,
          serverRequestExt: ExtInstancedItemServerGrant?
      ): ExtInstancedItem
      
      fun newInstanced(
          instancedSpec: InventoryContent.InstancedSpec,
          inventoryContent: InventoryServiceContent,
          inventoryData: InventoryData,
          clientRequestExt: ExtPurchaseRequest?,
          serverRequestExt: ExtInstancedItemServerGrant?
      ): InstancedItemPluginResult
      
      fun update(
          initialInstancedItem: InstancedItem,
          instancedSpec: InventoryContent.InstancedSpec,
          updateEntry: InventoryContent.UpdateEntry,
          inventoryContent: InventoryServiceContent,
          inventoryData: InventoryData,
          clientRequestExt: ExtInstancedItemUpdate?,
          serverRequestExt: ExtInstancedItemServerUpdate?
      ): UpdateResult
      
      fun update(
          initialInstancedItem: InstancedItem,
          instancedSpec: InventoryContent.InstancedSpec,
          updateEntry: InventoryContent.UpdateEntry,
          inventoryContent: InventoryServiceContent,
          inventoryData: InventoryData,
          clientRequestExt: ExtInstancedItemUpdate?,
          serverRequestExt: ExtInstancedItemServerUpdate?
      ): InstancedItemPluginResult
      
  • Follow the integration steps below to fully remove the Progression service. Note that steps are organized based on your Pragma Engine version.

    • Description: The Progression service and all related protos, classes, and utils have finally been removed. The Progression service and all related protos, classes, and uils have finally been removed.
    • Integration steps: Depending on the version of Pragma Engine you’re upgrading from, steps will vary.
      • If you’re currently on Pragma Engine 0.0.70 or later:
        • Rename the following service calls:

          OriginalReplacement
          MatchEndV2MatchEndV4
          PlayerMatchEndV2PlayerMatchEndV4
        • After confirming that they do not contain any wanted data, manually drop the player_progression databases.

        • If you’re using the Docker environment provided via /pragma-engine/platform/devenv/docker-compose-devenv for local development, you can also drop the following databases:

          • ete_test_game_player_progression1
          • ete_test_game_player_progression2
          • lobby_match_ete_test_game_player_progression1
          • lobby_match_ete_test_game_player_progression2
          • local_game_player_progression1
          • local_game_player_progression2
          • test_local_game_player_progression1
          • Test_local_game_player_progression2
      • If you’re currently on Pragma Engine 0.0.69 or earlier, update to Pragma Engine 0.0.73 first by following all required integrations listed in prior release notes, then update to Pragma Engine 0.0.74 by following the steps detailed in this release note.
    • If you’re an early user of PlayerDataUpdatesPlugin, rename the PlayerDataUpdatesPlugin to InventoryOperationsPlugin.
      • Description: See feature note above.

Bugs and Fixes #

  • You can now view and edit huge JSON files in Pragma Portal without your browser tab locking up.
  • Matchmaking now sends team assignment information to the game server.
    • Description: Matchmaking assigns teams to parties that enter matchmaking, but this information was not being sent to the game server. This is now properly sent to the game server.
    • Details: Added new team_number field to the PlayerInfoV2 payload that is sent to game servers in MatchDataV2. This field will be populated with the team number the player was assigned in matchmaking.