mirror of
https://github.com/arabine/open-story-teller.git
synced 2025-12-06 17:09:06 +01:00
69 lines
2 KiB
Markdown
69 lines
2 KiB
Markdown
# Stories architecture
|
|
## Story location
|
|
|
|
The stories are located on a SD-Card flash memory. The following file system formats are supported by openStoryTeller:
|
|
|
|
- FAT32
|
|
- exFAT
|
|
|
|
Connect OpenStoryTeller to your computer using a USB cable, a USB-disk will show up on your file explorer.
|
|
|
|
## Story root tree
|
|
|
|
A typical folder organisation is showed here:
|
|
|
|

|
|
|
|
At the root of the SD-Card, a special index file named `index.ost` must be present. It contains the list of installed stories as well as other informations about each story.
|
|
|
|
## Story folder organisation
|
|
|
|
A story folder name must be a UUID v4 string.
|
|
|
|
It must contains:
|
|
- A project file in JSON named `project.json`
|
|
- A pre-compiled story binary name `story.c32`
|
|
- A directory named `assets`
|
|
|
|
The assets directory must contains all the resource files for the story (sounds, images...).
|
|
|
|
# Index file format
|
|
|
|
## General principle
|
|
|
|
This binary file is encoded using a simple TLV format (Type Lenght Value) supporting the following types:
|
|
|
|
|
|
| Type | encoding | Value size |
|
|
| ----- | ----- | ------- |
|
|
| Object | 0xE7 | Variable |
|
|
| Array | 0xAB | Variable |
|
|
| String | 0x3D | Variable |
|
|
| Integer | 0x77 | 4 bytes |
|
|
| Real | 0xB8 | 4 bytes |
|
|
|
|
Each Type is encoded on a byte. Serialization uses little endian fir bytes ordering.
|
|
|
|
The Length is encoded on two bytes. The length indicates the size of the following value.
|
|
|
|
## Stories index format V1
|
|
|
|
The Index file root type is an object containing the file format version and the list of stories.
|
|
|
|
Stories are stored in an array, each entry is the description of one story. A story is located in a directory wich name is the uuid (lower case).
|
|
|
|
|
|
|
|
- Object (2 elements)
|
|
- Integer (format version)
|
|
- Array (n elements)
|
|
- Object (6 elements)
|
|
- String (UUID, folder name of the story)
|
|
- String (title image file name)
|
|
- String (sound title file name)
|
|
- String (Story name or title)
|
|
- String (Story description)
|
|
- Integer (Story version)
|
|
|
|
|