# MUD AI Player An autonomous AI player for MUD (Multi-User Dungeon) text-based games. ## Features - πŸ€– **Autonomous Gameplay**: Simulates a human player from character creation to endgame - πŸ—ΊοΈ **Auto-Mapping**: Builds a complete map of the MUD world with hybrid storage (SQLite + Memvid) - βš”οΈ **Combat AI**: Intelligent combat decisions, target selection, and survival tactics - πŸ“œ **Quest System**: Automatically detects, plans, and completes quests - πŸ” **Semantic Search**: Find locations using natural language queries - πŸ“Š **Progression Optimizer**: Finds optimal grinding spots and equipment upgrades - 🧠 **LLM Integration**: Context-aware responses to players using local LLMs (Ollama) - 🌐 **Web Dashboard**: Real-time monitoring dashboard with WebSocket updates - πŸ‘€ **Human Behavior**: Simulates realistic reaction times and behavior patterns ## Architecture The application is built with a modular architecture: - **Core**: Telnet client, ANSI parser, text parser, game state - **Modules**: - Character Creator: Stats rolling, class/race selection - Auto-Mapper: World mapping with hybrid storage (SQLite + Memvid) - Decision Engine: AI decision-making, combat AI, goal management - Quest System: Quest detection, planning, execution - Progression Optimizer: Grinding optimization, equipment analysis - LLM Integration: Ollama/OpenAI-compatible LLM client with memory - Web Dashboard: FastAPI-based monitoring with WebSocket support ## Installation ### Using Poetry (Recommended) ```bash # Install Poetry if not already installed pip install poetry # Install dependencies poetry install # Activate virtual environment poetry shell ``` ### Using pip ```bash # Create virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt ``` ## Configuration 1. Copy the example configuration: ```bash cp examples/config.example.yaml config.yaml ``` 2. Edit `config.yaml` with your MUD server details: ```yaml mud: host: "your-mud-server.com" port: 4000 username: "your_username" password: "your_password" ``` ## Usage ```bash # Run the AI player python -m src.main # Run with custom config python -m src.main --config custom_config.yaml # Run tests pytest tests/ -v # Run with coverage pytest --cov=src --cov-report=html ``` ## Project Structure ``` mud-ai-player/ β”œβ”€β”€ src/ # Source code (~7,500 lines) β”‚ β”œβ”€β”€ core/ # Core components β”‚ β”‚ β”œβ”€β”€ telnet_client.py # Async telnet connection β”‚ β”‚ β”œβ”€β”€ game_state.py # Game state management β”‚ β”‚ β”œβ”€β”€ ansi_parser.py # ANSI color code parsing β”‚ β”‚ └── parsers/ # MUD-specific parsers β”‚ β”œβ”€β”€ modules/ # Specialized modules β”‚ β”‚ β”œβ”€β”€ mapper/ # World mapping (SQLite + Memvid) β”‚ β”‚ β”œβ”€β”€ decision/ # AI decision engine β”‚ β”‚ β”œβ”€β”€ llm/ # LLM integration β”‚ β”‚ β”œβ”€β”€ character/ # Character creation β”‚ β”‚ β”œβ”€β”€ quest/ # Quest management β”‚ β”‚ β”œβ”€β”€ progression/ # Grinding optimizer β”‚ β”‚ └── web/ # Monitoring dashboard β”‚ β”œβ”€β”€ utils/ # Utilities β”‚ └── config/ # Configuration management β”œβ”€β”€ data/ # Persistent storage β”‚ β”œβ”€β”€ maps/ # World maps (SQLite + Memvid) β”‚ β”œβ”€β”€ characters/ # Character saves β”‚ └── logs/ # Game logs β”œβ”€β”€ tests/ # Test suite (17 files, ~2,500 lines) β”œβ”€β”€ docs/ # Documentation β”‚ β”œβ”€β”€ architecture.md # System architecture β”‚ β”œβ”€β”€ configuration.md # Configuration guide β”‚ β”œβ”€β”€ development.md # Development guide β”‚ └── api_reference.md # API reference ``` ## Web Dashboard The AI player includes a real-time web dashboard for monitoring: ```yaml monitoring: enabled: true host: "127.0.0.1" port: 8080 ``` Access the dashboard at `http://127.0.0.1:8080` **Features:** - Real-time character vitals (HP/MP/SP) - Current room information with NPCs and items - Active goals and AI state - Map statistics (rooms discovered, exits mapped) - Event log with game events - WebSocket updates (no page refresh needed) ## Development ```bash # Format code black src/ tests/ # Lint code ruff check src/ tests/ # Run tests with watch pytest-watch ``` ## Documentation See the `docs/` directory for detailed documentation: - [Architecture](docs/architecture.md) - [Configuration Guide](docs/configuration.md) - [Development Guide](docs/development.md) - [API Reference](docs/api_reference.md) ## License MIT License ## Contributing Contributions are welcome! Please read the development guide before submitting PRs. ## Disclaimer This is an educational project. Please respect the rules and terms of service of any MUD you connect to. Some MUDs prohibit automated players.