ChangeLog update
[tetrinet.git] / tetrinet.txt
1 TetriNET v1.13 PUBLIC
2 By:      St0rmCat (If he's not in #tetrinet, he's the wrong St0rmCat)
3 E-mail:
4 Channel: EFNET: #TetriNET - Come join us to get some
5          active servers, advertise your server, find
6          out more about TetriNET, or just chat!!
8 Gee, Tetris?  Whats that?  Yeah, yeah, so it's been
9 done 2 billion times before (give or take a few bil),
10 but this is different!  Yes, all you tetris addicts
11 out there be prepared for even MORE excitement..
12 internet tetris!  Now you can play your five best
13 buddies in one of the most well known games in
14 existence!
16 TetriNET is for Windows95/NT machines and WILL NOT RUN
17 WITH WIN32S.  TetriNET operates best on a display
18 capable of 256 colors or more.  If your screen resolution
19 is 640x480, you may have to set your windows taskbar to
20 auto-hide while playing to see both windows entirely.
29 Concept          - Game explanation
30 Inventory        - Explanation of inventory feature (READ!!)
31 Win list         - How the game keeps score
32 Partyline        - Explanation and features
33 Moderators       - What moderators are for
34 Server           - What is and how to set up a SERVER
35 Client           - What a client is
36 Teams            - Explanation of teams
37 Modifying        - How to modify TetriNET
38 Acknowledgements - People who helped alot in the making of TetriNET
39 VERSIONS         - Whats been changed throughout the versions
42 Concept:
44 According to how the server has modified the settings,
45 occasionally a sphere block with a letter will appear in
46 your playing field.  When you make one or more lines with
47 any of the lines containing one or more of these special
48 blocks, the special blocks in the lines will be added
49 to your inventory which is located near the bottom of the
50 window.  These special blocks do different things to players.
51 Each effect for the special blocks will be explained below.
52 The more lines you clear at the same time and the more
53 special blocks that are in those lines will put more
54 special blocks in your inventory.  A player loses when
55 his/her blockstack reaches the top of the field.  The Winner
56 is the player left after the other players have lost.
58 Again, Depending on how the server has modified settings,
59 you will gain a level (or more) everytime you clear
60 out a certain amount of lines.  When you gain levels,
61 the fall speed of the blocks coming down will increase
62 making it harder to find a decent place for the
63 blocks.  The maximum level you can be at is 100.
66 Inventory:  (READ!!!)
68 As said above, special blocks are added to your inventory
69 when you clear lines with special blocks in them.  You
70 are only able to use the special block inside the red
71 box.  The red box cannot be moved or the game would be
72 incredibly easy.  The description of what the special block
73 does to a player is located to the left of the inventory.
74 To use the current special block, press the player number of
75 the player you want to attack.  If the special block is a
76 GOOD block, use it on yourself by pressing your player
77 number.
79 Here is a list of all the special blocks:
81 *  'A' Block:  This is the add line block.  It will add
82                a "junk line" to the players field that
83                you choose.
84 $  'C' Block:  This is the clear line block.  It clears
85                the line farthest to the bottom in the
86                playing field.
87 $  'N' Block:  This removes all blocks from a playing
88                field giving the player a "fresh start".
89 *  'R' Block:  This removes 10 random blocks from
90                a player's field.
91 *  'S' Block:  This switches your playing field with
92                another player's field depending on which
93                player number you pressed.  If either of
94                the fields' block stack is over 16 blocks
95                high, the stack will be lowered.
96 *  'B' Block:  This removes all special blocks from
97                a players field.
98 $  'G' Block:  This "gravity" block takes all the blocks
99                on the field and "pulls" them all towards
100                the bottom of the field eliminating any
101                gaps in the blockstack.
102 *  'Q' Block:  This causes each of the lines of blocks
103                on a players field to randomly shift left
104                or right or not at all.
105 *  'O' Block:  This is the block bomb, when used on a
106                player, it clears 3x3 portions on their
107                field anywhere there are 'o' blocks.
108                Any blocks that were in the 3x3 areas
109                are scattered around the field.
111 IMPORTANT:   Blocks with a '*' at the beginning of the line
112              are ATTACK special blocks; use these on
113              other players.
115              Blocks with a '$' at the beginning are DEFENSE
116              blocks and should be used on yourself because
117              they are GOOD
119 You can also press the letter 'D' and it will discard
120 the first block in your inventory.
122 When your inventory becomes full, any special blocks
123 you get cannot go into your inventory.  You
124 will have to use up some of your inventory blocks.
127 Win list:
129 The win list keeps track of how points each person
130 or team has.  The person or team with the most points
131 is at the top.  A player or team gets 3 points
132 when they are the last standing in a game.  2 points
133 to the player/team that is the last person to lose
134 and 1 point to the 2nd to last loser.
136 When a team wins, their team name is put in the
137 win list along with a <T> infront of it to show
138 everyone that it's a team and not a person.
140 The win list on each of the player's clients are
141 the same. The server can reset the win list at any
142 time by pressing the 'Reset Winlist' button on the
143 Server screen.
146 Partyline Screen:
148 This is where the players connected to the server can
149 talk among each other.  You can do bold/underline/italic
150 by surrounding the text you want affected with characters
151 made from pressing ctl-b/u/i respectively.  You
152 can also do actions on the partyline by typing:
153 /ME <message>
155 Next to the partyline box is a list of all the players
156 currently connected to the server.  The server can kick
157 a player out by selecting his/her name in the nicklist
158 and pressing the KICK button.  The server can also
159 ban someone from the server completely by selecting
160 their nickname and pressing Ban.  For the ban to take
161 effect, you must kick them.  Also, when you click
162 on the player's nickname in the list, (only if you're
163 a server) their IP will be shown above the box.
165 To change the font of the main partyline box, press
166 the right mouse button in the window and then click
167 on the 'Change Font...' menu item.
169 You can also easily talk while the game is going by
170 pressing 'T' while on the Playing Fields window and
171 then entering your message.  After you press return
172 the message will be broadcasted to the rest of the
173 players and will be shown in the black box near the
174 bottom.  You can press ESCAPE while putting text
175 in the edit box and it will hide the edit box. When
176 you press 'T', you can start typing again.
179 Moderators:
181 A moderator is the first person on a server whether
182 it is the person that is actually operating the
183 server, or if the server isn't playing, the first
184 player that connects to the server.  A moderator
185 person has a '*' next to their nickname in the nickname
186 list on the partyline screen.  A moderator can
187 start/stop/pause/unpause games on a server.
190 Server:
192 To play, you must have someone be the TetriNET server.
193 The server should be fast so the game isn't too lagged.
194 A 28.8 modem is great for a fun TetriNET game.
195 The server can set all of the settings available for
196 the game, and decides when the game starts, etc.
197 Fill in your Nickname into the correct edit box and any
198 options under that.
200 When you press the Block Occurancy button on the server
201 screen, a window will pop up.  On this window you
202 can set how often the different pieces and special blocks
203 appear (or not at all) throughout the game.  You enter in the
204 percentage for each piece/block.  100 means the piece/block
205 will appear every single time; 0 means it wont appear at all.
206 Note:  All the percents of the pieces and special blocks
207 must add up to be 100 percent before you can play.
209 The ban box on the server screen is where you can put
210 IPs of people you dont want on your TetriNET server.
211 To ban a person, place only their IP ADDRESS on its
212 own line in the ban box.  You can use wildcards like
213 '*' and '?'  Besides NOT allowing someone on the
214 server, you can also ALLOW certain people on it with
215 the '!' prefix before a person's IP.  When you prefix
216 an IP with '!' in the ban box, this overrides any other
217 bans in the box and lets the person with this IP join.
218 If you put '*' as the first line in the box (it bans
219 EVERYONE), and then put '!' on a line
220 after that, the person with that IP would be allowed
221 in but noone else would be.
223 When done, press the Start Server button.  Now players
224 can connect to your IP.  When a player connects, a join
225 message will be shown in the partyline box.  When a message
226 is added to the partyline box and you are currently
227 on another screen, the partyline button text will turn
228 green to notify you.  When everyone is ready to play,
229 click on the Start New Game button.
231 Originally, the levels of each player are individual
232 and when a player's level increases, only THEIR
233 level increases.  The 'All Have Players' Averaged
234 Levels' option will make all players have the same
235 level throughout the game.  When a player's REAL
236 level increases, it is averaged in with the rest
237 of the players' levels and that is the ACTIVE level
238 of everyone on the server.
240 The server also has the option to play or not to.
241 Enabling the 'Server Play' checkbox on the server
242 screen will put yourself in the game as player 1.
243 If there was any player on as player 1, they are
244 kicked out.  Unchecking this box will take you
245 off and you will not play.
247 To speed up a game of TetriNET, there is an option
248 on the server screen for after a certain amount of
249 minutes playing, the game will start adding lines
250 to all players every certain amount of seconds.  This
251 is useful to keep players on your server if they lose
252 early and get bored.
254 Another option is the Classic Multiplayer Rules.  This
255 makes the game play like the old 2 player gameboy
256 version of tetris.  When a player clears lines, lines
257 are added to everyone else's field.  If you clear 1 line,
258 no lines are added to everyone else.  If you clear 2 lines,
259 1 line is added to everyone else.  If you clear 3, 2 is
260 added.  If you clear 4, 4 lines are added to everyone.
261 NOTE:  This option is best when you set the 'Special
262   Blocks Added at a Time' option to '0'.
265 Client:
267 A client is just a person playing that is not the server.
268 A client connects to a server.  Find the IP of a server with
269 people you want to play with and put that in to the
270 correct edit box.  Then put your nickname in the
271 Nickname box and press the Connect button.  You should
272 then see the nicknames playing pop up in the partyline
273 window and any teams the players are on.
275 When the game has started, click on the Show Fields
276 button and a window with all 6 fields will be shown.
277 The fields will be updated every time a player's block
278 is placed onto their field to keep everyone updated
279 on who's winning.
282 Teams:
284 Teams are now possible in TetriNET.  You can now have
285 matches with 3 teams of 2 people or whatever you want!
286 To be on a team, just fill out the Team edit box
287 with the team you would like to be on, if on a server
288 click the button right next to the box to update your
289 team name.  The team name is not case-sensitive.
291 When you are on a team, if one of the players that is
292 on your team wins a TetriNET game, you win too and
293 your team name is placed in the Win List instead of
294 your individual names.
297 Modifying TetriNET:
299 Themes are handled by a "project file" to tell
300 TetriNET where it should find all the theme
301 components.  It is just an INI file.  When
302 you create a theme, copy over the default.tnp
303 file to a new file that represents your theme and
304 make a new directory in your TetriNET directory
305 where all your theme stuff will be.  Any files you
306 want different or modified, just put them in your
307 theme directory and put the paths for the new files
308 in your project file.
310 If you want to make a theme pack with like only the
311 graphics changed but you want it to have same sounds
312 and music, only change the graphics releated lines
313 in your theme project file and leave the rest of
314 the lines pointing to the default DATA\ directory.
317 Explanations of Graphics/Music/Sounds:
319 When you create a new graphics file, the file MUST
320 have the same image dimensions and have the same block
321 layout of the one included with the original tetrinet
322 ZIP file.  Here is a description of the layout:
324 - The top row of blocks are the blocks for the big
325   field in TetriNET.  They are 16 pixels wide and
326   16 pixels high.  There should be 14 blocks in the row.
327 - The row under that are the same blocks as the
328   normal 16 pixel blocks, but are half as wide.
329   These smaller blocks are for the 5 other fields
330   on the TetriNET field.  They are 8 pixels across
331   and 8 pixels high.
332   *  The Upper-left coordinates of the first block in
333      this row are at (0,16)
334 - The picture under this is the background image
335   for the large field in TetriNET.  It is 192
336   pixels wide and 352 pixels high.
337   *  The Upper-left coordinates of this image is
338      (0,24)
339 - The picture to the right is the miniture version
340   of the main background image.  It is used as the
341   background for the smaller fields in TetriNET.
342   It is 96 pixels wide and 176 pixels high.
343   *  The Upper-left coordinates of this image is
344      (352,24)
346 Your new graphic file does NOT have to have the same palette
347 as the one included in the TetriNET zip.  If you use
348 Photoshop, work in RGB mode while modifying the file.
349 When you're done, convert it back to 256 colors to
350 make sure the colors look as good as possible.
352 You can also leave the BMP in 16million colors mode
353 if you have a monitor capable of that.  If you are going
354 to distribute your theme, it is best to convert it to
355 256 colors because many don't have systems capable
356 of high color mode.
358 The sound descriptions are listed in default.tnp file.
359 Modify any of the sounds you want, but make sure you
360 modify the project file if you changed any of the WAV
361 filenames. You can also include a MIDI file inside the
362 theme package.
364 Any sound/graphic themes created can be distributed
365 freely.
367 You can also modify the keys.  Click on the Misc. Settings
368 button.  Click in any of the boxes and press a key and
369 the text in the edit box will change to the key that you
370 pressed.
373 Acknowledgements:
375 Darktick for all his ideas and help with graphics
376 coding on TetriNET.
378 myname, [bart], and Galardo because they kept playing
379 and playing as betas went by - also for all the bugs
380 they found and suggestions they gave.
382 Knowledge, ReT, and the #square crew for beta testing,
383 holding the #TetriNET channel, and giving suggestions.
385 Also, netmonk, ATA, and phib for all of the above :)
387 The many other people I know ;) for their support and
388 testing they've done for me.
393   New in 1.13 PUBLIC:
394   1.  Fixed teams of other players not being shown
395       to people sometimes
396   2.  Fixed win list from counting people that come
397       in during a game as a person that lost
399   New in 1.12 PUBLIC:
400   1.  Fixed server not allowing clients to connect in
401       many conditions
402   2.  Added team switching while connected to a server
403   3.  Fixed not saving key settings
404   4.  Code for receiving text from winsock is smaller
405   5.  Any lines transfered with classic style rules to
406       the server and the server isn't playing, they
407       are ignored.
408   6.  Fixed it from adding lines to other team members
409       in classic rules
411   New in 1.11 PUBLIC:
412   1.  Fixed people not being able to start working servers
413       or not being able to connect to servers.
415   New in 1.1 PUBLIC:
416   1.  While playing a game with classic multiplayer rules
417       turned on, anyone on your team wont be affected if
418       you add lines to everyone else.
419   2.  Fixed minor display quirks
420   3.  If system doesn't support MIDI, it won't crash
421   4.  Fixed a player double losing
422   5.  Fixed out of memory error
423   6.  Fixed player being added to win list when player isnt
424       on server
425   7.  RELEASE!
427   New in 1.1f BETA:
428   1.  Fixed EConvert errors (right? :))
429   2.  Fixed displaying of teams on the playing fields
431   New in 1.1e BETA:
432   1.  Tabbing between edit boxes/checkboxes/etc on the
433       windows is now in order
434   2.  Fixed win list from making doubles of winners
435   3.  Playing fields window is now hidden when a game
436       ends
437   4.  Fixed background/blocks not appearing sometimes
438       when setting focus to the playing fields window
439   5.  Fixed game from saying you gave other people
440       lines when you only made one line. (with classic
441       multiplayer rules turned on)
442   6.  Fixed 'o' blocks sometimes not "blowing up"
443       when attacked with Block Bomb
444   7.  Sounds 3.WAV and 6.WAV's description were switched
445       around in the docs
447   New in 1.1d BETA:
448   1.  Fixed font in main chatbox not changing on start.
449   2.  Fixed blinking when a message arrives
450   3.  Fixed bug in win list routines
451   4.  Fixed bug where if a person lost, server always
452       won
453   5.  Fixed random EConvertError crashes
455   New in 1.1c BETA:
456   1.  Made the classic multiplayer rules like gameboy now :)
457   2.  Fixed partyline not scrolling
458   3.  Ingame chat box should show all 3 lines on all types
459       of systems
460   4.  Added ability for multiple themes.. it uses a project
461       file that points to the graphics,sounds, and music files
462   5.  Server can change its nickname and team its on if
463       the Server Playing checkbox is unchecked
464   6.  Fixed server not losing when the Server Playing is
465       checked while a game is in progress
466   7.  Now puts a <T> before any team in the win list.
467   8.  Changed the way Block Bomb works
469   New in 1.1b BETA:
470   1.  Fixed bug in text recieving
471   2.  Fixed other minor bugs
473   New in 1.1a BETA:
474   1.  Fixed the scrolling on the attacks/defenses
475       box and mini-partyline box AGAIN
476   2.  Now when the Switch Special Block is used on someone
477       each client updates itself first to prevent field copying
478       if switch block is used 2 or more times in a row
479   3.  Ingame chat box is now 3 lines
480   4.  Secured connect negotiation between server and client
481   5.  Added bomb special block
482   6.  Added /me to ingame chat box
483   7.  Added teams
484   8.  Added MIDI
485   9.  Added background images
486   10. Added start up sound
487   11. The server now has the option to not play
488   12. The first person on a server (if the server isn't playing)
489       is a moderator - he can start/stop and pause/unpause the game
490   13. Option to average the player's levels
491   14. Classic rules option - when a player clears a line, it adds
492       a line to the other players
493   15. Fixed bug in IP ban box
494   16. Players can join a game already in progress
495   17. Winlist is now saved when you close and reload game
496   18. Option for after a certain amount of time, the game will
497       start adding lines to all the player's fields.  This speeds
498       up games
499   19. Now, the winning team/player recieves 3 points, last loser
500       gets 2, second to last loser gets 1 point.
501   20. The server can set the stack height when the game starts
502       for each player individually.
503   21. Levels go up to 100 instead of 50
504   22. Field displaying has been sped up alot
505   23. Better handling of winsock routines HOPEFULLY eliminating
506       the Access Violation errors
507   24. Fixed server screen not being enabled when a client game
508       has ended.
509   25. You can press ESCAPE when editing a msg in game, and it
510       will keep the text in the editbox until you press 't' to
511       edit it again.
512   26. You can change the font of the partyline box by right
513       clicking.
514   27. Moved Pause and Start New Game buttons to partyline
515       screen.
516   28. Any special blocks you get are now randomly placed in your
517       inventory
519   New in 1.0 FINAL:
520   1.  First released version!!
521   2.  Fixed Attacks/Defenses box's scrolling *again*
522   3.  Fixed range check error when typing in a box
523       while tetrinet is connecting to a server
524   4.  Now saves your nickname in the INI
526   New in BETA 1.0b:
527   1.  Fixed Attacks/Defenses box's scrolling and now it
528       doesn't say a player is attacking you when in fact they
529       aren't
530   2.  Fixed Pause button not enabling and disabling properly
531   3.  Partyline edit box now disables at the right times
532   4.  New icon
534   New in BETA 1.0a:
535   1.  Kicking users is fixed and works/looks alot better
536   2.  When a player dies, their field is filled with random
537       blocks
538   3.  You can now pause the game.
539   4.  Fixed not removing player from server if they quit
540       abnormally
541   5.  Tabbing between edit fields on the different screens
542       is now in order
543   6.  You can now see all attacks on players, even from other
544       players
545   7.  Fixed when making the piece fall down immediately, sometimes
546       it would jump up
548   New in BETA 1.0:
549       AKA BETA .88
551   New in BETA .88:
552   1.  Fixed distortion of window if your monitor's pixels per inch
553       settings were set akwardly
554   2.  Moderated Switch Field block now, no more cheating ;)
556   New in BETA .87:
557   1.  Hopefully fixed the bug that randomly kicked players
558       off the server.
559   2.  Added description label next to inventory for current
560       special block.
561   3.  Made windows smaller to better accommodate users
562       with 640x480 resolutions. (You will still have to
563       auto-hide your win95/nt taskbar)
565   New in BETA .86:
566   1.  New WAV for when a message arrives in the playing
567       window
568   2.  Added IP Banlist
569   3.  TetriNET now pops up the reason why you can't
570       connect to a server
571   4.  Now you have more time to move a piece left or
572       right when it's just about to hit the bottom.
573   5.  Other minor bugs fixed
575   New in BETA .85:
576   1.  Greatly improved handling of data coming in
577       from multiple sockets.  It shouldn't crash
578       anymore (?)
579   2.  TetriNET now passes a little less data to
580       the other players.  A fast modem is still
581       recommended if you're the server.
582   3.  Added easy talking while playing
584   New in BETA .84:
585   1.  New name because of copyrights ;)
586   2.  Rearranged playing field window
587   3.  Rotating certain pieces at the edge of the field
588       now works
589   4.  Pieces drop slower than before when you hold DOWN
590       (for greater accuracy)
592   New in BETA .83:
593   1.  Fixed partyline jumping every once in awhile
594   2.  Kick button is disable properly
596   New in BETA .82:
597   1.  I've added 2 more players.  Now you can compete
598       with a total of 5 players!
599   2.  Added player list to the partyline screen
600   3.  The Server can kick someone off if needed
601   4.  Added actions to partyline
602   5.  Added ctl-b/u/i character attributes to partyline
603   6.  Now allows playing by yourself so you can practice
604   7.  Many new special blocks added
605   8.  The show fields screen is now a seperate window
606       (to fix all that stupid palette handling)
607   9.  Added a winlist.  It shows all the players who
608       won and how many times they've won in the current
609       game.
610   10. Added ability to discard the special block in
611       inventory
612   11. A title screen with some nifty graphics! :)
613   12. Graphics are just one file now.
614   13. Fixed a few barely noticable bugs
616   New in BETA .81:
617   1.  Inventory system plus other special blocks -- more to come!
618   2.  Added sound!
619   3.  New graphics
620   4.  You can change Key config, sounds, and graphics
621   5.  Made playing fields of other player's smaller to reduce
622       lag
623   6.  Before, TetriNET sent the entire playing field of a player
624       to the rest of the players.  Now it sends just modifications
625       to the fields - this also reduces lots of lag
626   7.  Increased size of playing fields
627   8.  You can change how often each of the pieces/special blocks
628       appear in the game