- Django 6.0 mit Einstellungen aus Umgebungsvariablen (SQLite lokal, PostgreSQL im Betrieb) - Pakete engine (reine Spielregeln) und game (Startseite, Health-Check, Worker-Platzhalter) - uv mit Lockfile, ruff, mypy (strict für engine), pytest mit Smoke-Tests - pre-commit-Hooks und vorbereiteter Gitea-Actions-Workflow - Dockerfile und docker-compose (web, worker, db) - README, CLAUDE.md, MIT-Lizenz Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hercules Pyloaded
Weltraum-Browsergame, vierte Fassung von Hercules: nach dem Original von Warpman, Hercules Reloaded und Hercules Rereload jetzt als Neubau in Python mit Django und HTMX.
Das Konzept (Spielregeln, Architektur, Fahrplan) liegt als Dokument vor: Hercules Pyloaded – Konzept.
Voraussetzungen
- Python 3.12 oder neuer (entwickelt mit 3.14)
- uv für Abhängigkeiten und Umgebung
- Git
- Docker nur für den Betrieb mit PostgreSQL (optional)
uv wurde hier per pip install --user uv installiert und wird daher als python -m uv aufgerufen.
Wer den Ordner %APPDATA%\Python\Python314\Scripts in den PATH aufnimmt, kann uv direkt nutzen.
Einrichtung
python -m uv sync
python -m uv run pre-commit install
python -m uv run python manage.py migrate
python -m uv run python manage.py createsuperuser
python -m uv run python manage.py runserver
Danach läuft das Spiel unter http://127.0.0.1:8000/ und der Admin unter http://127.0.0.1:8000/admin/. Ohne weitere Einstellungen wird SQLite im Projektordner verwendet.
Prüfungen
python -m uv run ruff format
python -m uv run ruff check
python -m uv run mypy
python -m uv run pytest
pre-commit führt alle vier vor jedem Commit aus. Der Workflow in .gitea/workflows/ci.yml macht
dasselbe auf dem Gitea-Server, sobald dort ein Runner für das Repository registriert ist.
Betrieb mit Docker
cp .env.example .env
docker compose up -d --build
Startet web (Django + gunicorn), worker (Ereignis-Queue) und db (PostgreSQL 17).
Projektstruktur
src/
config/ Django-Einstellungen und URLs
engine/ reine Spielregeln: Formeln, Kampf, Bahnen (ohne Django, voll typisiert)
game/ Django-App: Modelle, Services, Views, Templates, Worker
data/ Stammdaten (YAML) – maßgebliche Quelle für das Balancing
templates/ gemeinsame Templates
tests/ pytest
Lizenz
MIT, siehe LICENSE.