SessionZero-Client/readme.md
2025-10-17 23:38:04 -05:00

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.