A modern MUD engine written in Rust with embedded Lua scripting for game logic.
Switch branches/tags
Nothing to show
Clone or download
xenith Clean up the Makefile so it does less work.
Now that we don't have to compile Go and Rust separately, just rely on
cargo build to compile both binaries automatically. This also prevents
cargo from needing to compile the code twice. We can also combine
both lint targets, since due to the way we've designed the Rust code
(tiny source files for the "binaries", fat library), it makes no sense
to run the lints twice, once for each binary.

I left the two targets for proxy and engine in place, in case we want to
compile just one of the binaries without overwriting the other one. This
may change in the future, perhaps we can add an install target that
copies the binaries to bin/.
Latest commit a201bf4 Oct 13, 2018
Permalink
Failed to load latest commit information.
bin I'm changing my mind once again! Remove Go completely and switch back to Oct 12, 2018
data I'm changing my mind once again! Remove Go completely and switch back to Oct 12, 2018
docs Cleanup some unneeded compiler flags, run current rustfmt, and more o… Sep 3, 2018
logs Switch from slog to simplelog. It fits better with our usecase. We may Jan 8, 2018
scripts fixed up restructure Aug 19, 2014
src I'm changing my mind once again! Remove Go completely and switch back to Oct 12, 2018
tools Remove all the vestigial .keep files. Update all cargo depedencies. Add Aug 13, 2018
.gitignore Switch from slog to simplelog. It fits better with our usecase. We may Jan 8, 2018
AUTHORS Switch from globalconf to toml. Remove the init() function, do everyt… Sep 2, 2015
CREDITS Fixes to compile with current version of Go, as well as using proper … Sep 30, 2013
Cargo.lock I'm changing my mind once again! Remove Go completely and switch back to Oct 12, 2018
Cargo.toml Update dependencies and remove no longer needed edition flag. Sep 16, 2018
LICENSE-APACHE Brand new era in the life of Ataxia. Delete all Go code, start over w… Aug 24, 2016
LICENSE-MIT Brand new era in the life of Ataxia. Delete all Go code, start over w… Aug 24, 2016
Makefile Clean up the Makefile so it does less work. Oct 13, 2018
README.md I'm changing my mind once again! Remove Go completely and switch back to Oct 12, 2018
build.rs Rework loading config from file and cli option overrides. Jun 12, 2018

README.md

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

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

Planned Features

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

  • Reload the engine process without disconnecting players. Avoids common "copyover/hotboot" hacks.
    • Adds the ability to rollback players to a previous version of code if needed
  • The proxy can support various different communication protocols such as:
    • telnet (with or without tls)
    • ssh
    • websockets (to enable an HTML client)
  • Allows the network proxy to present a unified front-end to allow connecting to multiple backend game engines through a single connection/port:
    • Live game
    • Test game (for feature/bug testing)
    • Building interface
    • Admin interface
  • The network proxy will manage the account and login/permissions system:
    • Allows granting permissions (building interface, test access) on a per-account basis
    • Allows tying multiple characters to a single account/login
  • If you really want to, you can run the network proxy on a different server than the game engine

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 2018 edition, and it currently requires the nightly compiler until some features we rely on stabilize.

Currently nightly build that has been tested: 1.31.0-nightly

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 files in data/proxy.toml and data/engine.toml

Run Ataxia:

$ ./bin/startup.py

Development

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

  • Rust
    • rustfmt
    • clippy

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