Pragma Engine 0.3.x #

September 2024

What’s New? #

Highlights #

  • Monetize your game with the new Orders and Fulfillments services

    Use the new multi-game Orders and Fulfillments services to help monetize your game. These services are built on the social shard which unlocks granting items across different games. It also includes a new view of players’ fulfillments in the Game Operator Portal to help with player support.

    With these new services you can sell in-game items such as virtual currency and deluxe editions with pre-implemented plugins for Steam, Epic, and Twitch. See the Orders and Fulfillment docs for more details.

  • Coordinate post-matchmaking activities with the new Game Instance Data Store

    You can use the data store to perform tasks such as alerting players when a host has been selected for a peer-to-peer game, or to perform a post matchmaking ready check before allocating a game server.

    The Data Store allows for sending custom data between players in a game instance whether or not a game server has been allocated. You can specify how data is distributed by syncing it with specific players, parties, or teams. See Add new ExtData message to 5-ext for integration instructions. Read more about the feature in our game instance documentation.

Additional new features #

  • [Party] Party invite updates | full note
  • [Game Instance] Player clients can access all players in a game instance | full note
  • [Accounts] Configure Max Poll Duration for Login Queue using new config field maxCheckTicketPollTimeSeconds | full note


New features #

Multiplayer #

[Party] Improved party invites for all party members #

We added the following features to party invite functionality:

  • Party members can view all invites for their party, regardless of who sent the invite or who the invite was sent to.
  • All party players are alerted when party invites are sent, accepted, declined, or canceled. Previously, only the inviter was alerted.

PartyApi SDK for Unreal example:

//Get all invites for the party
Player->PartyApi->GetPartyCache->Party->GetInvites()

See Update usage of existing PartyApi files, functions, and events for integration instructions.

[Game Instance] Player clients can access all players in a game instance #

Using the GameInstanceApi SDK for Unreal or Unity, player clients can access the player ID and the newly introduced Data Store information for any player in the game instance. For example:

Unreal:

Player->GameInstanceApi->GetGameInstanceCache()->GetGameInstance()->GetPlayers()

Player->GameInstanceApi->GetGameInstanceCache()->GetGameInstance()->GetPlayer(player1_id)->GetDataStore()

Unity:

player.GameInstanceApi.GetGameInstanceCache().GetGameInstance().GetPlayers()

player.GameInstanceApi.GetGameInstanceCache().GetGameInstance().GetPlayer(player1_id).GetDataStore()

See also: Game Instance Reference.

Accounts #

[Accounts] Configure max poll duration for login queue #

You can now increase the desired maximum amount of time a client should wait before checking on the status of the queue using the new config field maxCheckTicketPollTimeSeconds. This limits how often a client can check their login queue wait time.

Previously, the default poll duration could cause stress to the system under heavy load. The new default value is set to 5 minutes.

game:
  serviceConfigs:
    LoginQueueServiceConfig:
      maxCheckTicketPollTimeSeconds: 300


Fixes & improvements #

  • New Application Errors for limited access mode and game shard access denied: LimitedAccessModeApplicationError and GameShardAccessDeniedApplicationError. These errors are thrown when a player does not have access to the game shard they are attempting to log in to.
  • Previously, failure to verify JWTs would produce an exception with the message “bad principal - proto”. The exception message is now “JWT verification failed. Invalid authorization header:” If you are filtering logs for the old exception message, you’ll need to update it to the new exception message.
  • New GatewayConfig.concurrentRequestPerConnection config value provides greater throughput processing by allowing Operator client requests to be processed in parallel.
  • Improved access to custom Application Error data that Pragma Engine sends to Unreal/Unity SDK methods on a failure result. Previously, SDK calls would cause crashes if an application error came through that pathway.
  • For simplicity, FPragmaBan and FPragmaBanRecord types in SDK for Unreal are no longer UObjects and are not usable in Unreal Blueprints.
  • The startup summary for the Pragma Platform now includes an accurate representation of what Portals are enabled and what their URLS are.
  • Stale party and game instance timers are now based on client access time, not creation time. Default expiration time has been lowered from seven days to one day.
  • Components in the Player Data service have been re-architected for future Player Data Module improvements.

Doc changes #

[New Concepts] Multiplayer reference pages split into “backend reference” and “SDK reference” topics. For example: Party Backend Reference and Party SDK Reference.

[New Tutorial] New Player Data tutorial showcases how to build a Player Data Module for granting and managing in-game materials.

SDK compatibility #

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

Patches #

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

0.3.1 #

Fixed a bug where Player Data was not properly generating the protobufs.

0.3.2 #

Fix Player Data generation so you can define Player Data Types that import types from other packages.