A powerful, engine-agnostic Python GUI tool for designing and managing complex hierarchical action sequences for interactive simulations, training environments, and narrative experiences.
SessionActionFramework is an intuitive visual tool that enables developers and designers to create sophisticated action sequences with complex dependencies, parallel execution paths, and conditional branching. Originally developed for Unity3D training simulations, the framework's JSON-based output makes it compatible with any game engine or simulation platform.
- Visual Graph Editor: Design action sequences through an intuitive node-based interface
- Hierarchical Action System: Create nested action structures with parent-child relationships
- Parallel & Sequential Execution: Define which actions run simultaneously and which must execute in order
- Custom Field System: Add configurable parameters to any action instance
- Multi-Session Management: Organize complex projects with multiple independent session flows
- Engine-Agnostic Export: JSON output format works with Unity, Unreal Engine, Godot, or custom engines
- Real-time Preview: Visualize your action flow as you build it
- Training Simulations: Script complex training scenarios with branching paths
- Interactive Experiences: Design escape rooms, museum exhibits, or educational content
- Industrial Simulations: Model manufacturing processes or safety procedures
- Game Development: Create quest systems, cutscenes, or gameplay sequences
- VR/AR Applications: Orchestrate immersive narrative experiences
- Python 3.8 or higher
- pip package manager
-
Clone the repository:
git clone <repository-url> cd SessionFramework/SessionCreator
-
Create a virtual environment (recommended):
python -m venv venv
venv\Scripts\activate
python framework_tool/main.pyWhen you launch the application, a new project is automatically created. You can also:
- Use
File > New Projectto start fresh - Use
File > Open Projectto load an existing.jsonproject file
The application features a 5-panel layout:
- Session Switcher: Manage multiple session flows within your project
- Actions Panel: Define and configure reusable action templates
- Session Flow: Visual graph editor for building action sequences
- Action Instance Customizer: Configure specific instances of actions
- Item Labels: Manage game objects, NPCs, and other entities
Actions are the building blocks of your sequences:
- In the Actions panel, click "Add Action"
- Give your action a unique label (e.g., "PlayAnimation", "ShowDialog", "MoveObject")
- Configure action properties:
- Description: Document the action's purpose
- Autocomplete: Whether the action completes automatically
- Custom Fields: Add configurable parameters (strings, numbers, booleans, etc.)
Create your action sequence in the Session Flow panel:
- Select a session from the Session Switcher
- Add action nodes by clicking "Add Action Node"
- Select which action template to use
- Connect nodes to define execution order:
- Sequential: Connect nodes in a chain for ordered execution
- Parallel: Create multiple child nodes from a parent for simultaneous execution
- Configure each instance in the Action Instance Customizer panel
Custom fields allow you to parameterize actions:
"customFields": [
{
"fieldName": "targetObject",
"fieldType": "string",
"defaultValue": "Player"
},
{
"fieldName": "duration",
"fieldType": "float",
"defaultValue": 2.5
}
]Save your project as JSON:
- Use
File > Save Project(Ctrl+S) - Use
File > Save Project As...to save with a new name
The exported JSON contains:
- Project metadata
- Action definitions
- Session graphs with node relationships
- Custom field values
- Item and object references
The framework exports a structured JSON format:
{
"projectMetadata": {
"projectName": "Training Simulation",
"formatVersion": "1.0.0",
"creationDate": "2025-07-03T13:31:34.174774+00:00",
"author": "Developer Name"
},
"actionDefinitions": {
"ShowInstruction": {
"description": "Display instruction text to user",
"autocomplete": false,
"customFields": [...]
}
},
"sessions": {
"MainTraining": {
"nodes": [...],
"rootNodeIds": [...]
}
}
}Define conditions for action execution based on game state or user input
Create complex actions by combining simpler sub-actions
The JSON format allows for runtime modification of sequences without recompilation
Design sequences that respond differently to multiple users or roles
- Python: 3.8+
- PySide6: 6.5.0+ (Qt for Python)
- Operating System: Windows, macOS, or Linux
