More data structure work

This commit is contained in:
2026-07-31 18:38:49 -05:00
parent 93005494eb
commit 08211e4d0f

156
szds.md
View File

@@ -1,114 +1,60 @@
# SessionZero Data System # 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 ```text
author.system_name/
sessionzero/ - system.sz (A TOML file with metadata)
├─ data/ - character_template.szt (sessionzero template file)
│ ├─ datasets/ - templates/
│ │ ├─ author.dataset_name/ - template_name.szt
│ │ │ ├─ 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
``` ```
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
"""
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 `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