A Multi-User Dungeon (MUD) game server built in Rust, featuring a custom Entity Component System (ECS) architecture.
Bemudjo is a text-based multiplayer adventure game server that allows players to connect via telnet and explore a virtual world. The project is structured as a monorepo containing multiple related crates.
bemudjo/
├── bemudjo_ecs/ # Custom ECS library for game logic
├── bemudjo_server_telnet/ # Telnet server for player connections
└── README.md # This file
A fast and flexible Entity Component System (ECS) library designed for game development.
See the ECS README for detailed documentation and examples.
Status: 🚧 In active development
The main game server that handles:
- TCP connections via telnet
- Player command processing
- Game world management
- Real-time multiplayer interactions
Status: ✅ Basic telnet server functional
- Rust 1.75+ (we recommend using the latest stable version)
- Git
# Clone the repository
git clone https://github.com/AndreaBeggiato/bemudjo.git
cd bemudjo
# Build all crates
cargo build
# Run the telnet server
cargo run -p bemudjo_server_telnet
# Run ECS tests
cargo test -p bemudjo_ecsOnce the server is running, connect using any telnet client:
telnet localhost 2323# Test all crates
cargo test
# Test specific crate
cargo test -p bemudjo_ecs
cargo test -p bemudjo_server_telnetThis project follows Rust best practices:
- Workspace: Multiple related crates in one repository
- ECS Architecture: Data-oriented design for game logic
- Async/Await: Modern concurrent programming for networking
- Type Safety: Leveraging Rust's type system for reliable game state
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
cargo test) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Currently available commands:
help- Show available commandslook- Look around the current areasay <message>- Say something to other playersquit- Exit the game
The project uses a custom ECS (Entity Component System) implementation for efficient game logic. For detailed information about the ECS architecture, see the ECS documentation.
Key benefits:
- Flexible game object composition: Easy to add/remove capabilities
- Efficient batch processing: Set-based query filtering for optimal performance
- Easy feature addition and modification: Type-safe component system
- Clear separation of data and logic: Clean architecture principles
- Exact size hints: Queries provide precise entity counts for optimal memory allocation
Built with ❤️ in Rust