More data structure work
This commit is contained in:
156
szds.md
156
szds.md
@@ -1,114 +1,60 @@
|
||||
# SessionZero Data System
|
||||
|
||||
## Layout
|
||||
|
||||
Data is seperated into 3 main chunks; systems, games, and datasets. Each of these work together but hold varying information.
|
||||
|
||||
The flow goes as such:
|
||||
|
||||
1. Create a System
|
||||
i. Define a character template
|
||||
ii. Define data templates
|
||||
2. Create a Dataset
|
||||
i. Reference an existing system for availible templates
|
||||
ii. Create data instances based on the availible templates
|
||||
3. Create a Game
|
||||
i. 'Install' an existing system
|
||||
ii. 'Install' various datasets that use the same system
|
||||
iii. Install plugins (future feature)
|
||||
iv. Create a character from the system template
|
||||
|
||||
|
||||
### System:
|
||||
- Character Template
|
||||
- Data templates
|
||||
|
||||
```text
|
||||
|
||||
sessionzero/
|
||||
├─ data/
|
||||
│ ├─ datasets/
|
||||
│ │ ├─ author.dataset_name/
|
||||
│ │ │ ├─ objects/
|
||||
│ │ │ │ ├─ item/
|
||||
│ │ │ │ │ ├─ stick.szdo
|
||||
│ │ │ │ ├─ npc/
|
||||
│ │ │ │ │ ├─ marcus.szdo
|
||||
│ │ │ ├─ templates/
|
||||
│ │ │ │ ├─ item.szdt
|
||||
│ │ │ │ ├─ npc.szdt
|
||||
│ │ │ ├─ dataset.sz
|
||||
│ │ │ ├─ icon.png
|
||||
│ ├─ sessions/
|
||||
│ │ ├─ author.session_name/
|
||||
│ │ │ ├─ players/
|
||||
│ │ │ │ ├─ player1/
|
||||
│ │ │ │ │ ├─ characters/
|
||||
│ │ │ │ │ │ ├─ thumbs/
|
||||
│ │ │ │ │ │ │ ├─ character1.png
|
||||
│ │ │ │ │ │ ├─ character1.szco
|
||||
│ │ │ │ │ ├─ playerinfo.sz
|
||||
│ │ │ ├─ character_template.szct
|
||||
│ │ │ ├─ session.sz
|
||||
│ ├─ local.db
|
||||
├─ config.ini
|
||||
├─ sessionzero
|
||||
|
||||
|
||||
author.system_name/
|
||||
- system.sz (A TOML file with metadata)
|
||||
- character_template.szt (sessionzero template file)
|
||||
- templates/
|
||||
- template_name.szt
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Psuedocode for the various data elements and how they connect:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```text
|
||||
Dataset: {
|
||||
Metadata: {
|
||||
ID (required unique string),
|
||||
DisplayName (required string),
|
||||
Author (required string),
|
||||
Description (string),
|
||||
CompatibleSystems (required string[]),
|
||||
},
|
||||
Data Templates: {
|
||||
Metadata: {
|
||||
ID (required unique string),
|
||||
DisplayName (required string),
|
||||
Author (required string),
|
||||
Description (string),
|
||||
CompatibleSystems (required string[]),
|
||||
DataType (required string)
|
||||
},
|
||||
TemplateFields: {
|
||||
ID (required unique string),
|
||||
FieldType,
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
Data Instances: {
|
||||
|
||||
},
|
||||
},
|
||||
|
||||
Session: {
|
||||
Metadata: {},
|
||||
Character Template: {},
|
||||
Character Instances: {},
|
||||
Datasets: {},
|
||||
Storage: {},
|
||||
}
|
||||
Example `system.sz` file
|
||||
```toml
|
||||
id = "szcore"
|
||||
display_name = "SZ Core System"
|
||||
version = "1.0"
|
||||
description = """
|
||||
A simple core system to base others off of
|
||||
"""
|
||||
```
|
||||
|
||||
Example `character_template.szt` file
|
||||
```toml
|
||||
template_type = "character"
|
||||
```
|
||||
|
||||
### Games:
|
||||
- System
|
||||
- Plugins
|
||||
- Datasets
|
||||
- Player Data
|
||||
- Character Instances
|
||||
- Gamestate/Data
|
||||
|
||||
### Datasets:
|
||||
- Reference to a System and its templates
|
||||
- Data Instance
|
||||
|
||||
|
||||
Reference in New Issue
Block a user