Welcome to The Mana World Athena! This is an MMORPG server used by The Mana World, based on a protocol that was inspired by the project named "Athena". In 2004, it was forked from eAthena, a Ragnarok Online clone.
If you are interested in contributing, please take a look at our wiki for user instructions. It provides detailed information on how to get started.
Important note: Building from a GitHub-generated tarball does not work! You must either build from a git checkout or from a 'make dist' tarball.
The rest of this file contains information relevant to distributors and contributors.
- Please read version.mk for important version information.
- TMWA requires git to build by default. Use 'make dist' to get a tarball.
- Tested: x86, amd64, x32
- Likely to work: all architectures (patches welcome if they don't)
- Known bad: Linux 2.6.26 and earlier
- Maintained: Linux 3.2 and later
- Likely to break: Cygwin, BSD
- Must support symlinks
- Required: 2.7.x only, installed in $PATH as 'python'
- Recommended: glibc 2.17 or higher
- Supported: glibc 2.13
- Known bad: glibc 2.8 or below
- Unsupported: anything that's not glibc
- Required: g++ 4.7.2 or higher
- Recommended: g++ 4.8.1 or higher
- Not recommended: clang++ 3.3 or higher (all versions have unfixed bugs)
- Recommended: libstdc++ to match g++; may need patch for clang++
- May work: libc++
- Special: see below
- Depends on what it was built against
- Depends on what it was built against
- Run
./configure
to configure the build. Most of the options are similar to GNU Autoconf's configure. For example, you can create abuild
directory and run../configure
from there to keep the source directory clean.
- Run
make -j$(nproc)
to build the project.
- Run
make test
to run the build tests. This requires Google Test available - it's added here as a submodule. Note that test coverage is not yet complete. - Run
make format
to format the code.
- Run
make install DESTDIR=/whatever
to install the project. See what is installed below.
- Not implemented
- Run
make dist
ormake bindist
to create distribution tarballs.
TMWA's ./configure
script is implemented using a python package called 'attoconf'. It provides a simpler alternative to GNU autoconf. Attoconf is available at Github and is a well-behaving python package. Please note that attoconf requires Python 2.7, however efforts to bring it to Python 3 are in progress.
Currently, make install
installs 5 binaries, along with libraries, headers, data files, config files, and debug files. Each component has a specific make install-something
target.
The 4 main programs listed below are typically running on the same machine, but they can be configured to run on different machines in a fast LAN. Please note that the internal protocol between the programs may change without notice, so it's important to upgrade them simultaneously.
tmwa-admin
: Formerly known asladmin
("local"). This tool is used to maintain the server's flatfile "databases". It connects totmwa-login
to make changes.tmwa-login
: Formerly known aslogin-server
. This server handles account checks and accepts internal connections fromtmwa-admin
andtmwa-char
.tmwa-char
: Formerly known aschar-server
. This server handles character persistence, connects totmwa-login
, and accepts connections fromtmwa-map
. Multiple instances oftmwa-char
can connect to the sametmwa-login
. If this is the case, the client will be presented with a choice of worlds before leaving the login server. The Mana World sometimes runs a testtmwa-char
server connected to the maintmwa-login
for ease of access.tmwa-map
: Formerly known asmap-server
. This server connects totmwa-char
. Multiple instances oftmwa-map
can connect to the sametmwa-char
, with clients able to switch servers if they move to a map handled by a different map server. This has not been used by The Mana World, and may not work properly.
To run the server, you will need a complete set of content including config files, game scripts, savefiles, and client updates. We strongly recommend setting up a web server to serve the updates. You can find a compatible set of server data at https://git.themanaworld.org/legacy/serverdata. Please follow the instructions in the How to Develop article for more information.
We welcome contributions from developers like you! If you are interested in maintaining this server, please get in touch with the currently active maintainers first. It's important to make changes with extreme care and ensure that each change is thoroughly tested and reviewed before it goes live.
If you have become familiar with the codebase, we encourage you to stick around and help fix issues or review changes made by others. Your contributions are greatly appreciated!