If you want a summary of how Development is going, you should instead read the News or Gitlab issues. Here we will teach how to install a localhost and contribute to this project. It may be possible to do so on windows, but we know nothing, so we assume you're using Linux.
Here is a list of packages you should look for:
mariadb-server, mariadb-client, mariadbclient-dev, libmariadbclient-dev, zlib-dev (or zlib1g-dev), libpcre-dev, gcc, make, automake, autoconf, libtool
Protip: Use apt-cache to your advantage, as the package names tend to differ.
Cloning the Repository
The next step is the most important one. Open a BASH console, as every code block now will most likely be ShellScript. These commands clones the master repository, and all repositories you'll need (and some extras)
git clone [email protected]:TMW2/evol-all.git TMW2 cd TMW2 ./init.sh all
If you don't have a login at Gitlab, replace "[email protected]:" with "
https://gitlab.com/". Mind the colon (:) and the bar (/). Disregard the quotes (").
init.sh offers other cloning options which won't be explained here.
Preparing Server to Run
The data you just cloned is not ready to run. You need to compile several files, provide files which contain sensitive data -- it is so much stuff to do, that instead you can just run a make command, and it'll take care of everything you need.
ln -s music/music/ client-data/ cd server-data make asan
This will get you a compilation with AddressSanitizer, which will make easier
to report bugs, specially if everything crashes. However, if you're short on
memory, you can use "
make new" instead - it will save a lot of
resources from your computer, and there is no downside, except you'll need to
use Valgrind (which is HEAVY) if things go terribly wrong.
...And yes, the path for the link is music/music/. That is not a typo.
The server is divided in three programs, and if everything went fine, they should be at server-data (the folder you're currently in):
./login-server ./char-server ./map-server
Run them in this order. If you don't, the proccess may die, but nothing should go terribly wrong... we think. There's no warranty, and you assume the costs of repair if using them breaks your computer. It's better to run them in three terminal tabs, instead of writing a single statement using "&".
Once map-server reports everything is running fine, usually by receiving a Fame List with zero characters and then being quiet, you can use the following commands (in server-data dir) to start the client in your localhost server:
cd ../tools/manaplus ./connect_local_server.sh
Shall you receive a dire warning that you're using an outdated client (prior
2017), use "
force_localmanaplus.sh" instead. If it complains that
you do not have ManaPlus, you must compile it - the program is provided at the
"manaplus" directory (as in TMW2/manaplus, not TMW2/tools/manaplus)
Now, this could solve all your problems, but you probably want to give yourself
almost unlimited power. For example, you added a monster. What is the usefulness
if you can't use "
@spawn" to summon it?! So, to without further
ado give yourself adminstrative privileges over your account, use this command:
If you're on the same folder that you ran the client. Otherwise you can just
make givegm" at server-data folder, that should be fine, too.
Making Content & Submitting Changes
Make sure you have Tiled installed, with at least version 1.1.1 installed (or a 2018 version. Previous versions will be instantly rejected for messing the TMX files). Go to "client-data" directory.
See the Tiled website about making maps, or ask on Discord. The maps are at "client-data/maps", the minimaps are at "client-data/graphics/minimaps" and the tilesets are at "client-data/graphics/tilesets".
In case of doubt, simply copy one of the TMX files there and edit the copy. This will provide all headers filled, and layers named, along at least a few useful tilesets.
You must use "
make maps" at server-data to these changes have effect
in-game. Remember to restart "map-server" proccess everytime you want changes
at server-data to take effect. (Configurations may require restarting all servers.)
dyecmd" to ensure your artwork is sane (32 bit, PNG, alpha,
without any pallete and other data). This command is provided at the ManaPlus
package. See the ManaPlus Website for
help with XML files. (You may need to look at sitemap)
We wanted all music files to be converted to libOpus which can reduce files in 75%, but ManaPlus does not supports it, so ensure you're using libVorbis. Ah yes, please, use OGG files. It can run MP3 too, but that may have... unexpected behavior.
Adding Quests & Scripts
Edit the txt files at "server-data/npc". Use "make maps" to generate the imports, if you added a new NPC.
Restart map-server when you change any script, and it'll have effect. You can use "@reloadscript" which is an (unreliable) way to apply your changes. Map-Server will report any errors or warnings on your code. You must not introduce any new error or warning to have your new quest/script accepted.
The scripting references can be found at "doc/server/scripts", which was included by "init.sh all". You can also see here some converted to HTML for easier reading (may be sightly outdated).