A simple local app to track players' campaigns for tabletop wargames.
Find a file
2026-03-20 21:59:28 +01:00
src/warchron avoid rematch on choice fallback 2026-03-20 20:48:52 +01:00
test_data refacto file and class names 2026-03-19 15:23:50 +01:00
.gitignore
LICENSE
main.py fix OS theme following 2026-03-20 21:59:28 +01:00
Makefile
pyproject.toml
README.md avoid rematch on choice fallback 2026-03-20 20:48:52 +01:00
requirements.txt
THIRD_PARTY_LICENCES.md

WarChron

A simple local app to track players' campaigns for tabletop wargames.

Features

Main logic

Manage a list of players to sign them up to be selectable for war(s) and campaign(s).
A war year offers various objectives along several campaigns. Wars are independent. A campaign event presents customisable sectors to fight on during battle rounds. Campaigns are successive and are used for historical tie-breaker. A round includes battles to combine all participants according to their choice. Rounds are successive and are used for participants pairing in different priority modes. Winning battle grants victory points, narrative points (optional) and influence token (optional). Round results determine campaign score, which determines the war score, in different counting modes. Victory points determine the winner, narrative points determine the scenario(s) achiever(s) and influence tokens decide tie-breaks.

Installation

Requirements

  • Python >= 3.12
  • pip

Setup

git clone <your-forge-address>/warchron_app.git
cd warchron_app
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -r requirements.txt
pip install -e .

Run

python main.py

Dev

UI with QT Designer

Save UI design from QT designer as ui_*_.ui file and then convert them into python using: pyuic6 -x <file_path>.ui -o <file_path>.py

Code quality

Install mypy, black and flake8 into your IDE (also need flake8-pyproject to get pyproject.toml conf). You can manually run them with mypy . or flake8 . from the project's root directory.