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.partie
s list, enduring theGameInstance
in the Matchmaking Service in sync with theGameInstance
object in the Game Instance Service.The
PragmaAccount::getActiveBans
in theAccountPlugin::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 tofalse
. 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
andFPragmaHttp
no longer have the potential to cause RPCs to issue failure callbacks when trying to destructFPlayer
andFServer
objects. The destruction method involved in this process has been renamed fromUPragmaConnection::CleanupBeforeDestruction
toCleanupNonUObjects
to better reflect its purpose.
Docs #
- [
Tutorials ] Updated Game Server tutorials for Unreal - [
Concepts ] Updated Game Data docs and removed misleading information on data migrations with content handlers - [
Concepts ] Replaced the Operations and Live Data Reference pages with an all-encompassing Player Data service Reference page - [
Concepts ] Updated Player Data Operations Tasks and Key Concepts to include new Unity SDK generation details
SDK Compatibility #
SDK | Verified Versions |
---|---|
Unreal Engine | 4.27, 5.0, 5.1, 5.2, 5.3, 5.4 |
Unity | 2021.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 callingMatchApi.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 theGameInstanceHostPlugin
) - 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.