Skip to main content

A modern MUD engine - headless game engine for real-time, text-based multiplayer worlds

Project description

💀 Daemons Engine

Tests Python 3.11+ Code style: black License: MIT

A Python framework for building text-based multiplayer RPGs with real-time WebSocket communication. Includes a batteries-included headless engine server, a debugging client, example content and a CMS.

⚠️ Pre-Release Beta Breaking package updates may still occur regularly and unpredictably. There is no timeline yet for a stable Alpha release.

🤖 Clanker Alert: Extensive use of LLM generated code This project is an exercise in testing the limits of agentic development processes. Ideologically opposed developers should skip it. As an experimental artifact, the existence of this project should not be mistaken for a positive or negative statement about agentic development. Although we can say there has been a rigorous cybersecurity review and the engine has over 800 tests, this software is provided "as-is" and "without warranty of any kind", per the MIT license.

Latest Roadmap Release: Phase 17 - Environmental systems (Weather, Biomes, Flora, Fauna, Ecosystems)


Quickstart

Prerequisites

  • Python 3.11 or higher
  • pip (Python package manager)

Step 1: Create Project Directory

mkdir my-game
cd my-game

Step 2: Create Virtual Environment

# Windows
python -m venv .venv
.\.venv\Scripts\Activate
# macOS/Linux
python3 -m venv .venv
source .venv/bin/activate

Step 3: Install Daemons Engine

pip install daemons-engine

Step 4: Initialize Your Game

daemons init <new_game>

This creates:

  • world_data/ YAML content (rooms, NPCs, items)
  • config.py Server configuration
  • main.py Application entry point
  • alembic.ini Database migration config
  • alembic/ Migration scripts

Step 5: Set Up Database

cd <new_game>
daemons db upgrade

Step 6: Run the Server

From /<new_game>...

# Development (auto-reload on code changes)
daemons run --reload

# Production (requires JWT secret key)
daemons run --production

The --production flag enables security hardening:

  • Requires JWT_SECRET_KEY environment variable
  • Enforces JWT issuer/audience validation
  • Runs without auto-reload

If JWT_SECRET_KEY is not set, you'll be prompted to generate one.

You should see:

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Application startup complete.

Step 7: Connect a Client

Option A: Reference Client

pip install flet
daemons client

Option B: Build Your Own

Connect via WebSocket to ws://127.0.0.1:8000/ws/game/auth.

Test Credentials:

  • Username: testplayer1 / Password: testpass1
  • Username: testplayer2 / Password: testpass2

Create Game Content

All content is defined in YAML files under world_data/.

Example Room (world_data/rooms/tavern.yaml)

id: tavern_main
name: "The Rusty Tankard"
description: |
  A cozy tavern with a crackling fireplace.
room_type: indoor
area_id: starter_town
exits:
  north: town_square

Example NPC (world_data/npcs/barkeeper.yaml)

id: npc_barkeeper
name: "Greta the Barkeeper"
description: "A stout woman with a warm smile."
level: 5
behaviors:
  - merchant
spawn_room: tavern_main

Project Structure

my-game/
 world_data/              # Your game content
    rooms/               # Room definitions
    items/               # Items and equipment
    npcs/                # NPC templates
    quests/              # Quest definitions
    dialogues/           # NPC dialogue trees
 alembic/                 # Database migrations
 config.py                # Server configuration
 main.py                  # Application entry point
 dungeon.db               # SQLite database

Quick Reference

Task Command
Initialize project daemons init
Run migrations daemons db upgrade
Start server (dev) daemons run --reload
Start server (prod) daemons run --production
Run client daemons client
URL Description
http://127.0.0.1:8000/docs Swagger API docs
http://127.0.0.1:8000/redoc ReDoc API docs

Documentation

LLM Context Files

The docs/build_docs/ directory contains context articles and implementation plans designed for AI coding assistants (GitHub Copilot, Claude, Cursor, etc.). When we ask an LLM agent to make a detailed plan before implementation, a best practice is to capture the plan in a markdown file so that we can keep the LLM on task and hold it accountable to stated objectives.

For your own game: Run the build script to generate context files for your customizations:

python docs/build_docs/build_context.py

This will produce llm_context_architecture.md, llm_context_content.md, llm_context_index.md, and llm_context_protocol.md.

Delete these files and run build_context.py to rebuild the context after a major change.


License

MIT License see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

daemons_engine-0.1.22.tar.gz (750.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

daemons_engine-0.1.22-py3-none-any.whl (928.0 kB view details)

Uploaded Python 3

File details

Details for the file daemons_engine-0.1.22.tar.gz.

File metadata

  • Download URL: daemons_engine-0.1.22.tar.gz
  • Upload date:
  • Size: 750.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for daemons_engine-0.1.22.tar.gz
Algorithm Hash digest
SHA256 f01a1f273e2a84673d5c4dcaf4b0f7a2734944f77aec58fab8e9b8773bee9ece
MD5 3e917ae86ebd72b59aa32b9286d8ed5f
BLAKE2b-256 0b15f99d710d4f6e988c44c37e0018b7ef5930ccc19e76b7b57344e7a6e8dbe5

See more details on using hashes here.

File details

Details for the file daemons_engine-0.1.22-py3-none-any.whl.

File metadata

File hashes

Hashes for daemons_engine-0.1.22-py3-none-any.whl
Algorithm Hash digest
SHA256 f7649247ea4a558df3ab50ec628ea0cb200606fcb131f54b77e2af777f325639
MD5 e0e2890ce518b0b2b0a0178da566ef31
BLAKE2b-256 056c8fb6590ace0c865bd5a75c952c5f7a02b9f25cd6d9a58c92ec22a6111802

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page