Skip to content

darkrelics/multi-user-dungeon

 
 

Repository files navigation

License

GitHub Dependabot GitHub Actions

AWS AmazonDynamoDB

Go Python JavaScript Webpack

Linux Windows

Multi-User Dungeon Engine

The goal of this project is to create a commercial-quality multi-user dungeon (MUD) engine that is flexible enough to be used as either a conventional MUD or an interactive fiction game.

The current implementation includes an SSH server for secure authentication and communication between the player and the server. The engine is primarily written in Go. Additionally, there is a user management system stub written in JavaScript and various utility scripts written in Python.

Current Objectives

  • Create the TCP server for client connections.
  • Create a text parser for user input.
  • Implement a player authentication system.
  • Implement a database for the game.
  • Implement a character creation system.
  • Implement a text colorization system.
  • Add Cloudwatch Logs and Metrics.
  • Build an interactive password change system.
  • Construct the item system.
  • Develop game mechanics.
  • Design an economic framework
  • Implement a world creation system.
  • Develop simple Non-Player Characters (NPCs).
  • Design and implement a quest system.
  • Build a direct messaging system.
  • Develop more complex Non-Player Characters (NPCs) with basic AI.
  • Implement a dynamic content updating system.
  • Implement a player-to-player trading system.
  • Create a crafting system for items.
  • Develop a weather and time system.
  • Implement a party system for cooperative gameplay.
  • Implement a magic system.
  • Impliment a quest tracking system.
  • Impliment a reputation system.
  • Develop a conditional room description system.

TODO

  • Fix output formatting for the client.
  • Allow players to enter their name.
  • Display the incoming IP address and Port on the server.
  • Add a help command.
  • Add a character list command.
  • Allow users to change their passwords.
  • Expand the character creation process.
  • Add take item command.
  • Add inventory command.
  • Add drop item command.
  • Add wear item command.
  • Add remove item command.
  • Add examine item command.
  • Implement Persistent Logging.
  • Load item prototypes at start.
  • Create function for creating items from prototypes.
  • Ensure that a message is passed when a character is added to the game.
  • Add a Message of the Day (MOTD) command.
  • Add Bloom Filter to check for existing characters names being used.
  • Add the ability to delete characters.
  • Add the ability to delete accounts.
  • Implement an obscenity filter.
  • Validate graph of loaded rooms and exits.
  • Add look at item command.
  • Improve the say commands.
  • Improve the input filters
  • Create administrative interface.
  • Force Password Resets when needed.
  • Allow starting room to be set by Archtype.

Project Overview

The engine is primarily written in Go (version 1.22) with an SSH server for secure authentication and communication between the player and the server. Additionally, there are database utility scripts written in Python (version 3.12) and various deployment scripts.

Key components:

  • Go server (v1.22) for game logic and player interactions
  • Python (v3.12) scripts for database management and deployment
  • AWS services for database (DynamoDB) and Identity Provider (Cognito)
  • CloudFormation templates for AWS resource management

Deployment

Deploying the server involves several steps:

  1. Ensure you have Go 1.22 and Python 3.12 installed.
  2. Clone the repository.
  3. Install the required Python packages:
    pip install -r requirements/scripts-requirements.txt
    
  4. Set up your AWS credentials (access key ID and secret access key) in your environment variables or AWS credentials file.
  5. Run the deployment script:
    python scripts/deploy.py
    
    This script will create the necessary AWS resources using CloudFormation.
  6. Once deployment is complete, build and run the server:
    go build ./ssh_server
    ./ssh_server
    

Development

  • The core/ directory contains the main game logic and types.
  • The ssh_server/ directory contains the main server implementation.
  • The database/ directory contains Python scripts for database management.
  • The scripts/ directory contains deployment and utility scripts.

License

This project is licensed under the Apache 2.0 License. See the LICENSE file for more details.

Releases

No releases published

Packages

No packages published

Languages

  • Go 76.0%
  • Python 21.5%
  • JavaScript 1.4%
  • Other 1.1%