<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?xml-stylesheet type="text/xsl" href="transformations/cubedoc2xhtml.xslt"?>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lang="en" xml:lang="en">
  <head><title></title></head>
  <body>
    <h1>
        Setting up a Server
    </h1>

    <h2>The AssaultCube Server</h2>

    <p>
        Dedicated servers run in the shell only (no graphics), with increased priority yet use very little cpu time and memory, 
        so you can run one in the background, or at the same time with a client if you want to host a game. Server port is 
        fixed at <b>28763</b>, with <b>28764</b> being used for the server info requests (both UDP). 
        See the <a href="getstarted.xml">Get Started Guide</a> to find out how to join a server.
    </p>

    <h2>Main Configuration</h2>

    <p>
        The AssaultCube server is mainly configured using command line options set in the server script <i>assaultcube_server.bat</i> on windows or 
        <i>assaultcube_server.sh</i> on linux. 
    </p>

    <div class="code">
        bin_win32\ac_server.exe -c8 -n"My AC Server"
    </div>

    <p>
        Possible command line options can be obtained from the <a href="startup.xml">startup section</a> of this documentation.
        Run the script to start the server.
    </p>

    <h2 id="maprotation">Maprotation</h2>

    <p>
        In the maprotation file specified on the command line (default: <i>config/maprot.cfg</i>), you can specify
        the map, mode, time and voting for your server. Each line defines one round. Example:
    </p>       

    <pre>
    // server side maprotations
    // WARNING: You can NOT use CubeScript in there
    // use the following scheme:
    // map:mode:time:allowVote

    // tdm
    ac_complex:0:10:1
    ac_depot:0:10:1
    ac_desert:0:10:1
    ac_mines:0:10:1

    // ctf
    ac_mines:5:10:1
    ac_depot:5:10:1
    </pre>

    <p>
        The first line, <span class="code">ac_complex:0:10:1</span>, means, the map <i>ac_complex</i> is played 
        in mode 0 (Team Deathmatch) for 10 minutes. The connected players are allowed to vote.
    </p>

    <h1>Administration</h1>

    <h2>Cheating</h2>

    <p>
        Cheating is a problem that can't be solved entirely. 
        AssaultCube is opensource, so everyone that knows how to compile it can easily modify the source to do whatever he wants, 
        thats the problem of opensource games. The fact that the whole game logic is client-side, to save a lot bandwith, makes it even easier to cheat.
        There is no way to avoid this abuse.
    </p>
    
    <h2>Server Master</h2>

    <p>
        AssaultCube adapts the useful feature called <i>master mode</i> known from the Cube 2 games. It's implemented in a different way though.
        Servers operate in a so called <i>master mode</i> which allows people to easily and painlessly have games with people they know, 
        without being disturbed by cheaters. The way it works is very simple: the first person to enter a server and use the <span class="code">setmaster</span>
        command becomes the master of that server. The master of a server can force map changes, set a different master mode and perform other
        administrative actions normal players can't.
    </p>

    <p>
        There exist two master modes a server master can set:
    </p>

    <ul>
      <li>
        <i>open</i> - Anyone can enter the server. This is the default mode. It is good for games with random people, if no cheaters appear to be around.
      </li>
      <li>
        <i>private</i> - Noone can join the server anymore. Good for games with friends when cheaters are around.
      </li>
    </ul>
    
    <p>
        The idea behind this is to avoid the need for 'real' administrators that have to babysit the server 24/7.
        Unlike other games, the players control themselves using the described master role and the master modes.
    </p>

    <p>
      Related commands:
    </p>

    <ul>
      <li>
        <a href="reference.xml#identifier_setmaster">setmaster</a> - become master on a server
      </li>
      <li>
        <a href="reference.xml#identifier_mastermode">mastermode</a> - change the master mode
      </li>
      <li>
        <a href="reference.xml#identifier_kick">kick</a>
      </li>
      <li>
        <a href="reference.xml#identifier_ban">ban</a>
      </li>
      <li>
        <a href="reference.xml#identifier_removebans">removebans</a>
      </li>
      <li>
        <a href="reference.xml#identifier_autoteam">autoteam</a>
      </li>
      <li>
        <a href="reference.xml#identifier_forceteam">forceteam</a>
      </li>
    </ul>
    
    <h2 id="serveradmin">Server Admin</h2>

    <p>
      There is an additional client role a player can claim called <i>admin</i>. 
      It can be claimed by the real owner of a server to control the situation
      if an abusive master is doing bad stuff.
      Claiming admin state works similiar to the master state,
      however it requires a password that matches the server configuration.
    </p>

    <p>
      Related commands:
    </p>
    
    <ul>
      <li>
        <a href="reference.xml#identifier_setadmin">setadmin</a> - become admin on a server
      </li>
      <li>
        <a href="reference.xml#identifier_connectadmin">connectadmin</a> - connect to a server and become admin
      </li>
      <li>
        <a href="reference.xml#identifier_givemaster">givemaster</a> - gives the master state to a player
      </li>
    </ul>

    <p>
      Use the <span class="code">setadmin</span> command to claim admin if you are already connected to a sever.
      However if you are locked out of your own server because you are banned, master mode is private or because all
      client slots are taken, you can use the <span class="code">connectadmin</span> command to get control
      back though. Once the mess is cleaned up, the command <span class="code">givemaster</span> can be used
      to give back the master state to a honest player.
    </p>

    <p>
      The admin password is configured using the <a href="startup.xml">-x command-line option</a>.
    </p>

    <h2 id="mastermenu">Server Operator Menu</h2>

    <p>
        Some administrative actions can be done using the GUI. To bring up the server operator menu, navigate to <i>Main Menu->Multiplayer->Server Operator</i>
    </p>

  </body>
</html>
