Duh-Jacks-Ohl (dj4xol) is a turn-based 4X space strategy game built as a
Django application, inspired by classic PBEM-style empire games.
Players expand from a homeworld, manage colonies and minerals, commission fleets, research technology, and resolve movement, combat, and invasion during turn generation.
The project is actively developed and playable in MVP form.
Implemented systems include:
- Multi-game server with account registration, profile onboarding, invites, email updates, and spectator mode
- Responsive web UI with Classic, LCARS, and Win95 themes, plus public landing/gallery pages
- Optional advanced player CLI interface in the terminal and web game view
- Race creation with balance-point budgeting and habitability tuning
- Starmap planning with fleet movement, intercept, transfer, merge, colonise, scuttle, and turn reports
- Colony economy with population, mines, factories, labs, defences, shipyards, and terraforming
- Research categories, allocations, prerequisites, unlocks, and technology directory/help
- Space combat, invasions, fleet fuel, scanners, and other core turn-resolution systems
- Recent MVP extensions including anomalies, secret resources, remote mining, bombardment, wormholes, and game-speed setup options
Near-term work is tracked in todo.txt. Current focus includes:
- Gameplay and tech tree progression balancing
- Diplomacy
- Ship design (basic, then advanced)
- Trade contracts/negotiation
- Mine fields
- Fuel factories and fleet-to-fleet refuelling
- Instant merge/split fleet interaction screen
- Custom server help pages (wiki/CMS style)
- Ongoing Brython refactor/expansion for UI logic
Longer-term design ideas live in doc/plan.txt and are intentionally exploratory.
Examples include:
- Stability systems, unrest, and breakaway colonies
- Megaproject infrastructure such as citadels, stargates, micromanagers, and superweapons
- Garrisons and other colony structures that trade economy for stability or defence
- More extreme anomaly and galaxy events, including disappearing worlds and new-star creation
- Data-driven ship components, hulls, and tech publishing workflows
- Experimental setup/admin tooling and balance controls
- Pluggable AI player types and LLM-assisted opponents or tooling
These are ideas, not commitments.
- Python + Django (
1.11.x) - SQLite by default for local development
- Brython for selected browser-side logic
- Pillow for image processing scripts/assets
This project uses pyenv + pyenv-virtualenv.
Preferred command style:
pyenv exec python ...
Example:
pyenv exec python manage.py test
- Clone the repository.
- Install dependencies:
pyenv exec pip install -r requirements-dev.txt- Run migrations:
pyenv exec python manage.py migrate- Start the dev server:
pyenv exec python manage.py runserver- Open:
http://localhost:8000/(redirects to/4x/)http://localhost:8000/4x/
Run the full test suite:
pyenv exec python manage.py testRun a specific module/class:
pyenv exec python manage.py test dj4xol.tests.resource_generationApplication version is declared once in:
dj4xol/version.py(APP_VERSION)
This value is reused by:
- Python package exports (
dj4xol.__version__) setup.pypackage metadata- Template context (
app_version) - Frontend JS (
window.DJ4XOL_VERSION)
dj4xol/models.py- Core data model (games, players, stars, fleets, research)dj4xol/factory.py- Game creation/join flow and starting state assignmentdj4xol/turn.py- Turn generation and order executiondj4xol/research.py- Research budgeting/allocation/progressiondj4xol/objectdetails.py- Detail panel data shapingdj4xol/messages.py- In-game message generationdj4xol/templates/dj4xol/- UI templatesdj4xol/static/dj4xol/- CSS/JS/Brython/static assets
Gameplay arithmetic should live in pure-Python *_rules.py modules where
possible. Server code and frontend-adjacent Python can then call the same
logic, which keeps behaviour consistent across UI previews and turn resolution.
See LICENSE.