31 lines
1.1 KiB
Markdown
31 lines
1.1 KiB
Markdown
# mudlib
|
|
|
|
Telnet MUD engine built on telnetlib3. Python 3.12+, managed with uv.
|
|
|
|
## Commands
|
|
|
|
- `just check` - lint (ruff --fix + format), typecheck (pyright), test (pytest)
|
|
- `just lint` / `just typecheck` / `just test` - individual steps
|
|
|
|
## Project Layout
|
|
|
|
- `src/mudlib/` - the engine (commands, world, combat, render, store)
|
|
- `tests/` - pytest tests
|
|
- `worlds/` - world definition files (yaml/toml, version controlled)
|
|
- `notes/` - design docs, daydreaming
|
|
- `repos/` - symlinked reference repos (telnetlib3, miniboa). gitignored, not our code
|
|
|
|
## Architecture
|
|
|
|
- telnetlib3 is a **dependency**, not vendored. contribute fixes upstream
|
|
- telnetlib3 gives us: GMCP, MSDP, NAWS, async server, reader/writer streams
|
|
- game loop is tick-based (async task alongside telnet server)
|
|
- world definitions live in data files, runtime state lives in memory
|
|
- SQLite for persistence (player accounts, progress)
|
|
- session mode stack filters what events reach the player (normal/combat/editor)
|
|
|
|
## Style
|
|
|
|
- simple > clever
|
|
- no mock implementations
|
|
- match existing patterns in each file
|