xenith-studios / ataxia

A modern MUD engine written in Rust with embedded Lua scripting for game logic.
Apache License 2.0
68 stars 6 forks source link

Ataxia Game Engine

About

Ataxia is a modern MUD/MUSH engine written in Rust. It utilizes Lua for commands and game logic. It uses separate processes for the game engine and network portal.

PLEASE NOTE THAT CURRENTLY THERE IS VERY LITTLE CODE/FEATURES WRITTEN.

Planned Features

The separate process model allows Ataxia to support the following features:

Install

Dependencies

The only dependency at this time is the Rust toolchain, which can be installed from the official channels via rustup. The game is written to work with the Rust 2021 edition.

For best results, the minimum required version of Rust is 1.65.0. The code should compile with any stable or nightly version released after 2021-11-03.

For further information: https://www.rust-lang.org/

Building from Source

Compiling from source is straightforward:

$ make

This will install all library dependencies and build ataxia. (Make will automatically call cargo build as needed.)

Modify the configuration file in data/ataxia.toml

Run Ataxia:

$ ./bin/startup.py

Development

If you would also like to develop Ataxia, you will need to install the following additional tools:

You can install both tools via make:

$ make bootstrap

To perform a full compile, including all lints:

$ make full

To run all tests:

$ make test

Directory Layout

src/
    Rust source code
bin/
    The location of compiled binary files and scripts for running the game
docs/
    User and developer documentation
logs/
    Log files
tools/
    Helper scripts and tools for developers and game admins
data/
    On-disk data files (ex. config files, world files)
scripts/
    Lua scripts
scripts/interface
    Helper scripts that set up the data interface between Rust and Lua
scripts/commands
    All in-game commands

License

Licensed under either of:

at your option.

Previous versions of this code were licensed under the BSD three-clause license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.