Adding 'data.md'
This commit is contained in:
131
SessionZero/data.md
Normal file
131
SessionZero/data.md
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
# SessionZero Data
|
||||||
|
|
||||||
|
## Datapack
|
||||||
|
|
||||||
|
Datapacks contain multiple Datasets as well as their DatasetObject Template files and other resource files
|
||||||
|
|
||||||
|
### Datapack Archive File Structure
|
||||||
|
```text
|
||||||
|
datapack_name/
|
||||||
|
├─ resources/
|
||||||
|
│ ├─ images/
|
||||||
|
│ ├─ audio/
|
||||||
|
├─ datasets/
|
||||||
|
│ ├─ dataset_name/
|
||||||
|
│ │ ├─ objects/
|
||||||
|
│ │ │ ├─ object_name.szo
|
||||||
|
│ │ ├─ dataset.meta
|
||||||
|
├─ templates/
|
||||||
|
│ ├─ template_name.sztl
|
||||||
|
├─ datapack.meta
|
||||||
|
├─ README.md
|
||||||
|
├─ icon.png
|
||||||
|
```
|
||||||
|
|
||||||
|
### `datapack.meta` file
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "SessionZero Core",
|
||||||
|
"id": "sz_core",
|
||||||
|
"uuid": "95c6d3c9-3213-4256-b3db-b004d0fb95b7",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"compatible_systems": "sz_core, d20",
|
||||||
|
"description": "SessionZero Core Datapack"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dataset Metadata (`dataset.meta`) File Definition
|
||||||
|
|
||||||
|
- The `id` field MUST be unique from other datasets listed withing the containing datapack
|
||||||
|
- `dataset_type` is an arbitrary string that is used to identify what the general "type" of data the dataset contains
|
||||||
|
- `object_template` is the template definition used for creating dataset objects. It must be present in the parent datapack's `templates/` directory
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "SessionZero Core Items",
|
||||||
|
"id": "core_items",
|
||||||
|
"icon": "icons/items_icon",
|
||||||
|
"description": "A set of simple items",
|
||||||
|
"dataset_type": "item",
|
||||||
|
"object_template": "core_item"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## DatasetObject Template File
|
||||||
|
|
||||||
|
- Metadata fields are denoted with a `!` and are required for this template:
|
||||||
|
- `data_type` is an arbitrary value used to denote what kind of dataset type the template is for.
|
||||||
|
- The `uuid` field can be left at 0, but when uploading to the SessionZeroDB a uuid will be assigned.
|
||||||
|
- The `id` must be unique within the datapack
|
||||||
|
- `compatible_systems` is arbitrary and only reflects if the template can be used in a datapack according to it's `compatible_systems` value
|
||||||
|
- Some default fields are required by the default parser:
|
||||||
|
- `name: text` must be present
|
||||||
|
|
||||||
|
```ini
|
||||||
|
!id = "core_item"
|
||||||
|
!uuid = 0
|
||||||
|
!version = "1.0.0"
|
||||||
|
!data_type = "item"
|
||||||
|
!compatible_systems = "sz_core, d20"
|
||||||
|
!description = """
|
||||||
|
Core SessionZero item template
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
# Top-level fields
|
||||||
|
name: text
|
||||||
|
description: textblock
|
||||||
|
|
||||||
|
# Example of a group
|
||||||
|
stats {
|
||||||
|
value: number
|
||||||
|
weight: number
|
||||||
|
|
||||||
|
# Example of a sub-group
|
||||||
|
modifiers {
|
||||||
|
|
||||||
|
# Field with a default value
|
||||||
|
base: number = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## DatasetObject object (.szo file)
|
||||||
|
|
||||||
|
An instanced DatasetObject should only contain simple fields and values, no object references or formulas
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": "some_id",
|
||||||
|
"uuid": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
|
||||||
|
"name": "Human readable name",
|
||||||
|
"template_id": "some_template_id",
|
||||||
|
"parent_dataset_id": "some_dataset_id",
|
||||||
|
"description": "A description",
|
||||||
|
"icon": "path/to/icon",
|
||||||
|
"compatible_systems": ["sz_core", "d20"],
|
||||||
|
"fields": {
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"id": "group_name",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"id": "field_name",
|
||||||
|
"type": "number",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sub_groups": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"top_level_fields": [
|
||||||
|
{
|
||||||
|
"id": "name",
|
||||||
|
"type": "string",
|
||||||
|
"value": "something"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user