Initial revision
[tetrinet.git] / README
blobbd16043c088c222062b0e08b7ae14ca67fda5655
1                             Tetrinet for Linux
2                             ------------------
3                   by Andrew Church <achurch@achurch.org>
5                                Version 0.10
8 For general information on Tetrinet, consult the file tetrinet.txt (the
9 text file distributed with the original Windows version).
11 The following notes apply to the Linux version of Tetrinet:
14 Distribution/license information
15 --------------------------------
16 This program is public domain, and may be modified and distributed without
17 limitation.
20 Compatibility
21 -------------
22 This client does not support "channels".
25 Requirements
26 ------------
27 You must be using a 50-line text display to run this version of Tetrinet;
28 Xwindows is not yet supported.  One option is to open an xterm window in
29 Xwindows and resize it to be 50 lines high.  The other option (recommended)
30 is to use a 50-line text console.
32 To get a 50-line text console, if you use LILO to boot, add the following
33 line to the top of your /etc/lilo.conf file:
35 vga = extended
37 run /sbin/lilo, and reboot.  If you use a boot disk without LILO, insert it
38 into your floppy drive, give the following command:
40 rdev -v /dev/fd0 -2
42 and reboot.
44 Another option is to use the SVGATextMode program, available on Sunsite
45 ({http,ftp}://sunsite.unc.edu/pub/Linux/) and other places, to switch your
46 console to 50-line mode without rebooting.  You may also use that program
47 to set up a larger display (for example, I use 100x60); Tetrinet will
48 detect this and rearrange the display to make the best use of the available
49 space.
51 NOTE: Xwindows graphics display really isn't supported, despite the
52 presence of the "xwin.c" file!  Don't be fooled!  (The file is there to
53 remind me to implement Xwindows support someday.  Note how well it's
54 working.)
57 Compilation
58 -----------
59 Type "make".  This will generate two programs: "tetrinet" and
60 "tetrinet-server".  The former is the main program; the latter is a
61 standalone server.
64 Starting the client
65 -------------------
66 Tetrinet requires two command-line arguments: your nickname and the server
67 to connect to, in that order.  For example:
69         tetrinet MyNick tetrinet.somerandom.net
71 Tetrinet will function only as long as it remains connected to the server;
72 there is no "Client Settings" option as in the Windows version.  This may
73 be remedied in a future version.
75 You can also give Tetrinet any of the following options:
77         -fancy       Use "fancy" TTY graphics.  (Note that this will slow
78                      down redraws somewhat.)
80         -log <file>  Log network traffic to the given file.  All lines
81                      start with an absolute time (seconds) in brackets.
82                      Lines sent from the client to the server are prefixed
83                      with ">>>", and lines from the server to the client
84                      are prefixed with "<<<".  This could be used with a
85                      utility program to replay a game later on (though such
86                      a program is not currently included in the Tetrinet
87                      distribution.)
89         -noslide     Do not allow pieces to "slide" after being dropped
90                      with the spacebar.  (Normally, there is a short time
91                      after pressing the spacebar during which a piece can
92                      "slide" left or right before it solidifies.)
94         -server      Start the server instead of the client.  (See
95                      "Starting the server".)
97         -slide       Opposite of -noslide; allows pieces to "slide" after
98                      being dropped.  If both -slide and -noslide are given,
99                      -slide takes precedence.  If both -windows and -slide
100                      are given, this overrides the "no sliding" part of
101                      -windows without affecting the other changes in
102                      program behavior.
104         -windows     Behave as much like the Windows version of Tetrinet as
105                      possible.  (See "Differences from Windows Tetrinet".)
106                      Implies -noslide.
109 Starting the server
110 -------------------
111 There are two ways to start the Tetrinet server.  One way is to give the
112 "-server" option to the Tetrinet program:
114         tetrinet -server
116 The other is to run the "tetrinet-server" program.  Both of these are
117 exactly equivalent.  The server can be stopped with ^C or a "kill" command.
119 If you want the server to run in the background, use an "&" after the
120 command, for example:
122         tetrinet -server &
125 Configuring the server
126 ----------------------
127 The server is configured via the ".tetrinet" file in your home directory.
128 This contains all the settings for the server in a simple format.  The
129 following is a sample .tetrinet file:
131         winlist Alcan;0;3;1 AndrewK;0;2;1
132         classic 1
133         initiallevel 1
134         linesperlevel 2
135         levelinc 1
136         averagelevels 1
137         speciallines 1
138         specialcount 1
139         specialcapacity 18
140         pieces 14 14 15 14 14 14 15
141         specials 18 18 3 12 0 16 3 12 18
142         linuxmode 0
143         ipv6_only 0
145 Note that this file is automatically re-written at the end of a game or
146 when the server is terminated.  If you want to modify parameters for a
147 running server, send the server a HUP signal, using the command:
149         kill -HUP <pid-of-server>
151 where <pid-of-server> is the process ID of the server.  A simpler
152 alternative is:
154         killall -HUP tetrinet-server
156 Three of the configuration lines require special explanation.  The winlist
157 line is, as its name suggests, the winlist for the server; each parameter
158 contains four semicolon-separated fields:
159         name ; team ; points ; games
160 "team" is a flag which is either 1 if the entry is for a team or 0 if the
161 entry is for a player.  "points" is just the number of points for the
162 player (see the main Tetrinet documentation); "games" is the number of
163 games in which that player has participated since getting on the winlist.
165 The pieces line contains percentage frequencies for each type of piece.
166 The order is: bar, square, reverse-L (green), L (purple), Z (red),
167 S (blue), and T.
169 The specials line, likewise, contains percentage frequencies for each type
170 of special.  The order is:  A, C, N, R, S, B, G, Q, O.
172 The "linuxmode" setting selects whether the client should try to remain
173 compatible with Windows clients.  This only affects the winlist display; if
174 linuxmode is set to 1, the server will send the number of games played by
175 each player as well as points won.  This is set to zero by default.
177 If the "ipv6_only" setting is set to a nonzero value, the server will only
178 listen for IPv6 connections; if zero (default), the server will listen on
179 both IPv4 and IPv6 if possible.
182 Keys
183 ----
184 The display mode can be selected by one of the following keys:
186         F1          Show Fields
187         F2          Partyline
188         F3          Winlist
190 F10 can be used to quit at any time.
192 In Partyline mode, the following commands are available.  To use a command,
193 simply type the command and arguments into the Partyline input buffer and
194 press Return (just like IRC).
196         /team [name]  Set your team name.  If a name is not given, play
197                           alone.
198         /start        Start a game (if you are the first player on the
199                           server).
200         /stop, /end   Stop the game currently in progress (either command
201                           may be used).
202         /pause        Pause the game.
203         /unpause      Unpause the game.
204         /             Quote a following slash, for example:
205                           "/ /start starts a game."
207 The following keys are used for controls on the "Show Fields" screen:
209         Up, X       Rotate piece clockwise
210         Z           Rotate piece counterclockwise
211         Left        Move piece left
212         Right       Move piece right
213         Down        Accelerate piece downward
214         Space       Drop piece (note that by default, pieces can still
215                         "slide" after dropping!)
216         D           Discard the current (leftmost) special item
217         1..6        Use the current special item on the given player
218         T           Open a window for sending a message to other players
219         Ctrl-G      Close the text input window (text there is saved for
220                         the next time you press T)
222 The following keys are used for editing text, both in the Partyline screen
223 and in the text buffer on the Show Fields screen:
225         Left        Move cursor left one space
226         Right       Move cursor right one space
227         Ctrl-A      Move cursor to beginning of line
228         Ctrl-E      Move cursor to end of line
229         Backspace,  Delete character to left of cursor
230           Delete
231         Ctrl-D      Delete character under cursor
232         Ctrl-U      Delete entire line
233         Enter       Send text (closes input window in Show Fields mode)
236 Differences from Windows Tetrinet
237 ---------------------------------
238 Although Linux Tetrinet is designed to play more or less the same as the
239 original Windows version, there are a few differences; some of these are
240 simply "missing" features in the Linux version, and some are features I
241 have introduced into the Linux version because I believe they make the game
242 more interesting or fun.  Features marked with (*) below can all be
243 disabled with the -windows command-line option to make playing against
244 Windows opponents fairer.
246   - Messages about specials (i.e. in the Attack/Defense window) are not
247     numbered.
249   - If a Block Bomb is done on someone who has two "o" (bomb) specials
250     right next to each other, one of them will be sent flying rather than
251     exploding.  (This is a bug.)
253   - Blocks scattered by a Block Bomb will only go to empty spaces on the
254     board, rather than appearing on top of already-existing blocks.
255     "Holes" will not be scattered. (*)
257   - Pieces may go over the top of the board.  In the Windows version, a
258     player loses if at any time any square goes off the top of the board.
259     In this version, a player only loses if there is no room for the next
260     piece to enter the board.
262   - Pieces dropped (with the spacebar) can still slide left and right after
263     dropping.  Idea from Mark H. Weaver's Netris. (*)  This feature alone
264     can be disabled with the -noslide command-line option.  It can also be
265     enabled with -slide even if other Linux-specific features are disabled
266     with the -windows option.
268   - Blockquakes will cause blocks to wrap around the edge of the screen
269     rather than disappearing off the edge. (*)
271   - Blockquakes will never move rows more than one block to the left or
272     right.  (Can anyone determine how quakes work in the Windows version?)
274   - Specials collected will always appear at the end of the specials bar
275     (in the Windows version, they randomly appear at the beginning or the
276     end). (*)
279 Acknowledgements
280 ----------------
281 Tetrinet was originally written by St0rmCat, who has asked not to be
282 contacted with respect to Tetrinet.