Customization Methods #

Customization is central to Pragma Engine’s architecture. You can use a combination of configuration options, plugins, extension data, and custom services to create and adapt features and systems for your game’s needs.

The food chain of flexibility #

Other backend solutions often use a black box approach, where the inner workings of a ready-made tool are hidden for simplicity. This may seem to reduce complexity on the surface, but creates significant friction when a provided solution does not exactly match a game’s design. In situations where the precise, constrained offering doesn’t fully capture a studio’s unique scenarios, the developers are forced into a situation where they must compromise the integrity and creativity of their design. Their options are either give up on their unique game design in favor of a more generic solution that matches the black box strict options, or adopt the complexity of networking, authentication, and other high friction backend tools that the black box solution offered to abstract away in the first place.

Pragma Engine provides three paths for development that capture every use case to support unique game design and reduce friction caused by backend tooling. Adopting the lightweight Pragma Engine pattern for developing custom services means leveraging Pragma’s preexisting authentication, networking, and AWS managed service systems.

Developers have three options:

  • Configuration: tunable values constrained by Pragma’s preset configs, no code required
  • Hybrid: plugins with predetermined interfaces that provide entry points for custom logic
  • Complete freedom: custom service development without the deep complexity of backend environment tooling and setup
Example: Store vs Craft

The Store and Crafting systems provide an excellent example to demonstrate the food chain of flexibility with Pragma Engine.

Configuration: The Store service requires no code for completing basic exchange transactions, with developers only needing to write content data files to configure the store itself. This requires no code but must fit within the limitation of fixed prices.

Example: Trade 30 coins for 3 iron ore.

Hybrid: The Crafting service has a Crafting Plugin that enables the injection of custom code within the larger preset structure. Developers can handle more complex exchange systems that include calculations.

Example: Dynamic starter bundle has 1 helmet (15 coins), 1 armor set (50 coins), and 1 weapon (80 coins). If a player already has the weapon, only charge them 65 coins in exchange for the helmet and armor set.

Complete freedom: If neither of these solutions fully capture a game’s design for item exchange or crafting, instead of compromising their creativity, the developer can create a completely new microservice using this custom service guide.

Content management #

Pragma Engine provides a sophisticated content data system. Developers can define an unlimited number of in-game currencies, consumables, skins, and gear. Game assets continue to be managed within the game client, while the engine provides platform-authoritative content ownership, grants, purchases and crafting. Additionally, metadata that cannot be safely controlled by game clients, such as randomly rolled attributes on weapons, can be managed by the Pragma Engine content system.

The platform supports real-time content enablement and scheduling. This includes supporting data migrations to make live game balance changes and evolve game content rapidly in production.

For more information about content data, see the content data Concepts page.

Configuration #

Pragma Engine uses a list of configuration files at startup to define environment and connection details for each part of your game’s development and release cycle.

Some configuration details are defined by default, while others require you to define your environment’s specific information. You can also choose to override these defaults to further customize Pragma Engine to your needs.

To learn how to customize and set up configuration, see the Configuration Concepts guide.

For a list of configuration options, see Configuration Options in the API Reference guide.

Plugins and extension data #

Many Pragma-provided services support plugins. Plugins allow studios to customize workflows within the engine, for example defining custom matchmaking rules, or authoring custom game data within the inventory and player data services.

Plugins provide a way for developers to inject their own code into Pragma Engine-authored services. They can be configuration-free or configurable.

Extension data is closely tied to plugins and provide a standard way for users to define custom structured data within the engine.

For more information on plugins and extension data, see the Plugins and Extension Data Concepts page.

Custom Services #

Custom services define and support configuration in the same way Pragma Engine services are configured. You define Custom Services in the same way Pragma defines engine services, and use them to extend Pragma Engine features such as gateway routing, authentication, service-to-service calls, and telemetry. Custom services give studios full control of their platform and means they’re never blocked on a missing feature or capability.

For more information about custom services, see the Custom Services Concepts page.