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 Player Data and Inventory 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.

Provided vs Custom Content #

The Content Data system supports two categories of content definitions: provided and custom.

Provided content: This is content used by the Pragma Engine Inventory service, such as instanced and stackable item specs. These can be customized by editing ext fields in the 5-ext folder.

Custom content: This content is completely built by the user, who can define custom services, custom JSON, and custom proto definitions.

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