Server Administration Guide

From Armagetron

Setting up a server for Armagetron Advanced isn't terribly difficult, but there are a few things you need to consider when you do it. Taking a few minutes to figure out what you're trying to do will save you a whole lot of headache/heartache later on when people start playing your server.

Starting out

Before you consider what OS you're going to use, what version of the game to run, and so forth, you should figure out a few basic parameters of the server. Here are some you should consider.

Private or Public?

The setting TALK_TO_MASTER is off by default. To make your server public (available on the master server list), you must turn on this setting by using this code TALK_TO_MASTER 1. If it is off, players will only be able to connect to your server through the Server Bookmarks using your IP address. If you are connected to the internet through a router, normally used so that multiple computers can share the same internet connection, you will also need to open a port.

More information on both of these topics is available below.

Moderated?

Armagetron Advanced supports a limited but expanding set of in game administration commands(in 0.2.8, it will be a fairly comprehensive set). The catch is that you can only have one administration password. So in order to make moderators on your server, all you have to do is give out the administration password. Modern servers support global ID (and even local users), so each moderator can have their own account.

The alternative is to use the voting features that are intended to allow players to moderate the server as they see fit.

You can go either way, of course. It's entirely up to you.

Round or Match

There are plenty of ways to setup scoring on a server. A common setting is one point for each kill. While this scoring method encourages competitive play, it's not always desirable. On some servers, just surviving to the end of the round is quite an accomplishment, and you may wish to reward players for doing so. Too much of a reward will encourage players to just screw around instead of fighting.

You should also consider if you even want the standard gladiator-style fighting. It's certainly possible to set up scoring to allow for different games, such as Roulette, and to encourage different playing styles. So just take a few minutes to think about it. It'll pay off in the end, because the default game server settings aren't necessarily the most popular scoring rules, and unless you really want the default scoring, you could lose most of your audience in the first two hours of operation if you didn't think about scoring.

Requirements

If you fall short

