# 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.