Campaigns
Campaigns are a core feature of Gyrinx that allow users to organize and track multi-game narratives with multiple participating gangs (lists). The campaign system provides tools for tracking progress, managing shared resources, and creating collaborative storytelling experiences.
Overview
A campaign in Gyrinx represents a series of connected games with:
Multiple participating gangs (lists)
Shared narrative and tracking
Asset management (territories, relics, etc.)
Resource tracking (credits, supplies, etc.)
Action logging with optional dice rolls
Campaign Lifecycle
Campaigns progress through three distinct phases:
Pre-Campaign
Initial setup phase
Add participating lists
Define asset types and resource types
Set up campaign narrative
In Progress
Active gaming phase
Lists are cloned for campaign-specific tracking
Resources are allocated
Players can log actions and outcomes
Assets can be transferred between gangs
Resources can be modified
Post-Campaign
Archived state
No further modifications allowed
Historical record preserved
Campaign Features
Action Logging
Players can log actions during the campaign with:
Descriptive text of what happened
Optional dice rolls (D6)
Outcome recording
Automatic timestamp and user tracking
Example actions:
"Ambushed rival gang in Sector 7"
"Explored abandoned manufactorum" (with 2D6 roll)
"Negotiated trade agreement"
Asset Management
Campaign owners can define custom asset types:
Name: Singular and plural forms (e.g., "Territory" / "Territories")
Description: Rich text description of the asset type
Individual Assets: Named items that can be held by gangs
Assets can be:
Created by campaign owner
Assigned to specific gangs
Transferred between gangs
Tracked with full history
Common asset types:
Territories (specific locations)
Relics (unique items)
Alliances (political connections)
Contracts (ongoing agreements)
Resource Tracking
Resources represent countable items shared across the campaign:
Name: Resource identifier (e.g., "Credits", "Ammunition")
Description: What the resource represents
Default Amount: Starting quantity for each gang
Modifications: Add or subtract amounts
Resource features:
Automatically allocated when campaign starts
Cannot go below zero
Modifications create action log entries
Both campaign and list owners can modify
Data Model
Core Models
Campaign - Main campaign entity with lifecycle state
CampaignList - Join table linking campaigns to lists
CampaignAction - Action log entries with optional dice rolls
CampaignAssetType - Custom asset type definitions
CampaignAsset - Individual assets assignable to gangs
CampaignResourceType - Resource type definitions
CampaignResource - Per-gang resource quantities
Key Methods
Campaign.start()- Transitions to In Progress, clones lists, allocates resourcesCampaign.end()- Transitions to Post-Campaign, locks modificationsList.clone()- Creates campaign-specific copy of a list
Permissions
Permission checks are implemented in views and enforced at the model level:
Campaign Owner (
campaign.owner == request.user): Full controlList Owners (
list.owner == request.user): Can modify own resources and log actionsOther Users: Read-only access to public campaigns
Technical Implementation
Lists are cloned via
List.clone()when campaign starts to preserve stateAll modifications tracked with django-simple-history
Action logs are immutable once created
Resources use
F()expressions for atomic operations
Related Documentation
Lists - List system and campaign integration
Models and Database - Data model documentation
History Tracking - How modifications are tracked
Last updated