44 lines
1.2 KiB
Markdown
44 lines
1.2 KiB
Markdown
# 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).
|