TMW-2 Development

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.

Installing Dependencies

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.

Running Server

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:

    
    ../localserver/givegm.sh
    
    

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

Adding Maps

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

Adding Art

use "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)

Adding Music

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