2021-06-15
Pragma Engine Heads up! We’re landing the big Pragma package rename and several deprecations in version 0.0.23. Not to fear; a Pragma engineer will help you with this migration. We will schedule time to help you with this.
Features #
- Converted match making strategy into plugin to provide greater configuration support and extensibility
- Improved error messages when authenticating Discord Unverified users
- Added support for stackable item grants to match end payload
- Unity SDK
- New yield-able Promise/Future interface for RPCs. No more callback hell!
- Unity/C# SDKs
- Raw services can now be accessed directly from
Session.GetService()
[Protocol]
logs now print with more info e.g.[Game WebSocket]
- Added
MatchCapacity
andMatchLifecycle
Raw services. Fixed128
s now print as UUID strings in logs instead of msb/lsb json objects.
- Raw services can now be accessed directly from
Improvements #
Pragma Package Rename!
- Old convention:
- Inconsistent file names and object locations
- Frequently repeat names in multiple places such as:
pragma.lobby.lobbyServicePB.proto
pragma.lobby.CreateAndJoinLobbyV1Request
- Note lobby in package, file name, and method name.
- Inconsistent location
- New Standard:
PingRpc.proto
- Eg.
PingRpc.PingV1Request
- rpcs go here
- Includes factored out / shared types
- It’s okay to reference content protos
- Eg.
PingRpcExt.proto
(java separate files mode)PingRpcExt.ExtPingRequest
- use
Ext
on the front of the name
PingContent.proto
- content data goes here
PingContentExt.proto
PingContentExt.ExtSomePingContentDataType
Ping.proto
- Live data related protos go here (eg. custom player data types, inventory types)
- Proto package namespacing should match the service namespacing
- Eg. pragma.ping
- No group services into subpackages
- Except for example
- The ‘
match
’ subpackage will be flattened
- Preserve (or refactor) current pragma.core
- Eg.
types.proto
is good as-is
- Eg.
Integration Notes #
Pragma Package Rename
- any protos using
gg.pragma.core.Fixed128
type should useimport "pragma/types.proto";
- and replace message types from
gg.pragma.core.Fixed128 example_proto = 3;
toFixed128 example_proto = 3;
- the folder structure no longer is using
/gg/pragma/*
. All files should be moved to a/pragma
namespace/folder instead - change all imports from using
gg.pragma.*
to usepragma
instead - Will need to close the Intellij IDE, delete the maven .m2 repo cache for
/gg/pragma
, run amake clean build
and restart the IDE and reload Maven Projects gg.pragma.game
,gg.pragma.core
,gg.pragma.social
,gg.pragma.protobuf
andgg.pragma
have all been combined intopragma
pragma.match.lifecycle
has been combined intopragma.matchlifecycle
pragma.match.capacity
has been combined intopragma.matchcapacity
- Folder structures match package structure much more closely
- Unity SDK replaces
Pragma.Core
,Pragma.Game
,Pragma.Social
withPragma
- Unreal4 SDK replaces
EPragma_Core_*
withEPragma_*
Deprecation #
Pragma Engine - REMOVED in 0.0.23:
Inventory.upgradeItemV1
- Use
Inventory.updateItemV2
- Use
Inventory.updateItemV1
- Use
Inventory.updateItemV2
- Use
Inventory.storePurchaseV2
- Use
Inventory.storePurchaseV3
- Use
PlayerMatchEnd.stackable_updates
- Use
item_updates
- Use
MatchEndPlayerData.instancedGrants
- Now included in
Inventory.ItemGrants
- Now included in
MatchLifeCycleServicePB.MatchFoundV1Notification
- Should already be using
MatchLifeCycleRpc.MatchConnectionDetailsV1Notification
- Should already be using