Difference between revisions of "User talk:Vertrex"

From Armagetron
(Blanked the page)
 
Line 1: Line 1:
== Introduction ==
 
  
Hello everyone. This is a tutorial that I thought I should put together for those who are using Ubuntu and are struggling to grasp how to host more than one server. Before I go any further, I would like to say that this section does look similar to [http://wiki.armagetronad.net/index.php?title=Running_Multiple_Servers_on_a_single_Linux_computer Running Multiple Servers on a single Linux computer] ... but there is a difference. There are a couple of things that are different from the other and there are few others that have been added so people will fin them useful.
 
 
I do hope people will find this tutorial useful as I found the other one very useful but a bit confusing at times.
 
 
In the tutorial, My username is <code> vertrex</code> so don't get confused. Change my username to YOUR username so everything will work the way it should.
 
 
== Server Installation ==
 
 
Before you can think about setting up so that you can have multiple servers, firstly you need to have installed the Armagetron Advanced Dedicated Server in your computer. Now this is not specific as there are countless number of servers that the admins have either created or experiments or stable release.
 
 
The source codes for the servers can be found here: [https://code.launchpad.net/armagetronad Armagetron Advanced: a Tron Clone in 3d]
 
 
For the sake of this tutorial, our selection would be armagetron-sty+ct as that's a very popular selection to create servers  with.
 
 
=== Downloading Source Files ===
 
 
The location where you should download your source code would be:
 
cd /home/vertrex
 
 
Now download the source files using the command: bzr branch
 
bzr branch lp:~armagetronad-ct/armagetronad/0.2.8-armagetronad-sty+ct
 
 
=== Configuring Source Files ===
 
 
Once the download completes, go into the source folder
 
cd /home/vertrex/0.2.8-armagetronad-sty+ct
 
 
Then run the bootstrap
 
./bootstrap.sh
 
if you get an error saying:
 
autom4te: cannot open autom4te.cache/requests: Permission denied
 
aclocal: autom4te failed with exit status: 1
 
rm: remove write-protected regular file `aclocal.m4'? yes
 
then try:
 
sudo ./bootstrap.sh
 
 
Before taking the final steps, you need to create the folder to which your server will be installed in.
 
mkdir /home/vertrex/armagetronad
 
 
Now configure the server.
 
./configure --disable-glout --enable-authentication --prefix=/home/vertrex/armagetronad --exec_prefix=/home/vertrex/armagetronad --with-zthread
 
 
=== Installing Source Files ===
 
 
Once configuration is done, follow the next steps at installing the server
 
make
 
make install
 
 
If you get an error that you were unable to install in the folder, then take the next step:
 
sudo make install
 
 
Now, our servers have been installed in the directory: <code>/home/vertrex/armagetronad/</code>
 
 
== Server Preparations ==
 
 
Now, this is where you will have to do some thinking. You can make 7 servers as the ports list from 4534 to 4540. So, basically you have seven servers to make from. You could choose to make, Capture The Flag (S), High Rubber (S), Racing, etc...
 
 
To setup the multiple servers, please follow from next steps.
 
 
=== Server Directories ===
 
 
Go into your armagetronad installaiton folder
 
cd /home/vertrex/armagetronad
 
 
Create the sub directories as indicated below:
 
mkdir servers      'This folder will be used to store your server configurations
 
mkdir logs        'This one will be used to save the server logs
 
mkdir scripts      'And this one will be used to call scripts to start the servers or include with the servers
 
 
The next few steps are the fun parts. We will be making our servers. To do so, go into servers directory that you have just created.
 
cd /home/vertrex/armagetronad/servers
 
 
There, start creating sub folders for each of your servers. Example:
 
 
One server that I would like to create would be CTF which is capture the flag.
 
mkdir ctf 'this is the server that will be hosted
 
mkdir ctf/var 'this folder where the server's ladderlog, score, players will be stored
 
mkdir ctf/settings 'this is the folder where you place your config files such as settings_custom.cfg, settings.cfg, etc...
 
 
then copy your config files into the settings folder and the files that belong in the var folder.
 
 
You can create many more servers...
 
mkdir [Server Name]
 
mkdir [Server Name]/var
 
mkdir [Server Name]/settings
 
 
== Normal Scripts ==
 
 
The scripts are used mainly to launch a specific server that is called using the script. The servers include Capture The Flag (S), High Rubber (S), Dogfight, Sumo
 
 
All the server scripts are to be stored in the <code>/home/vertrex/armagetronad/scripts</code> directory.
 
 
Check this website to understand more about the scripts ... [http://wiki.armagetronad.net/index.php?title=Running_Multiple_Servers_on_a_single_Linux_computer#The_scripts Running_Multiple_Servers_on_a_single_Linux_computer#The_scripts]
 
 
Firstly go into the scripts folder to follow the steps below:
 
cd /home/vertrex/scripts
 
 
=== The Server Script ===
 
 
The first script will be called in this example: srv.sh
 
nano srv.sh
 
 
That creates a <code> .sh</code> file called <code> srv</code> in the scripts directory. Write the following lines in the file:
 
<code>
 
#!/bin/bash
 
 
loc="/home/vertrex/armagetronad"
 
tron=$loc"/bin/armagetronad-dedicated"
 
mkdir $loc/logs/$1
 
screen -S $1 -X logtstamp on # print timestamps in log file
 
screen -S $1 -X logfile $loc/logs/$1/$1_%m-%d-%Y-%c.log # create a logfile in the logs subf
 
screen -S $1 -X log on # Turn on logging for the server window
 
while true; do # start a loop to allow server restart if it crashes
 
 
  #Runs the actual server. By default, the binary is called armagetronad-dedicated and is located in the prefix/bin directory. In this example, it is
 
# in /home/vertrex/armagetronad/bin directory.
 
 
        $tron --vardir $loc/servers/$1/var
 
        $tron --userconfigdir $loc/servers/$1/settings
 
 
 
# Shows the errors and indicates that the server has crashed, and then, waits 5 seconds before restarting the server, allowing you to quit with CTRL-C
 
      echo "Server has crashed. It will restart immediately..., press CTRL-C to cancel"
 
      sleep 5
 
            done # end the loop
 
</code>
 
 
To save the file, press CTRL-X and Y to confirm. You have now a file called srv in /home/vertrex/armagetronad/scripts
 
 
=== The Global Script ===
 
 
Create the second script. I called it start:
 
nano start.sh
 
 
That creates a <code> .sh</code> file called <code> start</code> in the scripts directory. Write the following lines in the file:
 
<code>
 
#!/bin/bash
 
 
loc="/home/vertrex/armagetronad"
 
 
# If you run the script with a parameter (server name), only that server will be start. Otherwise, all servers in
 
# the /home/vertrex/armagetrnad/servers directory will be started
 
 
if [ "$1" != "" ]; then
 
      screen -S $1 -X quit # Kill the window if it exists already, avoiding to run the same server twice
 
      screen -dmS $1 $loc/scripts/srv.sh $1 # start a GNU screen window with the specified server inside
 
else
 
      for f in $(ls $loc/scripts/servers/.) # start a loop running the following command for any existing folders in the
 
#/home/vertrex/armagetronad/servers folder
 
                do
 
                      screen -S $f -X quit # Kill the window if it exists already, avoiding to run the same server twice
 
                      screen -dmS $f $loc/scripts/srv.sh $f # start a GNU screen window with the server inside for each server folder
 
                done # ends the loop
 
fi
 
</code>
 
 
Remember to save it in the same way as before.
 
 
Before you can run the script, you must make them executable:
 
chmod +x srv.sh
 
chmod +x start.sh
 
 
== Advanced Scripts ==
 
 
In this section, I will show you a few things that might interest you such as the rotation script, script that allows you to make your maps to change randomly. This is better than using the experimental armagetronad-0.3 version.
 
 
For the sake of this section I will be demonstrating to you how I manage my my racing server.
 
 
I got the script from a friend who made it for public so I used it to make my racing server to have it's maps randomly change.
 
 
Like before, all script are to be stored in the <code>/home/vertrex/armagetronad/scripts</code> folder.
 
 
So go into the scripts folder to follow the steps shown below:
 
cd /home/vertrex/scripts
 
 
=== The Rotation Script ===
 
 
Now, this script is a little confusing at first but after this it should make sense on how to use the script for your own servers.
 
 
All credit goes to [http://forums3.armagetronad.net/viewtopic.php?p=236054#p236054 Kyle] for writing the script.
 
 
Create the rotation script. I called it start:
 
nano race_rotation.php
 
 
This creates a <code> .php</code> file with the name <code> race_rotation</code> in the scripts folder.
 
<code>
 
#!/usr/bin/php
 
<?php
 
$maps=array("/path/to/map1.xml","/path/to/map2.xml");
 
while (1)  {
 
    $line = rtrim(fgets(STDIN, 1024));
 
    if ( preg_match( "/^ROUND_COMMENCING/", $line ) ){
 
        $keywords = preg_split("/ /", $line);
 
  $map=rand (0 , count($maps )-1);
 
        echo "MAP_FILE ".$maps[$map]."\n";
 
        echo "WAIT_FOR_EXTERNAL_SCRIPT 0\n";
 
        sleep(6);
 
        echo "WAIT_FOR_EXTERNAL_SCRIPT 1\n";
 
    }
 
}
 
?>
 
</code>
 
 
I'm sure you are a little confused about what line 3 meant:
 
$maps=array("/path/to/map1.xml","/path/to/map2.xml");
 
 
Basically, the "path/to/map1.xml" is simply the path where your map file is being stored in <code> <author>/<category>/map1.xml</code>
 
 
My Example:
 
$maps=array("LoverBoy/Racing/Briston-1.0.0.aamap.xml","LoverBoy/Racing/Flexinator-1.1.0.aamap.xml","LoverBoy/Racing/Briston-1.0.1.aamap.xml","LoverBoy/Racing/Flexinator-1.1.1.aamap.xml");
 
 
As you can see in my example, I have listed my racing maps in an array. The paths to each map will be placed between <code> " "</code> , to separate each map we use <code> ","</code> and then we simply add <code> );</code> at the end to complete the array of maps.
 
 
=== The Server Script ===
 
 
OK, The following script only for racing server but you can alter it for your own servers if you wish to.
 
 
Create the server script. I called it start:
 
nano race_srv.sh
 
 
This creates a <code> .sh</code> file with the name <code> race_srv</code> in the scripts folder.
 
<code>
 
#!/bin/bash
 
 
loc="/home/vertrex/armagetronad"
 
tron=$loc"/bin/armagetronad-dedicated"
 
var=$loc"/servers/"$1"/var/"
 
log=$var"console_log.txt"
 
userconfigdir=$loc"/servers/"$1"/settings/"
 
parser=$loc"/scripts/race_rotation.php"
 
ladderlog=$var"ladderlog.txt"
 
 
mkdir $loc/logs/$1
 
screen -S $1 -X logtstamp on                                    # print timestamps in log file
 
screen -S $1 -X logfile $loc/logs/$1/$1_%m-%d-%Y-%c.log        # create a logfile in the logs subf
 
screen -S $1 -X log on                                  # Turn on logging for the server window
 
while true; do                                          # start a loop to allow server restart if it crashes
 
 
#Runs the actual server. By default, the binary is called armagetronad-dedicated and is located in the prefix/bin directory. In this example, it is
 
# in /home/vertrex/armagetronad/bin directory.
 
 
tail -f $ladderlog | $parser | $tron --userconfigdir $userconfigdir --vardir $var| tee -a $log
 
 
 
# Shows the errors and indicates that the server has crashed, and then, waits 5 seconds before restarting the server, allowing you to quit with CTRL-C
 
      echo "Server has crashed. It will restart immediately..., press CTRL-C to cancel"
 
      sleep 5
 
            done # end the loop
 
</code>
 
 
To use your rotation script for other servers, change the rotation script name in the script to your rotation script's name:
 
  parser=$loc"/scripts/[Script Name].php"
 
 
To know more commands other than <code> userconfigdir</code> and <code> vardir</code> , try this in the script which will give you a window with the other things you can have:
 
$tron --help
 
 
=== The Global Script ===
 
 
OK, The following script only to start the racing server but you can alter it for your own servers if you wish to.
 
 
Create the server script. I called it start:
 
nano race_start.sh
 
 
This creates a <code> .sh</code> file with the name <code> race_start</code> in the scripts folder.
 
<code>
 
#!/bin/bash
 
 
loc="/home/vertrex/armagetronad"
 
# If you run the script with a parameter (server name), only that server will be start. Otherwise, all servers in the /home/vertrex/armagetrnad-0.2.8/servers director$
 
# will be started
 
if [ "$1" != "" ]; then
 
      screen -S $1 -X quit                            # Kill the window if it exists already, avoiding to run the same server twice
 
      screen -dmS $1 $loc/scripts/race_srv.sh $1                    # start a GNU screen window with the specified server inside
 
else
 
      for f in $(ls $loc/scripts/servers/.)    # start a loop running the following command for any existing folders in the
 
# /home/vertrex/armagetronad/servers folder
 
                do
 
                      screen -S $f -X quit                            # Kill the window if it exists already, avoiding to run the same server twice
 
                      screen -dmS $f $loc/scripts/race_srv.sh $f    # start a GNU screen window with the server inside for each server folder
 
                done                                                    # ends the loop
 
fi
 
</code>
 
 
Remember to save it in the same way as before.
 
 
Before you can run the script, you must make them executable:
 
chmod +x race_rotation.php
 
chmod +x race_srv.sh
 
chmod +x race_start.sh
 
 
=== Start All Servers ===
 
 
To start all the servers check this link to fin out just how to do it as I didn't find it very useful for my purposes: [http://wiki.armagetronad.net/index.php?title=Running_Multiple_Servers_on_a_single_Linux_computer#Starting_all_servers Running_Multiple_Servers_on_a_single_Linux_computer#Starting_all_servers].
 
 
== Installing Z-Thread ==
 
 
Firstly go into your user folder:
 
cd /home/vertrex
 
 
Downloading ZThread Compressed File
 
wget http://voxel.dl.sourceforge.net/sourceforge/zthread/ZThread-2.3.2.tar.gz
 
 
Extracting File
 
tar -xzf ZThread-2.3.2.tar.gz
 
 
Entering into the extracted folder
 
cd ZThread-2.3.2
 
 
Configuring the source files
 
./configure CXXFLAGS="-fpermissive" --prefix=/usr/
 
 
Perform the installation of the source files
 
make
 
make install
 
 
if the <code> make install</code> didn't work, then try:
 
sudo make install
 

Latest revision as of 04:52, 21 May 2011