~ivantis/armagetronad/sty+ct+ivantis

« back to all changes in this revision

Viewing changes to src/doc/network.html.m4

  • Committer: ivantis
  • Date: 2008-09-09 21:33:18 UTC
  • Revision ID: ivantis@ivantis.net-20080909213318-k43y6yuq0zd6wbsa
first commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
include(head.html.m4)
 
2
define(SECT,network)
 
3
include(navbar.html.m4)
 
4
 
 
5
define(SI,<CODE>[$1]</CODE>)
 
6
define(CI,<CODE>[$1]</CODE>)
 
7
 
 
8
<a name=np>TITLE(Network Play)</a>
 
9
 
 
10
PARAGRAPH([
 
11
You can play PROGTITLE over a LAN or the Internet. It uses the UDP 
 
12
connectionless communication mode of the IP protocol, so make sure 
 
13
you have TCP/IP installed and activated if you experience problems.
 
14
])
 
15
 
 
16
SECTION(Connecting)
 
17
 
 
18
SUBSECTION(LAN game )
 
19
PARAGRAPH([
 
20
The fastest computer in your network should
 
21
act as the server. There, go to the network menu and hit the "LAN Game"-
 
22
menu item. After a second, PROGTITLE should tell you that there are no servers
 
23
currently available, but offer a "Host Game" item. Press Return on it. In
 
24
the following menu, you can select a name for your server and the game options.
 
25
The game options here are completely independent from those in single
 
26
player mode.
 
27
After everything is to your liking, you can hit the "Host Network Game"
 
28
menu item and the game will start on the server and
 
29
run just as in single player mode.
 
30
])
 
31
 
 
32
PARAGRAPH([
 
33
The other computers will be the clients. On them, you activate the "LAN Game"
 
34
menu item, too. This time however, there should be the server you just started
 
35
visible in the server browser. Just hit Return on it to connect.
 
36
])
 
37
 
 
38
SUBSECTION(Internet game)
 
39
 
 
40
PARAGRAPH([
 
41
An internet game works the same way; you just have to choose "Internet Game" instead of "LAN Game"
 
42
in the menu. Note that the number of users currently online on each server is displayed
 
43
by the server browser, too.
 
44
])
 
