# mudlib

A telnet MUD engine. No client needed — just `telnet` and you're in.

Built on telnetlib3, Python 3.12+, managed with uv.

## Quickstart

```
uv sync
just run
```

Then connect: `telnet localhost 6789`

## Commands

```
just check   # lint + typecheck + test
just run     # start the server
just debug   # start with debug logging
just render  # generate world map HTML
```

## What's in here

- `src/mudlib/` — the engine (commands, world, combat, rendering, storage)
- `tests/` — pytest tests
- `worlds/` — world definitions (yaml/toml)
- `docs/` — internal knowledge base
- `DREAMBOOK.md` — vision and wild ideas

## How it works

The world is a toroidal 2D grid of terrain tiles, not discrete rooms. Players
see a viewport centered on their position. Terrain types have mechanics —
shallow water slows you, mountains block you, forests hide you.

Combat is timing-based with telegraphed moves and cooldown management, not
turn-based.

The server runs a tick-based async game loop alongside the telnet server.
SQLite handles persistence. Session mode stacks filter what reaches the player
depending on context (exploring, fighting, composing, solving puzzles).
