122 lines
2.9 KiB
Markdown
Executable File
122 lines
2.9 KiB
Markdown
Executable File
# Cutscene Data Structure Design
|
|
|
|
## Overview
|
|
|
|
This document describes the data structure for storing cutscene nodes and connections in a way that can be used by both the editor and runtime systems.
|
|
|
|
## Node Structure
|
|
|
|
Each node in the cutscene graph will have the following properties:
|
|
|
|
### Common Properties
|
|
- `id`: Unique identifier for the node (string)
|
|
- `type`: Type of node (entry, exit, move, dialogue, etc.)
|
|
- `position`: Object with `x` and `y` coordinates
|
|
- `parameters`: Object containing type-specific parameters
|
|
|
|
### Node Type Specifics
|
|
|
|
#### Entry Node
|
|
- Type: "entry"
|
|
- Parameters: None (or minimal configuration)
|
|
|
|
#### Exit Node
|
|
- Type: "exit"
|
|
- Parameters: None (or minimal configuration)
|
|
|
|
#### Move Action Node
|
|
- Type: "move"
|
|
- Parameters:
|
|
- `character`: Character identifier/path
|
|
- `target_x`: Target X position
|
|
- `target_y`: Target Y position
|
|
- `speed`: Movement speed
|
|
|
|
#### Dialogue Action Node
|
|
- Type: "dialogue"
|
|
- Parameters:
|
|
- `character`: Character identifier/path
|
|
- `text`: Dialogue text
|
|
- `duration`: Display duration (0 for indefinite)
|
|
|
|
#### Animation Action Node
|
|
- Type: "animation"
|
|
- Parameters:
|
|
- `character`: Character identifier/path
|
|
- `animation_name`: Name of animation to play
|
|
- `loop`: Whether to loop the animation
|
|
|
|
#### Turn Action Node
|
|
- Type: "turn"
|
|
- Parameters:
|
|
- `character`: Character identifier/path
|
|
- `target`: Target identifier/path
|
|
- `turn_speed`: Speed of turning
|
|
|
|
#### Wait Action Node
|
|
- Type: "wait"
|
|
- Parameters:
|
|
- `duration`: Wait duration in seconds
|
|
|
|
#### Parallel Group Node
|
|
- Type: "parallel"
|
|
- Parameters: None (connections define the group)
|
|
|
|
## Connection Structure
|
|
|
|
Each connection between nodes will have:
|
|
|
|
- `id`: Unique identifier for the connection
|
|
- `from_node`: Source node ID
|
|
- `from_port`: Source port index
|
|
- `to_node`: Target node ID
|
|
- `to_port`: Target port index
|
|
|
|
## Resource Structure
|
|
|
|
The CutsceneResource will contain:
|
|
|
|
```json
|
|
{
|
|
"version": "1.0",
|
|
"metadata": {
|
|
"created": "timestamp",
|
|
"modified": "timestamp"
|
|
},
|
|
"nodes": [
|
|
{
|
|
"id": "node1",
|
|
"type": "entry",
|
|
"position": {"x": 100, "y": 100},
|
|
"parameters": {}
|
|
},
|
|
{
|
|
"id": "node2",
|
|
"type": "move",
|
|
"position": {"x": 200, "y": 150},
|
|
"parameters": {
|
|
"character": "player",
|
|
"target_x": 300,
|
|
"target_y": 200,
|
|
"speed": 100
|
|
}
|
|
}
|
|
],
|
|
"connections": [
|
|
{
|
|
"id": "conn1",
|
|
"from_node": "node1",
|
|
"from_port": 0,
|
|
"to_node": "node2",
|
|
"to_port": 0
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Implementation Considerations
|
|
|
|
1. **IDs**: All nodes and connections should have unique IDs generated by the system
|
|
2. **Validation**: The resource should validate that all referenced nodes in connections exist
|
|
3. **Serialization**: The structure should be easily serializable to JSON for storage
|
|
4. **Runtime Mapping**: The structure should map directly to runtime Action instances |