If you cannot meet the requirements to host a server yourself (or simply don't want to leave your computer on 24/7), don't despair! There are companies that specialize in hosting colocated servers-- you can use many of them (such as SevenL or VR Hosted) to host an Armagetron Advanced server. If you don't have the expertise or want to bother with maintaining a full Linux server, you can get hosting specifically for Armagetron from Lightfoot Hosting or Flynn's Arcade or Wild West or to seen an updated list visit List of Hosters without needing to setup anything.

Hardware

Hardware requirements are fairly small. The game itself will only need around 10MB of RAM or so, more for more players. So whatever the minimal requirements for your target operating system will usually suffice. It is important to make sure that the game will not have any of its parts swapped to disk, just like with any other server, but memory usage is minimal.

CPU requirements are also pretty slim. Again, whatever the requirements for your target operating system will likely suffice. A common number provided for a server CPU is a 600mhz Pentium II or greater. Some popular servers have run on as little as 800mhz AMD Duron! Starting in 0.2.7.1, it is possible to limit the framerate of the simulation itself. This gives several important traits to the game. First, it makes it play nicely even on a computer that runs other tasks (such as a web server). It also provides for more stable gameplay. Finally, it allows you to tailor the simulation for your hardware, so on a smaller CPU, you should consider limiting the framerate of the simulation to improve gameplay.

Network

The size and speed of your network connection is more than likely going to be your first and most serious performance bottleneck. Generally you'll want to consider that each player connected requires about 6KB/second of upstream bandwidth. So for 16 players, you'll need 96 KB/sec of upstream bandwidth. This doesn't consider any other bandwidth usage on your network, such as web browsing from a different machine. Use MAX_CLIENTS to limit the number of players accordingly.

More information is given for both of these topics in the Advanced Server Administration Guide.

Setting Up

So now you've figured out what kind of server you want and how you want people to play on it, and you want to know how to set it up and optionally make it available on the master server browser. Setting up is fairly straightforward.

If you do not wish to bother with setting up a server yourself, and be left to simply administrate your server, Lightfoot Hosting, Flynn's Arcade or List of Hosters provide managed hosting for Armagetron servers-- you can just configure it how you like using a simple web interface and be ready to play.

Install the Server

First you need to install the server. It's common to think of any given "server" as a special machine built by old women in third-world countries, but actually, a "server" is just any machine that makes a "service" available to other users. In this case, you're going to install software on a computer, possibly your desktop computer, that will make a game service available for other users to use.

So first you need to acquire the package called "armagetronad-dedicated". If you're using Linux, get one that says "linux" on it. For Windows, get the one that has ".exe" on the end of it. For Mac OS X, there's one with a ".dmg" extension for you. Usually the CPU architecture and OS are embedded in the filename, so pick the right one and install it.

We won't go into too many details here about installation, consult the regular documentation for how to install the server for your architecture.

Test the Server

After installing the server, the first thing you should do is test it. So start it up by following the specific directions for your OS listed below.

After starting the server fire up a client and see if you can connect to it as a LAN game (under Network Game). If you can do this, then you have successfully tested the server.

Linux

To start:

  • You will want to become the superuser and issue the command /etc/init.d/armagetronad-dedicated start.

To stop:

  • Issue the command /etc/init.d/armagetronad-dedicated stop.

Windows

To start:

  • Find the icon in your Start menu and click it

To stop:

  • Go to the console window for the server (it opens when you start the game) and type QUIT.

Mac OS X

See the documentation on Mac OS X Dedicated Server.

Public Servers

If you want to host a server at home. You have to open UDP port 4534 in your firewall and possibly forward the port from your router to the PC running ArmagetronAd (and is hosting a game).

Firewalls

  • Windows 7: To add port 4534 to firewall, follow these instructions.
  • Windows XP: Either your firewall will ask you if you want ArmagetronAd to open port 4534. You can also follow these instructions use name: "Armagetron Server" the port is UDP 4534 (leave TCP blank).
  • ZoneAlarm: TODO: popular? should it be added ?
  • Mac OS X: Go to System Preferences ? Sharing ? Firewall. One way to let all traffic through is turning it off, but you may not want to do that. If you decide to leave/turn it on, look for a button labeled “Advanced…”. If it exists, go there and ensure “Block UDP Traffic” is not checked. If it doesn't exist you have an old version that never blocks any UDP. For the curious: this is a limited GUI to ipfirewall.
  • Linux: TODO Lucifer ? Link to a site ?

Port forwarding

If you have a router with NAT, you'll want to forward a port to your server so others can reach it. if you don't know what port forwarding is and why you need it, you should read this guide. Armagetron uses the UDP port from configuration option SERVER_PORT, which is 4534 by default. You'll probably want a forwarding entry that looks like:

  • Local/internal address: <your server's IP address>
  • Protocol: UDP
  • Local/internal port: <SERVER_PORT>
  • Remote/external port: anything should work, but <SERVER_PORT> is common.

It is important that your server's IP address never changes. You can manually choose an address outside the address pool used by DHCP, or an address that is unlikely to be assigned (e.g. if the lowest available address is always assigned, you can use an address ending with 100), or disable DHCP altogether and configure everything manually. http://www.portforward.com/ has more info on that.

If you can't figure it out, consult your router's manual. You can also look for help at the aforementioned http://www.portforward.com/, which has tutorials for many routers, and a forum. It doesn't have an Armagetron entry (yet), but it has been found that F-22 Lightning 3's port range contains Armagetron's default port, so if you're absolutely clueless you can go with that.

Dynamic external IP addresses

If you have a dynamic external IP address, you can use a service like DynDNS's Dynamic DNS to map a name to your IP address. When your IP address changes, a small updater program will send the new address to DynDNS and update the address associated with the name. You should set the setting SERVER_DNS to the name you registered to ensure clients and the master servers can keep track of you when your IP address changes.

Secure the Server

There isn't really a lot to do here, but you should consider how you want to secure the machine. If you think it will be necessary to ban certain players, then a firewall is your only option. Since ArmagetronAd 0.2.8.x you are able to ban IPs. For older versions you can use a firewall that allows you to deny connections from users by IP address. It's not foolproof, but it's the only thing possible until we have player authentification.

Contrarily, if you do not want internet players to be able to use your server, you will need to make sure your router prevents such players but making the port mentioned above inaccessible through the router.

Configuration Files

At this point you should have a good idea of what kind of server you're going to run and you should also have a working server running, but you don't yet have the server you set out to build. Now you need to configure the server itself.

The server is very flexible. As of the 0.2.8 release, you have pretty complete control over the simulation, and you also have some settings that you can configure the game rules a bit. So now all you need to do is make the settings, right? Wrong. :) First you need to understand how the settings are loaded and in what order.


Examples

Note: These examples first appeared in one of the release candidates for 0.2.8. Depending on what version you install, you may not have all of them, or even any of them. The final 0.2.8 release will have them for all platforms, however.

Several example files are provided to help you get set up and running quickly. These files contain snippets of settings that range from simple adjustments to cycle physics to more complex snippets that encapsulate complete game rules. So if you've played a server that you really enjoy and you'd like to use it as a base to build your own server, you can look to see if any of the example snippets provide the settings you're wanting.

Some of the snippets are named from the servers they came from. When you see this, it is because the file contains a fairly complete set of settings to make a server exactly like the server where the settings originated. Others are named after a specific action. These may have originated in a server, or they may not have originated in a server. If they came from a server, you can read the comments in the file to see which server they came from.

Each example snippet is built with the intention of being included in your settings_custom.cfg file so you don't have to copy and paste the contents in order to use them. Be warned, however, that the example snippet you've picked may be changed in an upgrade. This will happen periodically when the game engine changes in a way that renders the settings snippet in a different fashion than it was intended, and the changes will be made to attempt to bring that file back to the same feel of play as it originally had. If you want to use those upgrades to your benefit, then you can and should go ahead and include the snippet file as shown. If you want to insulate your server from such upgrades, then you'll need to copy and paste the contents of the file into your own settings_custom.cfg.

Examples:

To make a fortress server, add this line to settings_custom.cfg:

