Content Data Architecture #

Pragma Engine’s Content Data system is designed for structured, versioned content management. It includes versioned content packages that can be quickly promoted to multiple environments, ensuring production is set up identically to staging. Content Data works together with the various Pragma Engine services to support live service game content with a comprehensive set of tools and workflows.

The Content Data system enables live update scenarios such as rebalancing weapons without game client or server patches. It also supports more complex schema migration scenarios in which new fields are added, removed, and renamed.

Live service games need to patch content constantly, requiring tools and patterns around data versioning and data migration. These must be coordinated across platforms and across multiple game client versions.

Content Data system overview.

In the sections below, we’ll take a look at how the pieces of the Content Data system fit together, and how to create, access, and leverage new content.

Custom content #

The Content Data system supports custom content definitions. This content is completely built by the user with custom JSON and custom proto definitions, and can be utilized through the engine in pre-existing or custom services.

Commands #

typeexplanationcommand
init- initializes a new type of content by creating empty JSON and metadata files

- related proto and Content Handler must be defined
java -jar 5-ext/target/$(COMPANY).jar contentdata init -d <CONTENT PATH> -c <CONTENT HANDLER CLASS NAME> <CONTENT TYPE>

- CONTENT PATH: path to the content directory, with a default of 5-ext/content
- CONTENT HANDLER CLASS NAME: class name of the content handler
- CONTENT TYPE: name of content file without “.json” extension
plan- prints a summary of changes that can be appliedjava -jar 5-ext/target/$(COMPANY).jar contentdata plan -d <CONTENT PATH>

- CONTENT PATH: path to the content directory, with a default of 5-ext/content
apply- applies and packages content changes made to the src files

- prints a plan summary of changes.

Response options:
-y for auto-approve
-v for verbose (prints out entire JSON objects)
java -jar 5-ext/target/$(COMPANY).jar contentdata apply -d <CONTENT PATH>

- CONTENT PATH: path to the content directory, with a default of 5-ext/content