Character Sheets
Character sheets are defined outside of the Game's definition because Tabletops (and eventually players) may choose to override these without changing the rules. This would normally get attached to the Tabletop, but there needs to be a default, and it's easiest to think of this outside of the entity type nest.
Games should have as many Sheet definitions as they have entity (character) types defined. If the entity or character can be put on a map and manipulated or operated, it should have a sheet defined. It's okay to re-use the same sheet.
{ "charactersheets":{ "character":{ }, "threat":{ }, "ground_vehicle":{ } } }
Character sheets should be thought of as three "modes":
- The character as Flyouts and a Slug
- The character as seen in a single Sheet
- The character as seen outside of the virtual tabletop or on a mobile device (defaults to Full Sheet)
A character sheet definition JSON blob consists of the following primary keys:
templates
A dictionary of character sheet templates.fullsheet
How to draw the full character sheetslug
How to draw the slug, in Operator. This accepts layout code.panels
An array of template definitions
Here is an example of a sheet definition. Each section is explained in further detail below.
{ "templates": { "notes_block": {...}, "notes_tab": {...}, "info":{...}, "stats":{...}, "description":{...}, "weapons":{...}, "equipment":{...}, "skills":{...}, "info_tab": { ... }, "gear_tab": { ... } }, "fullsheet": { "sections": [ 'info', 'stats', 'description', 'skills', 'weapons', 'equipment', 'notes_block' ] }, "slug": { "layout" : "stacked", "content": [ { "layout": "row", "content": [ { ... }, { ... }, { ... } ] } ] }, "panels": [ "info_tab", "abilities_tab", "skills", "gear_tab", "notes_tab" ] }
Templates
This is a dictionary of interactive content blocks. Content blocks are either atomic elements laid out in a pattern, or templates applied to Collections, or a combination of both. Templates are Layout Code.
Templates should be designed around common intent or group. A template for "skills" should not also contain blocks for attribute editing, for instance. The same content can be used in multiple templates (A flyout may use tabs over scrollable sections, and thus want a different template for the same items).
- These are built entirely in Layout Code.
- A block that displays entries of a Collection. Individual "rows" are described with Layout Code.
- A block definition that can contain multiple templates, either Layout or Collection.
Full Sheet
This describes the display of the "full" character sheet - the one that appears in a window or a character profile page. Currently only a "sections" array is used. This is a simple array of template ID keys. The order in which they are listed is how they will display on the sheet.
"fullsheet":{ "sections":[ "vital_statistics", "skills", "publicnotes", "items" ] }
Slug
Describes the appearance of elements for the Slug in the virtual tabletop interface. This is the section that appears in the upper right corner that includes the character avatar. The Slug definition is Layout Code.
Panels
This describes the display of the Operator flyouts - the buttons that appear on the side of the screen when operating a character. This is a simple array of template ID keys. The order in which they are listed is how they will display in the Operation interface.
"panels":[ "vitals", "skills", "items" ]