Customizing the Engine #

Fundamental to the Pragma architecture is the concept of customization. Levels of customization range from adjusting ready-made features via configuration to authoring plug-ins that customize Pragma services, to authoring game-specific microservices from scratch utilizing the Pragma Engine foundations.

Configuration #

Some game features are non-differentiated but need to work reliably at scale, for example cross-platform accounts or the data analytics pipeline. In these cases customization is a matter of configuring the platform to activate the desired game platform identify providers, or configuring the appropriate integration into a preferred analytics stack.

Plugins #

Many Pragma services provide an opinionated workflow that can be customized through plugins. The Pragma service driving the workflow invokes studio authored plugins at various points. These plugin handlers can act to customize state and logic, handle events, and perform other context specific actions.

Plugins are authored in Kotlin and loaded and registered through configuration. In many cases pre-defined plugins are available for typical use cases and can be activated directly through configuration without requiring any plugin code to be written. These pre-defined plugins often serve as a template that studios start with that then are customized to the game’s specific needs.

Custom Services #

Pragma Engine provides a rich set of engine foundations, including network, authentication, routing, caching, persistence, sdk generation, and many other facilities. When a game requires something that doesn’t fit into an existing Pragma service, studios author their own services within Pragma. By taking advantage of the engine foundations, many complex tasks regarding scalability and live ops are already handled, allowing the studio to focus on the game features. Pragma’s managed service offering includes hosting studio authored services, ensuring a single conslidated dev ops stack that is managed for you, rather than tangle of hetergeneous technologies that all have to be coordinated and managed separately.

In the not uncommon case where studios already have existing services, Pragma provides a rich set of mechanisms to enable trusted service-to-service integration. Pragma provides a dedicated gateway to facilitate trusted service-to-service communication between external services such as dedicated game servers or backend microservices running outside of Pragma. Like the rest of the engine, this gateway can be customized to add callbacks and hooks specific for the games needs, ensuring a seamless integration in even complex scenarios.

Player Data and Content management #

The Player Data and content management system provides a powerful set of tools that power inventory, loadouts, progression, quests, and meta-game systems perfectly tailored to your game design. Pragma also provides a growing collection of ready-made modules that provide drop-in solutions for prototyping or features that don’t need a lot of customization.

The platform supports dynamic content deployment and patterns for scheduling content. This includes supporting deploying live game balance changes without game client patches for deploying game content rapidly in production.

Summary #

Pragma provides a multi-tiered set of features and capabilities for building online multiplayer games. Undifferentiated features are built for scale and are enabled with configuration, opinionated services offer flexibility and customization through plugins, and the engine foundations significantly speed up and de-risk execution of custom services built specific to a game’s needs.