INCLUDE examples/fortress_soccer.cfg

To add a death zone to your server, you can add this line:

INCLUDE examples/death_zone.cfg

To add a single-use booster in place of the brake, you can use:

INCLUDE examples/single_use_turbo.cfg

Some of the example files may modify the same settings that others modify. When two examples conflict in this fashion, the one that is listed last will override all others. So place the one you wish to have persist at the end.

If you'd like to taylor the settings after you've included them, place your own settings after the relevant include lines. In fact, you should place all of your additional settings after all includes in order to ensure that no new included file will override your own settings.

Making your own Settings

The most common settings to change affect game logic, scoring, and some basic simulation such as cycle speed, acceleration, and so forth.

Simulation Settings

EXPLOSION_RADIUS
Blast radius of cycle explosions. Set to 0 to have no explosion radius (obviously).
WALLS_LENGTH
Cycle trail length. Set to -1 to have infinite trails.
WALLS_STAY_UP_DELAY
Cycle trail stay up this long after the cycle's destruction, measured in seconds.
SPEED_FACTOR
Cycle speed factor. Increase this by two to double the speed
CYCLE_RUBBER
This affects grinding. Higher numbers allow players to get closer to walls before crashing. It's intended to be used solely to correct for lag, but it's usually not used that way.

Map Settings

ARENA_AXES
Sets the number of possible driving directions (used only when map is axes-independent, otherwise the map overwrite this value)
MAP_FILE
This describe how to retreive a map. It uses a special syntax to allow to describe the location of the map on the local disk and a possible list of network based location, such as web url, where to retreive the file. The syntax is "[./][directory[/directory[...]]]/filename [(fulluri[; fulluri[; fulluri[...]]])]". By default, missing files are looked up by the client on the central resource repository. If one of more URI are given in the MAP_FILE, they will be queried before going to the resource repository.

Game Rules

SCORE_WIN
Points you gain for being last one alive. Also known as "camping points"
SCORE_SUICIDE
Points you gain for every stupid death (race into the rim/your own wall). It is added, so negative numbers are appropriate here unless you want to reward people for being stupid.
SCORE_KILL
Points you gain for everyone racing into your wall.
SCORE_DIE
Points you gain for every time you race into someone else's wall. Like SCORE_SUICIDE, you should make this a negative number unless you want to reward people for sucking.
LIMIT_SCORE
Score limit. When a player reaches this score, the match ends and that player wins. Ties are resolved by playing another round until one player has more points than the rest.
LIMIT_ROUNDS
Max number of rounds to play. When this is reached, the highest-scoring player is named the winner.
LIMIT_TIME
Max time (in minutes). When this is reached, the highest-scoring player is named the winner of the match.

Here is a pretty common setup:

SCORE_WIN 0
SCORE_SUICIDE 0
SCORE_KILL 1
SCORE_DIE  0

LIMIT_SCORE 10
LIMIT_ROUNDS 40
LIMIT_TIME  30

This is the scoring system used on servers like Swampland, the old Tigers Network servers, and the goshdarn clones that are floating around. It basically means you have to get 10 points by killing other players to win the match. Breakfast in Hell used a variation:

SCORE_WIN 0
SCORE_SUICIDE 0
SCORE_KILL 1
SCORE_DIE  0

LIMIT_SCORE 1000
LIMIT_ROUNDS 40
LIMIT_TIME  7

You still had to kill people to win, but the match was limited to 7 minutes. After 7 minutes, a winner was declared. The Crack Pipe still uses these settings at the time of writing but may change in the future.

This isn't a complete list!

There are a whole slew of configuration items available. Since the config items are the same as console commands, you can see a pretty complete list on the Console Commands page.

Finishing Up

The last thing you need to figure out is usually the first thing you know. Do you want this server to be known by the master server? If so, you need to add this line to your settings_custom.cfg:

TALK_TO_MASTER 1

Note: in previous versions, this was the default, but as of 0.2.8, the default will be to not talk to master. You will have to manually set that, so make it the last thing you do before starting the server up for play.

You will also likely need to set DEDICATED_IDLE to 0. If you're in Linux and you're using the init script, then you probably don't have to worry about it, because the init script will restart the server automatically. But if you're not in Linux, you'll need to place this in your settings_custom.cfg:

DEDICATED_IDLE 0

For instructions on server-restarting on Mac OS X and Linux/UNIX systems go to Server_auto_restart.

If you want your server to be known on the internet, you will probably need to open a port in your router. The default port is 4534, and you need to open it for "udp". Instructions on how to configure this on your router are beyond the scope of this document, you should consult your owner's manual for further information.

Of course, when that's all done, you need to start the server. Use the same procedure already referenced.

Conclusion

This article is the basic "How to setup a game server" article. After reading through this article and getting your server running, the best thing you can do is to play your server for awhile, talk to other administrators, and so forth. Find out what people want, or figure out what you want. Tweak your settings however you'd like, it's your server. When you feel like you've got the hang of running a server, check out the Advanced Server Administration Guide for more cool things you can do with your server.

In the meantime, have fun!