107 lines
3.5 KiB
Markdown
107 lines
3.5 KiB
Markdown
# SessionZero Client
|
|
|
|
A free and open-source TTRPG companion app for managing tabletop role-playing games with complete flexibility and control over your data.
|
|
|
|
## About
|
|
|
|
SessionZero is a cross-platform desktop application built with Godot that helps players and GMs organize their TTRPG sessions. It's designed to be system-agnostic, supporting any tabletop RPG through a modular datapack format.
|
|
|
|
### Key Features
|
|
|
|
- **System-Agnostic**: Works with any TTRPG system through extensible JSON datapacks
|
|
- **Full Offline Support**: Play completely offline with local data storage
|
|
- **Self-Hosted Multiplayer**: Host sessions directly from your machine with P2P networking
|
|
- **Decentralized Identity**: No accounts required - your identity is a cryptographic key pair you control
|
|
- **Flexible Networking**: Choose between assisted connection (via optional signaling server) or direct IP connection
|
|
- **Open Content Format**: Import and create datapacks for characters, campaigns, items, and more
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Godot 4.5.x (for development)
|
|
- Windows or Linux (macOS support planned)
|
|
|
|
### Installation
|
|
|
|
**From Release:**
|
|
1. Download the latest release for your platform
|
|
2. Extract and run the executable
|
|
|
|
**From Source:**
|
|
1. Clone this repository
|
|
2. Open the project in Godot 4.5.x
|
|
3. Run the project or export for your platform
|
|
|
|
## How It Works
|
|
|
|
### Datapacks
|
|
|
|
Content is organized into **datapacks** (.szp files) - portable archives containing:
|
|
- Character templates and sheets
|
|
- Campaign/session templates
|
|
- Datasets (items, NPCs, spells, etc.)
|
|
- Associated media assets
|
|
|
|
### Hosting Sessions
|
|
|
|
SessionZero uses a **Host Authority** model where the GM's client acts as the server:
|
|
|
|
1. **GM** starts a session using a session template
|
|
2. **GM** chooses a connection method:
|
|
- Generate a Session Key for easy joining (requires signaling server)
|
|
- Share their IP/domain for direct connection
|
|
3. **Players** join using the Session Key or IP address
|
|
4. All session data is stored locally on the GM's machine
|
|
|
|
### Player Identity
|
|
|
|
Instead of traditional accounts, SessionZero uses cryptographic key pairs:
|
|
- Your **Private Key** (Secret Token) stays on your device and signs all actions
|
|
- Your **Public Key** (Client ID) identifies you to session hosts
|
|
- Transfer your identity by copying your Private Key to another device
|
|
|
|
|
|
## Development Roadmap
|
|
|
|
### Phase 1: Core Platform (Current)
|
|
- Local session management
|
|
- Direct P2P networking
|
|
- Datapack system implementation
|
|
- Character and campaign management
|
|
|
|
### Phase 2: Advanced Networking
|
|
- Minimal Signaling Server integration
|
|
- UDP hole punching with automatic fallbacks
|
|
- SessionZeroDB content discovery
|
|
|
|
### Phase 3: Mobile & Extensions
|
|
- Web (WASM) application
|
|
- Mobile applications
|
|
- Plugin system and API extensions
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome! Please read our contributing guidelines before submitting pull requests.
|
|
|
|
## Related Projects
|
|
|
|
- **SessionZero MSS**: Minimal Signaling Server for assisted P2P connections (separate repository)
|
|
- **SessionZeroDB**: Federated content indexing service (planned)
|
|
|
|
## License
|
|
|
|
- **Source Code**: AGPL-3.0 (Affero General Public License)
|
|
- **User Content**: Creative Commons BY-SA 4.0
|
|
|
|
## Support
|
|
|
|
For issues, feature requests, or questions:
|
|
- Open an issue on GitHub
|
|
- Visit the website [SessionZero.app](https://sessionzero.app)
|
|
- Check the full design document [Here](sessionzero-design-doc-wip.md)
|
|
- Join the community on [Discord](https://discord.gg/RgG5HsJNMT)
|
|
|
|
---
|
|
|
|
**Note**: SessionZero is in active development. Features and APIs may change as the project evolves. |