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
MatchCapacityandMatchLifecycleRaw services. Fixed128s 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.protopragma.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
Exton the front of the name
PingContent.proto- content data goes here
PingContentExt.protoPingContentExt.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.protois good as-is
- Eg.
Integration Notes #
Pragma Package Rename
- any protos using
gg.pragma.core.Fixed128type 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/pragmanamespace/folder instead - change all imports from using
gg.pragma.*to usepragmainstead - Will need to close the Intellij IDE, delete the maven .m2 repo cache for
/gg/pragma, run amake clean buildand restart the IDE and reload Maven Projects gg.pragma.game,gg.pragma.core,gg.pragma.social,gg.pragma.protobufandgg.pragmahave all been combined intopragmapragma.match.lifecyclehas been combined intopragma.matchlifecyclepragma.match.capacityhas been combined intopragma.matchcapacity- Folder structures match package structure much more closely
- Unity SDK replaces
Pragma.Core,Pragma.Game,Pragma.SocialwithPragma - 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