Go to file
chrisbell 2f1020187d datapacks refresh, again
Reverting datapacks stuff again, I am feeling like my original plan for a small dsl-like format was the correct way to go, but combining that with the datapack archive structure for embedded images and other resources.
2025-10-22 16:48:24 -05:00
sessionzero-client datapacks refresh, again 2025-10-22 16:48:24 -05:00
.gitignore datapacks refresh, again 2025-10-22 16:48:24 -05:00
license.txt Documentation updates 2025-10-16 13:33:02 -05:00
readme.md New info 2025-10-17 23:38:04 -05:00
sessionzero-design-doc-wip.md New info 2025-10-17 23:38:04 -05:00

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.

  • 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:


Note: SessionZero is in active development. Features and APIs may change as the project evolves.