Skip to main content

RPGSystem

This is the core of your TTRPG system. It is going to be the root of the rpg.json file that you will be creating for it, and is essentially what will contain all of your system definitions.

JSON Format

{
"type": "RPGSystem",
"id": ...,
"name": ...,
"abbreviation": ...,
"version": ...,
"min_app_version": ...,
"character_display_name": ...,
"character_stats": ...,
"character_indexed_stats": ...,
"character_sheet_sections": ...,
"character_search_item_view": ...,
"character_creation_flow": ...,
"progression_systems": ...,
"mechanics": ...,
"resources": ...,
"enumerated_types": ...
}

Fields

FieldTypeRequiredDescription
idStringThe id for your system. The id is important as it is what the app uses to identify the system and compare it to other ones.
nameStringThe name of your system. This is the name that is going to be displayed outside of the ball in the system chooser.
abbreviationStringThe abbreviation for your system. It is going to be displayed inside the balls in the system chooser, so it needs to be short.
versionStringThe version of this system. This will tell the app if it should update the system version that it already has downloaded with the one in the repository or not. You will increment this version number every time you release a new system version file in your repo. It uses semantic versioning.
min_app_versionStringOptional. Defaults to null (no minimum app version required). The app is in constant evolution. With time, the developer might release new features (e.g: a new stat formula, or a new view) that you might want to use in your system. If you use such features, you need to make sure to update the min_app_version property to match the recommendation of the developer. Otherwise, old app users might try to update to use your new system file only to have it fail for them, as their app version doesn't know what those new features are.
character_display_nameStringOptional. The id of the stat in a character that represents its name. Defaults to name.
character_statsMap<String, Stat>NOTE: Even though this type shows in this documentation as Map<String, Stat>, it should be treated as List<Stat> instead. This is the list of stats that your character is composed of.
character_indexed_statsList<String>Characters and resources have indexes. These allow the app to quickly retrieve data from the database to provide a good user experience. For search item views (see character_search_item_view), any stat that is directly used in the search item view needs to be added to this index (by id). Note the 'directly' in the last sentence. This means that, if you're using a stat in your search item view which depends on another stat, you do not need to add that second stat to the index (unless, of course, it is directly referenced by the search item view).
character_sheet_sectionsList<CharacterSheetSection>This list allows you to define the sections for the character sheets in your system.
character_search_item_viewRPGViewThe character_search_item_view is the view that will be displayed in the character sheet menu (ie: within the list of all characters). This view has access to the stats of the character, but only the ones that you have defined in the character_indexed_stats property. Please see that property for additional details.
character_creation_flowList<CharacterCreationPage>This list allows you to define the character creation flow (that is, all the pages that are involved in character creation, sequentially). The flow is divided into pages to make things easier for the player. If you only need one page because your system character creation is very simple, that's ok, just use one page. As a rule of thumb, if the player needs to scroll when creating the character, you should probably add another page. Each of these pages can also be used to edit a character. Please read the documentation for CharacterCreationPage for extra details.
progression_systemsProgressionSystemThis property lets you define the progression systems available in the system (e.g: levelling up system, upgrade points, etc).
mechanicsList<Mechanic>This list should contain all the mechanics that you want to run in your character sheet. Resources can contain their own mechanics, of course. But, if a mechanic doesn't belong in a resource, then it should be put here.
resourcesMap<String, Resource>NOTE: Even though this type shows in this documentation as Map<String, Resource>, it should be treated as List<Resource> instead. This list will contain all the resource definitions for your system.
enumerated_typesMap<String, EnumeratedType>NOTE: Even though this type shows in this documentation as Map<String, EnumeratedType>, it should be treated as List<EnumeratedType> instead. This list will contain all the enumerated types in your system.