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:

  • templatesA dictionary of character sheet templates.
  • fullsheetHow to draw the full character sheet
  • slugHow to draw the slug, in Operator. This accepts layout code.
  • panelsAn 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"
                    ]