63
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
66
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
67
<meta name="date" content="2008-09-03T17:19:26+01:00">
69
<meta name="author" content="Manuel Moos">
70
<title>Armagetron Advanced: Documentation</title>
71
<meta name="description" content="Armagetron Advanced: Documentation">
78
<table width="90%" align=center>
96
<td align=center width="15%">
97
<a href="index.html" target="_top">First Start</a>
102
<td align=center width="15%">
103
<a href="install_linux.html" target="_top"> Installation</a>
106
<td align=center width="15%">
107
<strong>Network Play</strong>
110
<td align=center width="15%">
111
<a href="config.html" target="_top">Configuration</a>
114
<td align=center width="10%">
115
<a href="faq.html" target="_top">FAQ</a>
118
<td align=center width="15%">
119
<a href="compile.html" target="_top">Redistribution</a>
131
<a name=np><a name=><h1 align=center>Network Play</h1></a></a>
134
You can play Armagetron Advanced over a LAN or the Internet. It uses the UDP
135
connectionless communication mode of the IP protocol, so make sure
136
you have TCP/IP installed and activated if you experience problems.
139
<a name=><h2 align=left>Connecting</h2></a>
141
<a name=><h3 align=left>LAN game </h3></a>
143
The fastest computer in your network should
144
act as the server. There, go to the network menu and hit the "LAN Game"-
145
menu item. After a second, Armagetron Advanced should tell you that there are no servers
146
currently available, but offer a "Host Game" item. Press Return on it. In
147
the following menu, you can select a name for your server and the game options.
148
The game options here are completely independent from those in single
150
After everything is to your liking, you can hit the "Host Network Game"
151
menu item and the game will start on the server and
152
run just as in single player mode.
156
The other computers will be the clients. On them, you activate the "LAN Game"
157
menu item, too. This time however, there should be the server you just started
158
visible in the server browser. Just hit Return on it to connect.
161
<a name=><h3 align=left>Internet game</h3></a>
164
An internet game works the same way; you just have to choose "Internet Game" instead of "LAN Game"
165
in the menu. Note that the number of users currently online on each server is displayed
166
by the server browser, too.
170
While in the server browser, you use "cursor left/right" to change the sorting
171
key, +/- to give individual servers a bias to the score (and thus their place
172
with on the list if you sort by score which is the default). Add servers to
173
your <a href="network.html#bookmarks" target=_top>bookmarks</a> with "b" and refresh all servers
177
<p align=justify>Internet server browsing would not be possible without master servers. We currently
179
one in Texas run by Lucifer, one in Virginia run by antix of
180
<a href="http://distortgaming.com" target=_top><strong>DistortGaming</strong></a>
181
(Who will gladly host your game server, Armagetronad or other. Shameless plug end.)
182
one run on Z-Man's old, trusty laptop-gone-router in Germany, and another one in Germany run
184
DNS service for swapping out masters without you having to update your configuration
185
is provided by Tank.</p>
187
<a name=><h4 align=left>Current status</h4></a>
190
Current counts show about 40 active servers.
191
If you're not picky about your fellow players, there should be
192
someone to battle against on one of those. The problems start as soon as you
193
develop a preference for certain server settings, because there are quite a
194
number of flavors around.
199
<a name=bookmarks><h3 align=left>Bookmarks</h3></a>
202
You can access and edit your server bookmarks in the "Server Bookmarks"
203
submenu of the "Network Game" menu. You can add bookmarks from the server
204
browser or manually add bookmarks via the "Edit Bookmarks" menu.
209
<a name=><h3 align=left>Version Control</h3></a>
212
Server and client do not need to be of the same version. With default settings, the current
213
server is compatible with clients down to 0.2.0, and the current client with servers down to 0.2.0.
214
Obviously, some new settings were introduced since then; if you change them away from the default,
215
three things can happen when an old client connects:</p>
217
<li>Variant 0: Nothing. The old client is allowed to connect, and the setting stays like it was.
218
It's the player's problem if something goes wrong.</li>
219
<li>Variant 1: The offending setting automatically reverts to its default value.</li>
220
<li>Variant 2: The old client is not allowed to connect. The player is already informed of that
221
in the server browser.</li>
225
You will be informed on the console when you change one of the affected settings which variant
226
will be used for it, and clients up to which version are affected.</p>
229
Settings are classified into five groups: Breaking, Bumpy, Annoying, Cheating and Visual. Settings of
230
the "Breaking" group absolutely destroy the game for old clients when they are not on their default
231
values; setting a custom map file is the perfect example. The "Bumpy" group allows basic play
232
for old clients, but it's not likely to be a pleasant experience. Examples would be <code>CYCLE_DELAY</code>
233
and <code>CYCLE_TURN_SPEED_FACTOR</code>. The "Annoying" group allows more or less pleasant gameplay
234
with only little disturbances that feel a bit like small bugs. The
235
<code>CYCLE_RUBBER_MINDISTANCE</code> setting
236
family belongs to this group. When a client does not honor settings of the "Cheating" group,
237
this is supposed to be considered cheating. An example is the <code>DOUBLEBIND_TIME</code>
239
<code>CAMERA_FORBID_</code> settings would fall into that category,
240
too (but all clients know about them). Lastly,
241
"Visual" settings only affect displayed information and have no influence on gameplay.
242
And in fact, there is a sixth group where the behavior is hardcoded to either variant 1 or 0.
245
<a name=><h4 align=left>Customizing Version Control</h4></a>
248
Which of the three behavior variants is used for settings of the five categories is
249
determined by the <code>SETTING_LEGACY_BEHAVIOR_</code> settings in <strong>settings.cfg</strong>.
250
The default settings block old clients on Breaking, Bumpy and Cheating settings
251
(Variant 2), and ignore possible conflicts for Annoying and Visual settings (Variant 0).
252
To override the group defaults, you can define exceptions for single settings; if you
253
want to revert the setting <code>FOO</code> to its default when an old client connects,
254
then you set <code>FOO_OVERRIDE</code> to 1.
258
You can also lock out old clients independently of incompatible settings;
259
use the variable <code>BACKWARD_COMPATIBILITY</code> for that. Setting it to 0 will only
260
allow the most current clients to connect. You can also disable some new features to
261
be activated by setting <code>NEW_FEATURE_DELAY</code> to some positive value.
262
If both configuration variables are set to the same value, no feature will be enabled
263
or disabled just because an old client connects/disconnects. The numbers these two settings
264
refer to are raw network protocol versions; <a href="versions.html" target=_top>see here</a> for a table
265
comparing them with release versions.
268
<a name=><h2 align=left>Interpersonals</h2></a>
269
Please behave like a human being on the game grid. Don't use offensive language
270
when asked, sometimes there are children online. Help newbies into the game. Follow
271
the rules of the server administrator or change the server you play on.
273
<a name=><h3 align=left>Chat</h3></a>
275
Send your fellow players messages by hitting the chat key configurable in the "Player Setup" menu
276
(defaults to "s"). Usually, the message will go out to all players. Servers from 0.2.8.0 on support
277
IRC style extensions: By starting your message with "/msg <playername>", you can send selected
278
players personal messages. With "/me", you can tell the others what you do; "/me falls asleep"
279
will print "Walruss walls asleep" if you're Walruss.
283
If another player annoys you, the silencing menu comes in handy: it can be reached by
284
pressing ESC, then selecting "Player Police/Silence Menu". If you're annoyed by chat in
285
general, edit <strong>settings.cfg</strong> and activate SILENCE_ALL. This has the effect that new
286
players get silenced by default and have to be unsilenced if you want to hear them.
289
<a name=><h4 align=left>Instant Chat</h4></a>
291
By default, the game lets you say some predefined things when you press F1 to F12 or 1 to
292
Backspace. Beware, the default settings for those can get you in trouble.
293
Change them in "Player Setup/Player 1 Settings/Instant Chat Setup",
294
and change the keybindings used in the player input configuration.
295
If you are already in chat mode and hit one of the instant chat keys not associated
296
with a printable character, like the F keys, the corresponding instant chat
297
will be inserted where you type. If an instant chat string ends in a backslash "\",
298
pressing the corresponding key will not send the string immediately, but will let you
299
append to it first.</p>
301
<a name=><h3 align=left>Ingame Admin</h3></a>
302
The server administrator can allow selected players to control the server settings through chat
303
commands; the setting <code>ADMIN_PASS</code> has to be modified to a nondefault value. Whoever knows
304
this value can log in by saying "/login <password>". After that, it's possible to issue regular
305
console commands by saying "/admin <command>" or to log out again with "/logout".
307
<strong>WARNING: currently, chat messages and therefore the password are sent unencrypted. This
308
means that everyone with physical access to the network flow, which is, among others, anyone
309
on the server's or the player's LAN, can steal the password.</strong>
311
<a name=><h3 align=left>Kicking and Banning</h3></a>
313
You can kick players with the <code>KICK user</code> command; it accepts either the network user ID or
314
the user name (currently the nickname, filtered so you can actually type it)
315
of the player to kick; you can get a list of both with the command <code>PLAYERS</code>. You can
316
ban them from the server with <code>BAN user</code> or <code>BAN user time</code>; the time duration is given
317
in minutes and defaults to 60 minutes if not present. The <code>user</code> argument of <code>BAN</code> is
318
interpreted exactly as with <code>KICK</code>.
321
You can get a list of currently banned IP addresses with <code>BAN_LIST</code>. To unban one of these,
322
use <code>UNBAN_IP ip</code>. To ban an IP address explicitly, use <code>BAN_IP ip</code>. Bans are persistent
323
when you shut down and restart the server; the data is stored in <strong>var/bans.txt</strong> as
324
IP/duration in seconds pairs.
326
<a name=><h4 align=left>Autobanning</h4></a>
328
When a user gets kicked often (by you or by kick votes), he will be banned automatically. It is
329
measured how often a user gets kicked per hour (KPH); this value is not persistent across
330
runs of the server. KPH can't get larger than <code>NETWORK_AUTOBAN_MAX_KPH</code>. When a user
331
gets kicked, the duration of the automatic ban in minutes is determined as
332
(KPH - <code>NETWORK_AUTOBAN_OFFSET</code>) * <code>NETWORK_AUTOBAN_FACTOR</code>; the user is not banned if this value
333
is negative. You can disable automatic banning by setting <code>NETWORK_AUTOBAN_OFFSET</code> larger than
334
<code>NETWORK_AUTOBAN_MAX_KPH</code>.
338
<a name=><h3 align=left>Voting</h3></a>
339
Sometimes, votes on important topics will be cast by players. If a vote is pending, a menu
340
will automatically pop up between rounds and remind you to vote. You can accept or reject
341
a suggestion, or explicitly say you don't care about it.
343
The only thing possible to vote on are player kicks. To start a kick vote, press ESC and enter
344
the "Player Police/Kick Menu" menu and select the player you want kicked. Prepare to get kicked
345
yourself if you abuse the system.
347
<a name=><h3 align=left>Synchronization Settings</h3></a>
349
The two <code>CYCLE_SYNC_INTERVAL_</code> settings determine the interval at which sync commands are sent
350
for cycles. <code>CYCLE_SYNC_INTERVAL_SELF</code> determines the time between syncs to the owner of
351
a cycle itself, and <code>CYCLE_SYNC_INTERVAL_ENEMY</code> determines the interval for everyone else.
354
New clients since 0.2.7.1 send the time of turn commands to the server.
355
This makes it possible to avoid grinding lag sliding
356
(you move towards a wall, grind it shortly and turn away again, and you'll slide)
357
by letting the cycle on the server turn not before the time sent by the client.
358
At the low speeds before the grind, the positional command interpretion
359
is inaccurate and will usually turn the cycle too early.
360
Now, old clients don't send the command time, so this code can't work. The lag sliding is a clear disadvantage, but the earlier turn is an advantage in some situations because it makes you cover more ground, so both the new and the old players have plenty of reason to complain if they are not treated equally. Therefore, when CYCLE_FAIR_ANTILAG is set to 1 and old clients are present, this code is deactivated.
362
When a cycle turns in free space, the server will try to follow the client's request by matching the turn position as closely as possible. Sometimes however there are large desyncs and clients sent silly turns halfway across the grid from their current position. So, for clients that send the command time, the server will execute turns only in a time window around that command time. The width of that window is determined by CYCLE_TIME_TOLERANCE.
364
I observed that old clients ( 0.2.7.0 and earlier ) would be more likely to pass through walls when they received a sync from the server shortly before. So, if you set CYCLE_AVOID_OLDCLIENT_BAD_SYNC to 1, the server will not send those syncs. Whether this helps or makes matters worse by not sending enough syncs is unknown, that's why it is a setting.
366
<a name=><h2 align=left>Technical details</h2></a>
369
You are not limited to one player per computer;
370
on each of them you can play with up to four people. In the
371
precompiled version, there is a limit of 16 clients.
372
You can set the configuration variable <code>MAX_CLIENTS</code> to limit it further.
373
If you compile your Armagetron Advanced server yourself,
374
you can increase the limit if you configure it with
376
CXXFLAGS="-DMAXCLIENTS=X" ./configure
378
where X is the number of clients you want to support.
382
If you are behind a masquerading firewall (such as a DSL router or the Microsoft connection sharing),
383
you cannot act as a server; your computer is then unreachable from the outside unless
384
you manage to forward port 4534 UDP connections from the firewall to your server.
385
Most software solutions and some standalone DSL routers offer this option, so you may be lucky.
389
The client may be behind a firewall as long as it allows outgoing UDP connections
390
on the Armagetron Advanced port.
393
<a name=dedicated><h2 align=left>The dedicated server</h2></a>
396
Following the model of Quake 1-3, there is a special binary version of
397
the game available for download (or compile it yourself giving the
398
option <strong>--disable-glout</strong> to configure) that has all input/output
399
features disabled. If you start it, it will read the normal configuration files and
400
set up a network game according to the settings in
401
the game menu (Number of AI players, game mode and finish mode).
402
A dedicated server takes input from the keyboard and interprets
403
it just the way it does with the
404
<a href="config.html#files">configuration files</a>.
405
Additionally to the usual configuration files, the dedicated server
406
will read the file <strong>everytime.cfg</strong> from the <strong>var</strong> directory
407
before each round; it may be comfortable to place quickly changing
408
settings there. You can join the game on the dedicated server just the way
409
described <a href=#np>above</a>.
413
The advantages of this solution are:
415
<li>there is no longer a "privileged" player; all players are clients
416
to the dedicated server.</li>
419
the dedicated server can use it's full computing power just to
420
manage the game; it does not have to bother about input or 3d rendering.
421
So, the game is a bit smoother for all players.
425
the dedicated server should run on any 32 Bit Windows and about any UNIX;
426
it does not need any special library installed (OpenGL, SDL, ...) , so
427
it is easy to set up public internet servers.
431
The dedicated server uses less CPU power than a client because
432
it does not have to care about graphics and sound. It can be run on an older PC.
437
<a name=><h3 align=left>Controlling network input</h3></a>
439
<p align=justify>Often, it is
440
desireable to not only specify the port Armagetron Advanced listens on, but also the IP address.
441
Examples include LAN servers that run on a machine with connection to the internet or
442
servers on a server farm where each host is shared between many users and has a multitude
443
of IP addresses. For this purpose, the <code>SERVER_IP</code> setting has been introduced. Documentation
444
with example usage is provided in <strong>settings_dedicated.cfg</strong>.
447
<a name=><h2 align=left>Ping Charity</h2></a>
450
Ping charity can be configured along with your network bandwidth and other settings
451
in the "Network Setup" submenu in the "Network Game" menu.
455
It is the configurable part of the "equal ping" technology. In short,
456
if you have low ping and your opponent has high ping (ping: the time
457
it takes a message to travel from your computer to the server and
458
back, usually measured in milliseconds), you can take over some of his
459
ping to make the situation more equal.
460
So, if you have ping 60, your
461
opponent has ping 160 and you set the ping charity to at least 50
462
(more does not change the situation), you will take over 50 ms of
463
his ping, giving you both ping 110. If you set your ping charity to
464
20, you will end up with ping 80, your opponent with ping 140. Of
465
course, you may be greedy and set ping charity to zero, but
466
I suggest leaving it at the default value 100.
470
How does that "equal ping" thing work? It is not that complicated, but
471
for now, I rather keep the secret buried in the source code (too lazy
472
to explain it right now...).
476
<a name=><h2 align=left>Spectator Mode</h2></a>
479
In the player menu, there is the "Spectator mode" toggle; If you just
480
want to watch an internet game, connect to the server with spectator
481
mode enabled. Note that you will be almost completely ignored in
482
spectator mode: the other players won't know you are there at all,
483
you can't chat and the dedicated server will not bother to start
484
a game if only spectators are online (all you are going to get is
485
a black screen). Only the server administrator will get a message
486
that a client connected.
489
Please note that this feature is unsupported; future servers may not allow
490
spectating in this way.
493
<a name=><h2 align=left>Scores</h2></a>
496
In a multiplayer game, every crucial action makes you gain or lose
499
<li>a fixed number of rounds has been played</li>
500
<li>a fixed time elapsed or</li>
501
<li>a fixed score is reached</li>
504
the team with the most points wins the match. If two or more
505
teams share the first place, the fight continues until there is
508
You can configure the score/time/rounds-limits in the file
509
<strong>settings.cfg</strong>; scores and winners are logged in the file
510
<strong>scorelog.txt</strong> on the server.
514
If you are the only person on a dedicated server, a special
515
single player game is started (its parameters are determined in
516
the <a href="config.html#sphh" target=_top>SP_* variables</a>
517
in <strong>settings.txt</strong> on the server) to keep
518
you busy until someone else connects; the highscores in
519
this mode may be published by the server administrator.
521
The highest scores collected in a single player game are collected
522
in the file <strong>highscores.txt</strong>, the people with the most won multiplayer
523
rounds/matches are stored in <strong>won_rounds.txt</strong> and <strong>won_matches.txt</strong>.
524
A ladder is stored in <strong>ladder.txt</strong>.
526
Note: these statistics have all not been adapted to team play and most of them
527
will store very odd results.
530
<a name=bb><a name=><h2 align=left>BIG BROTHER</h2></a></a>
533
As in any software downloaded for free, you can't be completely
534
sure whether Armagetron Advanced has secret functions that, for example,
535
spy on your system internals, exploit known Windows bugs to
536
get to your ISP's password, etc... and send this information
537
to the author. Of course, Armagetron Advanced does not do such a thing,
538
and you can check that in the source code.
540
But Armagetron Advanced DOES send some information out: If you connect
541
to the master server for the first time, Armagetron Advanced will send
544
<li>Your Operating system and Armagetron Advanced/SDL version</li>
545
<li>the information the OpenGL system offers, telling me which
546
graphic card you use</li>
547
<li>if you are running Armagetron Advanced fullscreen or windowed</li>
550
and nothing else, especially no personal information. I hope
551
you understand that there is a good reason to collect this information.
552
If you don't want to reveal these facts, simply edit
553
your armagetronad configuration file <strong>user.cfg</strong>
556
<code>BIG_BROTHER 1</code>
560
<code>BIG_BROTHER 0</code>
564
<a name=><h2 align=left>Internals</h2></a>
566
If you are interested in network programming yourself, you may want to
567
read the <a href=net/index.html>network subsystem documentation</a>.
574
<p align=center>This document was created by
575
<a href="http://armagetron.sf.net/contact.html" target=_top><strong>Manuel Moos</strong></a>
579
Last modification: Jul 18 2008
581
<p align=center><!--#spaceportsbanner--></p>
585
<table width="90%" align=center>
603
<td align=center width="15%">
604
<a href="index.html" target="_top">First Start</a>
609
<td align=center width="15%">
610
<a href="install_linux.html" target="_top"> Installation</a>
613
<td align=center width="15%">
614
<strong>Network Play</strong>
617
<td align=center width="15%">
618
<a href="config.html" target="_top">Configuration</a>
621
<td align=center width="10%">
622
<a href="faq.html" target="_top">FAQ</a>
625
<td align=center width="15%">
626
<a href="compile.html" target="_top">Redistribution</a>