Pragma Engine 0.0.72

June 14th, 2022

Features #

  • New Party plugin function added to manage player ready states.
    • Description: The new Party plugin function canChangeReady which is called when players attempt to call SetReadyState. Return true to accept the update, and false to deny it.
    • Related notes: See ready state integration note and docs note.
  • Unity: The Unity game server now reports match capacity usage.
    • Description: The Unity game server now uses ReportCapacityPolling to communicate match capacity usage to Pragma Engine from when a match has been allocated until the match is complete.
  • Portal: Pragma Portal can now grant items and reward tables to players.
    • Description: You can now grant items and reward tables to players via the Pragma Portal. This can be found in the Player Support on a player’s page, under Inventory for a specific game. There are now buttons for granting rewards and items.
  • Portal: Now contains a richer view of player inventory.
    • Description: You can now view player inventory items with details, filtering, and sorting. This can be found in Player Support on a player’s page under Games > Inventory.

Deprecations #

  • Reimplement all GameDataStrategyPlugin logic in the new LoginDataPlugin.
    • Description: The GameDataStrategyPlugin is being removed in favor of a new plugin, LoginDataPlugin, which defines the dependent jobs to be run to collect login data.
    • Integration steps:
      • Reimplement all your custom logic from GameDataStrategyPlugin into LoginDataPlugin. While GameDataStrategyPlugin and LoginDataPlugin are both designed to accomplish the same tasks, their structures are different, so you cannot simply copy your existing code over.
        OriginalReplacementRemoval Patch
        GameDataStrategyPluginLoginDataPlugin0.0.74

Integrations #

  • Rename methods and objects in implementations of MatchEndPlugin.

    • Description: MatchEndPlugin has been modified. The changes are mostly cosmetic, with new names for objects that reflect their nature more clearly. The most substantive change is that access to the DependentJobContext (old MatchEndContext) and the ThreadsafeMutable (old ConcurrentNotificationBuilder) are now provided on the method signature of the DependentJob (old MatchEndBuilder) instead of injected on construction.

    • Integration steps:

      • Rename the following items:
      OriginalReplacement
      MatchEndPlugin.getMatchEndBuildersMatchEndPlugin.getMatchEndJobs
      MatchEndContextDependentJobContext
      ConcurrentNotificationBuilderThreadsafeMutable
      MatchEndBuilderMatchEndDependentJob
      • Access DependentJobContext and ThreadsafeMutable via the methods on MatchEndDependentJob.
  • Add canChangeReady implementation to Party plugin.

    • Description: Implementing this function is required for the new ready state feature.
    • Integration step: Add this function to Party plugin implementations to compile.
    • Related notes: See ready state feature note and docs note.
  • Update references to Inventory service’s matchEndV1 and matchEndV2 endpoints to matchEndV4.

    • Description: The Service endpoints InventoryService.matchEndV1 and InventoryService.matchEndV2 have been replaced with InventoryService.matchEndV4, along with related protos.
      These calls only require integration if you’re calling them from a custom service. Pragma Engine handles all version bumps for Pragma-owned services.

    • Integration steps:

      • Update references to the following:
      OriginalReplacement

      InventoryService.matchEndV1
      InventoryService.matchEndV2

      InventoryService.matchEndV4

      InventoryRpc.MatchEndV1Request
      InventoryRpc.MatchEndV1Response
      InventoryRpc.MatchEndV2Request
      InventoryRpc.MatchEndV2Response

      InventoryRpc.MatchEndV4Request
      InventoryRpc.MatchEndV4Response

  • Update references to Inventory service’s deletePlayerInventoryV1 endpoint to deletePlayerInventoryV2.

    • Description: The dev-only endpoint Player endpoint InventoryService.deletePlayerInventoryV1 has been replaced with InventoryService.deletePlayerInventoryV2, along with related protos.

    • Integration steps:

      • Update references to the following:
      OriginalReplacement

      InventoryService.deletePlayerInventoryV1

      InventoryService.deletePlayerInventoryV2

      InventoryRpc.DeletePlayerInventoryV1

      InventoryRpc.DeletePlayerInventoryV2

  • Update references to Lobby service’s endpoint lockV1 to lockV2.

    • Description: The Service endpoint LobbyService.lockV1 has been replaced with LobbyService.lockV2, along with related protos.
      These calls only require integration if you’re calling them from a custom service. Pragma Engine handles all version bumps for Pragma-owned services.

    • Integration step:

      • Update references to the following:
      OriginalReplacement

      LobbyService.lockV1

      LobbyService.lockV2

      LobbyRpc.LockV1Request LobbyRpc.LockV1Response

      LobbyRpc.LockV2Request LobbyRpc.LockV2Response

  • Update references to Match Lifecycle service’s matchendV3 to matchEndV4.

    • Description: The Partner endpoint MatchlifecycleService.matchEndV3 has been replaced with MatchlifecycleService.matchEndV4, along with related protos.
      The new endpoint does not include any Progression-related data fields on the payload.
      Note that matchEndV4 can still send MatchEndNotificationV2 messages, which have Progression-related fields, as the MatchEndNotificationV2 deprecation is still in progress.

    • Integration step:

      • Update references to the following:
      OriginalReplacement

      MatchlifecycleService.matchEndV3

      MatchlifecycleService.matchEndV4

      MatchlifecycleRpc.MatchEndV3Request MatchlifecycleRpc.MatchEndV3Response

      MatchlifecycleRpc.MatchEndV4Request MatchlifecycleRpc.MatchEndV4Response

  • Modify all custom IdentityProviders to return IdProviderAccount instead of PragmaResult<IdProviderAccount, PragmaError>.

    • Description: The validate function in IdentityProviderPlugins has been changed to either return an IdProviderAccount on success or to throw a PragmaException otherwise.
    • Integration step:
      • Modify any custom IdentityProviders to return an IdProviderAccount where they would return a PragmaResult containing the IdProviderAccount, and to throw a PragmaException when they would return a PragmaResult containing an error.
      OriginalReplacement
      PragmaResult<IdProviderAccount, PragmaError> containing an IdProviderAccountIdProviderAccount
      PragmaResult<IdProviderAccount, PragmaError> containing a PragmaErrorThrow a PragmaException
  • Unreal: Update references to UpdateLoadout in Party service to UpdatePlayerSelections.

    • Description: These renames will make the SDK interfaces better conform to the RPC endpoints.
    • Integration step:
      • Update references in the Unreal SDK’s Party service to the following:
      OriginalReplacement
      UpdateLoadoutV1UpdatePlayerSelectionsV1
      CanUpdateLoadoutV1CanUpdatePlayerSelectionsV1

Docs #

  • [New Services Guide] New Content Data landing page is now live!
    • Description: The brand new Content Data landing page contains everything you need to understand the Content Data system, from adding content to accessing and leveraging that content.
  • [Updated Services Guide] Hidden Inventory summary and related quick guide have been added to the Items Services page.
  • [Updated Services Guide] Steam authentication quick guide has been updated on the Authentication Services page.
  • [Updated Services Guide] Ready state quick guide has been updated on the Party Services page.
    • Related notes: See ready state feature note and integration note.
  • [Updated Getting Started Guide] Added Postman reminder to Initial Setup page.
    • Description: Remember to occasionally pull the latest Postman collection after new releases to ensure you’re getting updated calls.