How we built Pragma for backend engineers

Chris Cobb

Chris Cobb

Co-Founder & CTO

How we built Pragma for backend engineers In Blog 1920x1080px v.1.0Blog-1920x1080px

This series is intended to inform you of the Pragma game engine capabilities and how its novel design gives you all the benefits of a custom, in-house backend without the associated risks and overhead of building one.


Pragma is a backend game engine that offers a rich set of features that support cross-platform accounts, authentication, parties, matchmaking, coordinating dedicated servers, and building robust player data features like battlepasses, crafting systems, quests… anything you can think of! Check out the rest of this article for a brief overview of how we built the Pragma backend engine for engineers.

Built for Engineers

Unlike “black box” backend offerings, Pragma provides an engine with complete source code access and local dev environments. It can be run yourself or operated by us as part of our managed infrastructure offering. Studios using Pragma remain in full control and own the code they author for the life of their game. Unreal Engine was a big inspiration for this approach. You don’t start by building your own game engine (at least not these days!), but instead, you can download Unreal and get a tremendous head start on many of the difficult technical problems while leaving you in full control of building the game you’ve designed. Pragma is very much the same; we've done a ton of the hard bits, including networking, session management, request routing, caching, and data storage; stuff that needn't be written from scratch every time. There’s no need to build this stuff from scratch; instead, you can focus on building fun games that players love (which is hard enough as it is)!

Extending Pragma

To get started with Pragma you get the codebase and simply configure the identity provider plugins to log in to Steam, Playstation, Xbox, etc.

Do you want to get players into matchmaking? You write a few lines of code to tell our matchmaker how you want to find other players.

Do you want to build robust, persistent systems with a unique hook for your players? You can define items, quests, currencies, battle passes, unlock systems, progression, and more as you see fit with our highly-flexible player data system.

We wrote Pragma from the ground up to allow you to extend its existing feature set with code to let you build what your game needs as a first-class feature.

For example, this means you don’t have to contort your game design to fit in with what a black box product defines an “item” as. You don’t have to write your own features and feel the pain of managing your own infrastructure when the promise of the black box’s extensibility is broken, and you’re forced to start writing backend services on your own tech stack alongside the other offering.

Custom Services

Pragma custom services are written entirely within the Pragma environment. You have the same access and foundations as our core features, while still staying within the same tech stack. Pragma’s managed service offering hosts core Pragma features alongside custom features, providing one seamless experience for operating the backend. Pragma provides the same metrics, analytics, and live ops tooling for your features that we use to operate and maintain the built-in features, resulting in a cohesive live ops experience instead of a disjoint set of home-grown tools combined with various managed features from various providers.

This means that regardless of the feature you want, you can write it as a first-class feature within Pragma, and it will compile down as part of the core Pragma engine. We even generate your SDK code for you!

This service could be anything from a simple Message of the Day service, with its own admin portal features to let your team update the message easily, to hitting a weather API to ensure that your mobile creature collection game generates creatures with dynamic elements based on what’s happening in the player’s actual location.

Pragma Never Blocks You

If Pragma ever doesn’t provide a feature or our built-in services do something unexpected, you have the power to unblock yourself without leaving the Pragma ecosystem. Instead of waiting weeks or months for us to build a feature for you, you are empowered to do it yourself with the Pragma backend game engine.

This is a core guiding principle for us where, much like with Unreal, the moment the core game engine does something you’d rather behave differently, you can go in and change the engine. This leaves you in full control throughout the journey, which we strongly prefer to the approach of an offering that only one-size-fits-all features that often fail to match the needs of the game.

We provide full engine access from day one to enable studios to solve their problems without ever being blocked. While it’s always preferred to stick with the provided capabilities, we’ve all experienced the need to add functionality to the underlying tools when they don’t match our needs.

A small example of this was when a particular notification didn’t include the playerId in a notification that a server would receive from the Inventory service. With a black box offering, the studio would be stuck making a feature request and hoping the provider would prioritize it. In this case, however, the studio simply made the change themselves and enabled the feature they needed. They were able to remove their small engine mod once our team was able to make their change in a future engine release.

The customer was able to modify their core engine functionality to include this, effectively unblocking them almost immediately instead of waiting for us to prioritize it. This fundamental shift in control from Pragma to the studio is at the heart of what makes Pragma unique.

Summary

So there you have it: Pragma offers a game backend engine that combines the ease of traditional platforms with the flexibility of source access and managed infrastructure. There’s no need to fuss with an array of microservices.

Pragma handles complex backend tasks like authentication, matchmaking, and player data management while allowing developers to extend and customize their game's backend through plugins, custom services, or core engine modifications.

This approach empowers developers to focus on creating unique game features without being limited by the backend. To boot, devs can accomplish all this in a local environment on their laptop. Being forced to iterate up against shared environments hosted elsewhere slows down dev cycles, creates collisions between engineers and designers, and makes it painful to test and iterate quickly.


Wanna learn more? Check out the rest of the ‘Introduction to Pragma’ series:

Please reach out to us if you’d like to know more about Pragma by emailing us at info@pragma.gg

Other posts

Contact Us

Pragma is currently working with a select group of studios in development.

A great underlying platform is essential in bringing players together. Pragma's technology lets us focus on the creative side of game development while offloading much of the complexity of shipping at scale.

Nate Mitchell

Founder of Mountaintop Studios and Oculus