45
 
 
46
PARAGRAPH([
 
47
While in the server browser, you use "cursor left/right" to change the sorting
 
48
key, +/- to give individual servers a bias to the score (and thus their place
 
49
with on the list if you sort by score which is the default). Add servers to
 
50
your LINK([network.html#bookmarks],[bookmarks]) with "b" and refresh all servers
 
51
with "r".
 
52
])
 
53
 
 
54
PARAGRAPH([Internet server browsing would not be possible without master servers. We currently
 
55
use four masters,
 
56
one in Texas run by Lucifer, one in Virginia run by antix of 
 
57
ELINK(distortgaming.com,DistortGaming)
 
58
(Who will gladly host your game server, Armagetronad or other. Shameless plug end.)
 
59
one run on Z-Man's old, trusty laptop-gone-router in Germany, and another one in Germany run
 
60
by iF.
 
61
DNS service for swapping out masters without you having to update your configuration
 
62
is provided by Tank.])
 
63
 
 
64
SUBSUBSECTION(Current status)
 
65
 
 
66
PARAGRAPH([
 
67
Current counts show about 40 active servers.
 
68
If you're not picky about your fellow players, there should be
 
69
someone to battle against on one of those. The problems start as soon as you
 
70
develop a preference for certain server settings, because there are quite a
 
71
number of flavors around.
 
72
])
 
73
 
 
74
ifelse(,,,
 
75
[
 
76
PARAGRAPH([
 
77
At the time of this writing, there are about ten dedicated servers available, so you should
 
78
not need to start your own. Most of them will let you fight against a bunch of AIs
 
79
while you wait for other players to join in.
 
80
])
 
81
 
 
82
PARAGRAPH([
 
83
Finding an opponent to play against should not be a problem these times; nevertheless,
 
84
there still is the ELINK(WEBBASE/meeting.html, meeting
 
85
page). Check it out, be online when the countdown reaches zero and
 
86
you will certainly find another player online. I'm usually playing at these times and
 
87
specially like to be on a server that allows cockpit view only.
 
88
])
 
89
])
 
90
 
 
91
SUBSECTION(Bookmarks,bookmarks)
 
92
 
 
93
PARAGRAPH([
 
94
You can access and edit your server bookmarks in the "Server Bookmarks"
 
95
submenu of the "Network Game" menu. You can add bookmarks from the server
 
96
browser or manually add bookmarks via the "Edit Bookmarks" menu.
 
97
])
 
98
 
 
99
ifelse(,,,[
 
100
SUBSECTION(Fallback)
 
101
 
 
102
PARAGRAPH([
 
103
If the server browser does not work for some reason (i.e. no master server
 
104
available), you can still connect to a server if you know its network address or
 
105
hostname and the port it runs on. The "Custom Connect" menu item in the network
 
106
game menu serves that purpose.])
 
107
])
 
108
 
 
109
SUBSECTION(Version Control)
 
110
 
 
111
PARAGRAPH([
 
112
Server and client do not need to be of the same version. With default settings, the current
 
113
server is compatible with clients down to 0.2.0, and the current client with servers down to 0.2.0.
 
114
Obviously, some new settings were introduced since then; if you change them away from the default,
 
115
three things can happen when an old client connects:])
 
116
<list>
 
117
<li>Variant 0: Nothing. The old client is allowed to connect, and the setting stays like it was.
 
118
It's the player's problem if something goes wrong.</li>
 
119
<li>Variant 1: The offending setting automatically reverts to its default value.</li>
 
120
<li>Variant 2: The old client is not allowed to connect. The player is already informed of that
 
121
in the server browser.</li>
 
122
</list>
 
123
 
 
124
PARAGRAPH([
 
125
You will be informed on the console when you change one of the affected settings which variant
 
126
will be used for it, and clients up to which version are affected.])
 
127
 
 
128
PARAGRAPH([
 
129
Settings are classified into five groups: Breaking, Bumpy, Annoying, Cheating and Visual. Settings of
 
130
the "Breaking" group absolutely destroy the game for old clients when they are not on their default
 
131
values; setting a custom map file is the perfect example. The "Bumpy" group allows basic play
 
132
for old clients, but it's not likely to be a pleasant experience. Examples would be <code>CYCLE_DELAY</code>
 
133
and <code>CYCLE_TURN_SPEED_FACTOR</code>. The "Annoying" group allows more or less pleasant gameplay 
 
134
with only little disturbances that feel a bit like small bugs. The 
 
135
<code>CYCLE_RUBBER_MINDISTANCE</code> setting
 
136
family belongs to this group. When a client does not honor settings of the "Cheating" group, 
 
137
this is supposed to be considered cheating. An example is the <code>DOUBLEBIND_TIME</code>
 
138
 setting, and the
 
139
<code>CAMERA_FORBID_</code> settings would fall into that category, 
 
140
too (but all clients know about them). Lastly,
 
141
"Visual" settings only affect displayed information and have no influence on gameplay.
 
142
And in fact, there is a sixth group where the behavior is hardcoded to either variant 1 or 0.
 
143
])
 
144
 
 
145
SUBSUBSECTION(Customizing Version Control)
 
146
 
 
147
PARAGRAPH([
 
148
Which of the three behavior variants is used for settings of the five categories is 
 
149
determined by the <code>SETTING_LEGACY_BEHAVIOR_</code> settings in FILE(settings.cfg).
 
150
The default settings block old clients on Breaking, Bumpy and Cheating settings
 
151
(Variant 2), and ignore possible conflicts for Annoying and Visual settings (Variant 0). 
 
152
To override the group defaults, you can define exceptions for single settings; if you 
 
153
want to revert the setting <code>FOO</code> to its default when an old client connects,
 
154
then you set <code>FOO_OVERRIDE</code> to 1.
 
155
])
 
156
 
 
157
PARAGRAPH([
 
158
You can also lock out old clients independently of incompatible settings;
 
159
use the variable <CODE>BACKWARD_COMPATIBILITY</CODE> for that. Setting it to 0 will only
 
160
allow the most current clients to connect. You can also disable some new features to
 
161
be activated by setting <CODE>NEW_FEATURE_DELAY</CODE> to some positive value.
 
162
If both configuration variables are set to the same value, no feature will be enabled
 
163
or disabled just because an old client connects/disconnects. The numbers these two settings
 
164
refer to are raw network protocol versions; LINK(versions.html,see here) for a table
 
165
comparing them with release versions.
 
166
])
 
167
 
 
168
SECTION(Interpersonals)
 
169
Please behave like a human being on the game grid. Don't use offensive language
 
170
when asked, sometimes there are children online. Help newbies into the game. Follow
 
171
the rules of the server administrator or change the server you play on.
 
172
 
 
173
SUBSECTION(Chat)
 
174
PARAGRAPH([
 
175
Send your fellow players messages by hitting the chat key configurable in the "Player Setup" menu
 
176
(defaults to "s"). Usually, the message will go out to all players. Servers from 0.2.8.0 on support
 
177
IRC style extensions: By starting your message with "/msg <playername>", you can send selected 
 
178
players personal messages. With "/me", you can tell the others what you do; "/me falls asleep"
 
179
will print "Walruss walls asleep" if you're Walruss.
 
180
])
 
181
 
 
182
PARAGRAPH([
 
183
If another player annoys you, the silencing menu comes in handy: it can be reached by
 
184
pressing ESC, then selecting "Player Police/Silence Menu". If you're annoyed by chat in
 
185
general, edit FILE(settings.cfg) and activate SILENCE_ALL. This has the effect that new
 
186
players get silenced by default and have to be unsilenced if you want to hear them.
 
187
])
 
188
 
 
189
SUBSUBSECTION(Instant Chat)
 
190
PARAGRAPH([
 
191
By default, the game lets you say some predefined things when you press F1 to F12 or 1 to
 
192
Backspace. Beware, the default settings for those can get you in trouble.
 
193
Change them in "Player Setup/Player 1 Settings/Instant Chat Setup",
 
194
and change the keybindings used in the player input configuration.
 
195
If you are already in chat mode and hit one of the instant chat keys not associated
 
196
with a printable character, like the F keys, the corresponding instant chat
 
197
will be inserted where you type. If an instant chat string ends in a backslash "\",
 
198
pressing the corresponding key will not send the string immediately, but will let you
 
199
append to it first.])
 
200
 
 
201
SUBSECTION(Ingame Admin)
 
202
The server administrator can allow selected players to control the server settings through chat
 
203
commands; the setting SI(ADMIN_PASS) has to be modified to a nondefault value. Whoever knows
 
204
this value can log in by saying "/login &lt;password&gt;". After that, it's possible to issue regular
 
205
console commands by saying "/admin &lt;command&gt;" or to log out again with "/logout".
 
206
<br>
 
207
<strong>WARNING: currently, chat messages and therefore the password are sent unencrypted. This
 
208
means that everyone with physical access to the network flow, which is, among others, anyone
 
209
on the server's or the player's LAN, can steal the password.</strong>
 
210
 
 
211
SUBSECTION(Kicking and Banning)
 
212
PARAGRAPH([
 
213
You can kick players with the SI(KICK user) command; it accepts either the network user ID or
 
214
the user name (currently the nickname, filtered so you can actually type it) 
 
215
of the player to kick; you can get a list of both with the command SI(PLAYERS). You can
 
216
ban them from the server with SI(BAN user) or SI(BAN user time); the time duration is given
 
217
in minutes and defaults to 60 minutes if not present. The SI(user) argument of SI(BAN) is 
 
218
interpreted exactly as with SI(KICK).
 
219
])
 
220
PARAGRAPH([
 
221
You can get a list of currently banned IP addresses with SI(BAN_LIST). To unban one of these,
 
222
use SI(UNBAN_IP ip). To ban an IP address explicitly, use SI(BAN_IP ip). Bans are persistent
 
223
when you shut down and restart the server; the data is stored in FILE(var/bans.txt) as
 
224
IP/duration in seconds pairs.
 
225
])
 
226
SUBSUBSECTION([Autobanning])
 
227
PARAGRAPH([
 
228
When a user gets kicked often (by you or by kick votes), he will be banned automatically. It is
 
229
measured how often a user gets kicked per hour (KPH); this value is not persistent across
 
230
runs of the server. KPH can't get larger than SI(NETWORK_AUTOBAN_MAX_KPH). When a user
 
231
gets kicked, the duration of the automatic ban in minutes is determined as 
 
232
(KPH - SI(NETWORK_AUTOBAN_OFFSET)) * SI(NETWORK_AUTOBAN_FACTOR); the user is not banned if this value
 
233
is negative. You can disable automatic banning by setting SI(NETWORK_AUTOBAN_OFFSET) larger than
 
234
SI(NETWORK_AUTOBAN_MAX_KPH).
 
235
])
 
236
 
 
237
 
 
238
SUBSECTION(Voting)
 
239
Sometimes, votes on important topics will be cast by players. If a vote is pending, a menu
 
240
will automatically pop up between rounds and remind you to vote. You can accept or reject
 
241
a suggestion, or explicitly say you don't care about it.
 
242
<br>
 
243
The only thing possible to vote on are player kicks. To start a kick vote, press ESC and enter
 
244
the "Player Police/Kick Menu" menu and select the player you want kicked. Prepare to get kicked
 
245
yourself if you abuse the system.
 
246
 
 
247
SUBSECTION([Synchronization Settings])
 
248
PARAGRAPH([
 
249
The two CI(CYCLE_SYNC_INTERVAL_) settings determine the interval at which sync commands are sent
 
250
for cycles. CI(CYCLE_SYNC_INTERVAL_SELF) determines the time between syncs to the owner of
 
251
a cycle itself, and CI(CYCLE_SYNC_INTERVAL_ENEMY) determines the interval for everyone else.
 
252
])
 
253
 
 
254
New clients since 0.2.7.1 send the time of turn commands to the server. 
 
255
This makes it possible to avoid grinding lag sliding
 
256
(you move towards a wall, grind it shortly and turn away again, and you'll slide)
 
257
by letting the cycle on the server turn not before the time sent by the client.
 
258
At the low speeds before the grind, the positional command interpretion 
 
259
is inaccurate and will usually turn the cycle too early. 
 
260
 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. 
 
261
 
 
262
 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. 
 
263
 
 
264
 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. 
 
265
 
 
266
SECTION(Technical details)
 
267
 
 
268
PARAGRAPH([
 
269
You are not limited to one player per computer;
 
270
on each of them you can play with up to four people. In the
 
271
precompiled version, there is a limit of 16 clients.
 
272
You can set the configuration variable <CODE>MAX_CLIENTS</CODE> to limit it further.
 
273
If you compile your PROGTITLE server yourself, 
 
274
you can increase the limit if you configure it with
 
275
<pre>
 
276
CXXFLAGS="-DMAXCLIENTS=X" ./configure
 
277
</pre>
 
278
where X is the number of clients you want to support.
 
279
])
 
280
 
 
281
PARAGRAPH([
 
282
If you are behind a masquerading firewall (such as a DSL router or the Microsoft connection sharing),
 
283
you cannot act as a server; your computer is then unreachable from the outside unless
 
284
you manage to forward port 4534 UDP connections from the firewall to your server.
 
285
Most software solutions and some standalone DSL routers offer this option, so you may be lucky.
 
286
])
 
287
 
 
288
PARAGRAPH([
 
289
The client may be behind a firewall as long as it allows outgoing UDP connections
 
290
on the PROGTITLE port.
 
291
])
 
292
 
 
293
SECTION(The dedicated server,dedicated)
 
294
 
 
295
PARAGRAPH([
 
296
Following the model of Quake 1-3, there is a special binary version of
 
297
the game available for download (or compile it yourself giving the
 
298
option OPTION(--disable-glout) to configure) that has all input/output
 
299
features disabled. If you start it, it will read the normal configuration files and
 
300
set up a network game according to the settings in
 
301
the game menu (Number of AI players, game mode and finish mode).
 
302
A dedicated server takes input from the keyboard and interprets
 
303
it just the way it does with the 
 
304
<a href="config.html#files">configuration files</a>.
 
305
Additionally to the usual configuration files, the dedicated server
 
306
will read the file FILE(everytime.cfg) from the FILE(var) directory
 
307
 before each round; it may be comfortable to place quickly changing 
 
308
settings there. You can join the game on the dedicated server just the way
 
309
described <a href=#np>above</a>.
 
310
])
 
311
 
 
312
PARAGRAPH([
 
313
The advantages of this solution are:
 
314
<ul>
 
315
<li>there is no longer a "privileged" player; all players are clients
 
316
to the dedicated server.</li>
 
317
 
 
318
<li>
 
319
the dedicated server can use it's full computing power just to
 
320
manage the game; it does not have to bother about input or 3d rendering.
 
321
So, the game is a bit smoother for all players.
 
322
</li>
 
323
 
 
324
<li>
 
325
the dedicated server should run on any 32 Bit Windows and about any UNIX; 
 
326
it does not need any special library installed (OpenGL, SDL, ...) , so 
 
327
it is easy to set up public internet servers.
 
328
</li>
 
329
 
 
330
<li>
 
331
The dedicated server uses less CPU power than a client because
 
332
it does not have to care about graphics and sound. It can be run on an older PC.
 
333
</li>
 
334
</ul>
 
335
])
 
336
 
 
337
SUBSECTION(Controlling network input)
 
338
 
 
339
PARAGRAPH([Often, it is
 
340
desireable to not only specify the port PROGTITLE listens on, but also the IP address.
 
341
Examples [include] LAN servers that run on a machine with connection to the internet or
 
342
servers on a server farm where each host is shared between many users and has a multitude
 
343
of IP addresses. For this purpose, the SI(SERVER_IP) setting has been introduced. Documentation
 
344
with example usage is provided in FILE(settings_dedicated.cfg).
 
345
])
 
346
 
 
347
SECTION(Ping Charity)
 
348
 
 
349
PARAGRAPH([
 
350
Ping charity can be configured along with your network bandwidth and other settings
 
351
in the "Network Setup" submenu in the "Network Game" menu.
 
352
])
 
353
 
 
354
PARAGRAPH([
 
355
It is the configurable part of the "equal ping" technology. In short,
 
356
if you have low ping and your opponent has high ping (ping: the time
 
357
it takes a message to travel from your computer to the server and
 
358
back, usually measured in milliseconds), you can take over some of his 
 
359
ping to make the situation more equal.
 
360
So, if you have ping 60, your 
 
361
opponent has ping 160 and you set the ping charity to at least 50
 
362
(more does not change the situation), you  will take over 50 ms of 
 
363
his ping, giving you both ping 110. If you set your ping charity to
 
364
20,  you will end up with ping 80, your opponent with ping 140. Of
 
365
course,  you may be greedy and set ping charity to zero, but
 
366
I suggest leaving it at the default value 100.
 
367
])
 
368
 
 
369
PARAGRAPH([
 
370
How does that "equal ping" thing work? It is not that complicated, but
 
371
for now, I rather keep the secret buried in the source code (too lazy
 
372
to explain it right now...).
 
373
])
 
374
 
 
375
 
 
376
SECTION(Spectator Mode)
 
377
 
 
378
PARAGRAPH([
 
379
In the player menu, there is the "Spectator mode" toggle; If you just
 
380
want to watch an internet game, connect to the server with spectator
 
381
mode enabled. Note that you will be almost completely ignored in
 
382
spectator mode: the other players won't know you are there at all,
 
383
you can't chat and the dedicated server will not bother to start
 
384
a game if only spectators are online (all you are going to get is
 
385
a black screen). Only the server administrator will get a message 
 
386
that a client connected.
 
387
])
 
388
PARAGRAPH([
 
389
Please note that this feature is unsupported; future servers may not allow
 
390
spectating in this way.
 
391
])
 
392
 
 
393
SECTION(Scores)
 
394
 
 
395
PARAGRAPH([
 
396
In a multiplayer game, every crucial action makes you gain or lose
 
397
points; after
 
398
<ul>
 
399
<li>a fixed number of rounds has been played</li>
 
400
<li>a fixed time elapsed or</li>
 
401
<li>a fixed score is reached</li>
 
402
</ul>
 
403
 
 
404
the team with the most points wins the match. If two or more
 
405
teams share the first place, the fight continues until there is
 
406
a unique winner. 
 
407
<br>
 
408
You can configure the score/time/rounds-limits in the file 
 
409
FILE(settings.cfg); scores and winners are logged in the file 
 
410
FILE(scorelog.txt) on the server.
 
411
])
 
412
 
 
413
PARAGRAPH([
 
414
If you are the only person on a dedicated server, a special
 
415
single player game is started (its parameters are determined in
 
416
the LINK([config.html#sphh],[SP_* variables])
 
417
 in FILE(settings.txt) on the server) to keep
 
418
you busy until someone else connects; the highscores in
 
419
this mode may be published by the server administrator.
 
420
<br>
 
421
The highest scores collected in a single player game are collected
 
422
in the file FILE(highscores.txt), the people with the most won multiplayer
 
423
rounds/matches are stored in FILE(won_rounds.txt) and FILE(won_matches.txt).
 
424
A ladder is stored in FILE(ladder.txt).
 
425
<br>
 
426
Note: these statistics have all not been adapted to team play and most of them
 
427
will store very odd results.
 
428
])
 
429
 
 
430
<a name=bb>SECTION(BIG BROTHER)</a>
 
431
 
 
432
PARAGRAPH([
 
433
As in any software downloaded for free, you can't be completely
 
434
sure whether PROGTITLE has secret functions that, for example,
 
435
spy on your system internals, exploit known Windows bugs to
 
436
get to your ISP's password, etc... and send this information
 
437
to the author. Of course, PROGTITLE does not do such a thing,
 
438
and you can check that in the source code.
 
439
<br>
 
440
But PROGTITLE DOES send some information out: If you connect
 
441
to the master server for the first time, PROGTITLE will send
 
442
<br>
 
443
<ul>
 
444
<li>Your Operating system and PROGTITLE/SDL version</li>
 
445
<li>the information the OpenGL system offers, telling me which
 
446
graphic card you use</li>
 
447
<li>if you are running PROGTITLE fullscreen or windowed</li>
 
448
</ul>
 
449
 
 
450
and nothing else, especially no personal information. I hope
 
451
you understand that there is a good reason to collect this information.
 
452
If you don't want to reveal these facts, simply edit
 
453
your PROGNAME configuration file FILE(user.cfg)
 
454
and change
 
455
<br>
 
456
<CODE>BIG_BROTHER 1</CODE>
 
457
<br>
 
458
to
 
459
<br>
 
460
<CODE>BIG_BROTHER 0</CODE>
 
461
<br>
 
462
])
 
463
 
 
464
SECTION(Internals)
 
465
PARAGRAPH([
 
466
If you are interested in network programming yourself, you may want to
 
467
read the <a href=net/index.html>network subsystem documentation</a>.
 
468
])
 
469
 
 
470
include(sig.m4)
 
471
include(navbar.html.m4)
 
472
</body>
 
473
</html>
 
474