Pragma Engine 0.2.0 #

August 2024

We have available patches for this release; the latest version with patches is 0.2.3. See the Patches section below for details.

What’s New? #

Monitor player wait time and other login queue metrics

Pragma’s observability tools have been extended with an additional dashboard to monitor various login queue metrics. This new dashboard enables you to monitor your players’ connection experiences in real time. It also provides the data needed to adjust your login queue settings and determine if you need to scale up your infrastructure.

Feature summary #

  • [Party] New party invite capabilities | full note
  • [Game Instance] New game instance capabilities | full note
  • [Game Server] New game server allocation process | full note
  • [Player Data] Invoke Player Data Operations from plugins and custom services | full note
  • [Infra & Tooling] View login queue metrics with the new Grafana dashboard | full note

Fixes & Improvements #

  • Previously, the Unsafe identity provider had a different setup than the other identity providers which made it difficult to configure. We’ve now created an Unsafe Identity Provider Plugin that behaves and is configured the same way as all the other Identity Provider Plugins. See the integration note for details.

  • The InviteeReceivedInvitesFull error no longer incorrectly fires when users attempt to perform friends list interactions with users that have full invite received lists.

  • After all players in a party are removed from a MatchmakingGameInstance, the empty party will no longer be contained in the Matchmaking.GameInstance.parties list, enduring the GameInstance in the Matchmaking Service in sync with the GameInstance object in the Game Instance Service.

  • The PragmaAccount::getActiveBans in the AccountPlugin::onAccountDeleted method has been fixed so that it no longer incorrectly includes revoked bans.

  • We’ve made the Data Rights Game Plugin configurable so that you can enable including player inventory in the player’s data rights package using the new config property enableLegacyInventoryDataCollection. By default this property is set to false. See the integration note for details.

  • When all bans on a player’s account are revoked, their session now automatically gets unblocked. Previously, an Operator would need to manually unblock a player’s session by calling PlayerSessionRPC.UnblockPlayerSessionOperatorV1Request. In addition, session blocking on account ban now accurately sets the block duration based on the player’s set of active bans instead of the duration of the last ban applied.

  • A new version ( v1.0.41) of the protoc-custom-plugins package has been released and is now available. The Unity SDK targets will now generate Raw service files for every Pragma service, Fake implementations of those services for testing purposes, and the necessary code within Pragma’s Runtime to automatically create and register the auto-generated Raw services.

  • The following Partner RPCs were added to assist with debugging:

    • MultiplayerRpc.GetCacheInfoOperatorV1Request
    • PartyRpc.GetCacheInfoOperatorV1Request
    • GameInstanceRpc.GetCacheInfoOperatorV1Request
    • MatchmakingRpc.GetCacheInfoOperatorV1Request
  • We have provisioned dedicated agents for deploy pipelines and platform commands to increase Buildkite responsiveness by eliminating situations where you must wait for a build to complete before being able to perform a deploy.

  • In the Unreal SDK, FPragmaWebSocket and FPragmaHttp no longer have the potential to cause RPCs to issue failure callbacks when trying to destruct FPlayer and FServer objects. The destruction method involved in this process has been renamed from UPragmaConnection::CleanupBeforeDestruction to CleanupNonUObjects to better reflect its purpose.

Docs #

SDK Compatibility #

SDKVerified Versions
Unreal Engine4.27, 5.0, 5.1, 5.2, 5.3, 5.4
Unity2021.3.16f1


New Features #

Multiplayer #

[Party] New party invite capabilities #

Using the Pragma Party SDK, interface, and plugins, you can now:

  • Cancel a party invite via player client SDK for Unreal and Unity
  • Handle party invite and cancelation requests from the SDK via Party Plugin methods to determine whether the player should be allowed to send or cancel a party invite
  • Send or cancel party invites directly from any Party Plugin method. For example, you can cancel invites when the party enters matchmaking.
  • Easily access party invite data from the Party Plugin with a list of pending invites (Party.PartyInvite)
  • Player client SDK syncs received party invites after crashing or missing a notification

See Party Tasks for instructions on how to use these new features.

[Game Instance] New game instance capabilities #

  • Player clients can send information to the game instance plugin, where you can implement custom logic based on the information.
  • Control when to end a game instance by invoking GameInstanceInterface.end()from any GameInstancePlugin method. This provides better support for peer-to-peer situations where game servers won’t be calling MatchApi.end(). See integration note for instructions on implementing this change.

[Game Server] New game server allocation process #

The following changes simplify integration with your third-party game server hosting solution.

  • Control when/if to allocate a dedicated game server for a game instance. This provides better support for peer-to-peer situations where a dedicated game server isn’t required.
  • Centralize game server allocation within the new GameServerProviderPlugin (replaces the GameInstanceHostPlugin)
  • Easily develop a Pragma Engine and game server on a local machine with the new pre-built LocalProcessGameServerProviderPlugin. You no longer need to use the Pragma Fleet service for local development.

See the Game Server Allocation Changes for instructions on implementing these changes.

Player Data #

[Player Data] Invoke Player Data Operations from plugins and custom services #

PlayerDataClient is a new class that helps facilitate making Operation calls from Pragma Engine plugins and custom services. See the new task and reference section on how to utilize PlayerDataClient for more implementation details.

Infra & Tooling #

[Infra & Tooling] View login queue metrics with the new Grafana dashboard #

We’ve added a new Grafana dashboard to view the following login queue metrics:

  • Estimated seconds to authenticate
  • Estimated player count in queue
  • Target CCU Limit
  • Game CCU
  • CCU Headroom
  • Target Login Rate per Second
  • Login Rate
  • Estimated Logins Processing
  • Currently Service
  • Last Dispensed

Patches #

For information on updating to the latest Pragma version see Update Pragma Engine.

0.2.1 #

Fixed a bug that caused a crash in the Unreal SDK when an unexpected Application Error was thrown.

0.2.2 #

Fixed a bug where players were not removed from their party on disconnect.

0.2.3 #

Fixed a bug where players were only allowed to have one party invite out at a time. Now players can send out as many invites as they want, but cannot send more than one to the same player. In these situations, the older invite is replaced with the new one.