python mudlib using telnetlib3
Find a file
Jared Miller a799b6716c
Add editor mode shell integration and edit command
Integrates the Editor class into the MUD server's shell loop, allowing
players to enter and use the text editor from the game.

Changes:
- Add editor field to Player dataclass
- Modify shell input loop to check player mode and route to editor
- Add edit command to enter editor mode from normal mode
- Use inp (not command.strip()) for editor to preserve indentation
- Show line-numbered prompt in editor mode
- Pop mode and clear editor when done=True
- Add comprehensive integration tests
- Fix test isolation issue in test_movement_updates_position
2026-02-07 22:59:37 -05:00
.claude Update agent config with new notes 2026-02-07 14:48:24 -05:00
content Add data-driven combat system with TOML move definitions 2026-02-07 21:16:12 -05:00
docs Add MTTS capability parsing module with client color detection 2026-02-07 22:44:23 -05:00
scripts Add a map renderer 2026-02-07 13:38:32 -05:00
src/mudlib Add editor mode shell integration and edit command 2026-02-07 22:59:37 -05:00
tests Add editor mode shell integration and edit command 2026-02-07 22:59:37 -05:00
worlds/earth Add seed-based terrain world with movement and viewport 2026-02-07 13:27:44 -05:00
.gitignore Add fast and parallel testing 2026-02-07 22:03:00 -05:00
demo_terrain.py Add seed-based terrain world with movement and viewport 2026-02-07 13:27:44 -05:00
DREAMBOOK.md Add a dreambook 2026-02-07 12:19:49 -05:00
justfile Simplify test recipe 2026-02-07 22:49:01 -05:00
mud.tin Add tintin combat aliases 2026-02-07 21:16:28 -05:00
pyproject.toml Wire client capabilities into Player & terrain 2026-02-07 22:44:45 -05:00
README.md Add a simple README 2026-02-07 15:42:07 -05:00
uv.lock Wire client capabilities into Player & terrain 2026-02-07 22:44:45 -05:00

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).