How surelypal/propria works
Propria is a tabletop role-playing app combining live campaigns, configurable game rules and character sheets, template authoring, local multiplayer synchronization, guidebooks, and procedural music. The main user path is campaign setup or joining, character creation, then running a campaign through dynamic sheets and map/scene screens; the host-authoritative world applies rule-driven changes and syncs them to peers. The README is empty and sampled implementation is partial, so links between unsampled UI and runtime services are omitted rather than inferred.
Main entry points: NetworkSyncService.swift Network sync · World.swift Game world · MusicEngine.swift Procedural audio · Events.swift Event bus
Components 23
Campaign play
- Campaign screens
Propria/UI/Campaign/CampaignsView.swift - Character creation
Propria/UI/Campaign/Creation/CreationStepViews.swift - Dynamic character sheet
Propria/UI/Campaign/DynamicScreenView.swift - Map and scene UI
Propria/UI/Campaign/SceneScreenView.swift - Campaign runtime
Propria/Campaign/CampaignRuntime.swift - Campaign workspace
Propria/Campaign/Workspace.swift
Rules and templates
- Game world
Propria/Template/World.swift - World authority
Propria/Template/WorldAuthority.swift - Entity store
Propria/Core/EntityStore.swift - Event bus
Propria/Events/Events.swift - Expression engine
Propria/Core/ExpressionEngine.swift - Game registry
Propria/Registry/Registry.swift - Template editor
Propria/UI/Templates/TemplateEditorView.swift - Layout editor
Propria/UI/Templates/LayoutEditorView.swift - Template packages
Propria/Campaign/Workspace.swift
Campaign sync
- Network sync
Propria/Networking/NetworkSyncService.swift - Peer transport
Propria/Networking/MultipeerTransport.swift - Campaign provisioning
Propria/Campaign/CampaignProvisioningService.swift
Library and audio
- Guidebooks
Propria/Knowledge/Guidebook.swift - Music director
Propria/Music/MusicDirector.swift - Procedural audio
Propria/Music/MusicEngine.swift - Audio graph
Propria/Music/AudioGraph.swift
Other components
- Player or host
Connections 21
- Player or host → Campaign screens: opens campaigns
- Campaign screens → Character creation: creates characters
- Player or host → Dynamic character sheet: uses campaign
- Player or host → Map and scene UI: runs encounters
- Game world → Entity store: reads and updates
- Game world → Event bus: emits events
- Game world → Expression engine: evaluates formulas
- Game world → Game registry: uses definitions
- World authority → Entity store: applies changes
- World authority → Network sync: sends intents
- Network sync → Event bus: broadcasts events
- Network sync → Peer transport: sends messages
- Peer transport → Network sync: delivers messages
- Campaign provisioning → Network sync: sends campaign messages
- Template editor → Layout editor: edits layouts
- Layout editor → Template packages: loads package
- Player or host → Template editor: authors templates
- Player or host → Guidebooks: reads guides
- Music director → Procedural audio: modulates state
- Procedural audio → Event bus: observes campaign events
- Procedural audio → Audio graph: renders audio