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 fieldmaxCheckTicketPollTimeSeconds
| 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
andGameShardAccessDeniedApplicationError
. 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
andFPragmaBanRecord
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 #
[
[
SDK compatibility #
SDK | Verified Versions |
---|---|
Unreal Engine | 4.27, 5.0, 5.1, 5.2, 5.3, 5.4 |
Unity | 2021.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.