Hextris Tclet


Description

Hextris with multiplayer mode. Requires Tcl/Tk 8.0+. Works either in Tk plugin or stand-alone with the same source code.

Options

For plugin, options are specified in the <embed> tag, like:
<embed src="hextris.tcl" width=460 height=600 blocksize=9>
For standalone, use the standard '-' notation, like:
hextris.tcl -blockedge 9
autopause TCL_BOOLEAN, Default: 0
Whether to use the auto-pause feature (pauses when game loses focus).
blockedge #, Default: 9 (pixels)
Size in pixels of one hextris edge.
color[0-8] colorname, Default: major colors
Color of each of the 9 different hextris pieces.
drop binding, Default: <Key-space>
Key binding to drop the piece all the way down.
left binding, Default: <Key-Left> (left arrow)
Key binding to move the piece left.
level #, Default: 0
Initial level to start at. Do not go higher than 20.
maxinterval #, Default: 500 (microsecs)
Initial interval in microseconds between slides. This is decremented by maxint/20 every 10 rows (unless you start at a higher level), and should never go below 10 microsecs.
right binding, Default: <Key-Right> (right arrow)
Key binding to move the piece right.
rotleft binding, Default: <Key-Up> (up arrow)
Key binding to rotate the piece left (counterclockwise).
rotright binding, Default: <Key-Down> (down arrow)
Key binding to rotate the piece right (clockwise).
shadow TCL_BOOLEAN, Default: 1
Whether to use the shadow-piece feature (shadow at bottom)
shownext TCL_BOOLEAN, Default: 1
Whether to show the next piece
slide binding, Default: <Key-Return>
Key binding to slide the piece down one.
help/info
Displays usage info to stdout and exits

Multiplayer Options

multiplayer TCL_BOOLEAN, Default: 1
Whether to allow multiplayer mode (requires sockets)
highbandwidth TCL_BOOLEAN, Default: 1
Wether you have a high bandwidth connection to your opponent(s) More info will be shared if true. I recommend turning this off on Win/Mac because of slow game play.
hostname string, Default: [info hostname]
Hostname to use for yourself
port #, Default: 15141
Hextris server port (that other Hextris players would connect to).

Multiplayer Usage

In order to get the multiplayer option, sockets must be available (thus this is disabled for Tk plugin use). The play is as synchronized as possible between players. Any player can start or pause a game. See Multiplayer Rules for more info.

Connecting to Another Player

To connect to another player, you must know their hostname/IP and Hextris port (default: 15141). You can find your own hostname/IP and port by opening the multiplayer dialog. When you have the other players vitals, ONLY ONE PLAYER should type in the info of the person to connect to in the proper entry fields on the multiplayer dialog and press Connect. The other player will receive a connection message. If the player accepts then you will see their name remain in your list of connected players. If they refuse then they will disappear from the listbox. Disconnect disconnects from all connected players.

Rules and Scoring

Each dropped piece is 5 points. Each row dropped rows is:
( NUMBER_ROWS_DROPPED ^^ 2 ) * ( CURRENT_LEVEL + 1 )
That means dropping multiple rows at a time is best. The level increases every 10 rows dropped. At this time the slide interval decreases (the game gets faster). The game is over when a new piece cannot be placed on the board.

Multiplayer Rules

Scoring occurs the same, but game play is slightly different. When a player drops more than one row, an equal number of rows is added to his opponents' board(s). When the game would normally be over for a player, his screen is instead reset and the game continues. That player also incurs a death, which accumulates. You can see other players' death count below the scale bar which pops up for that player. What is the scale bar? That indicates the height of the pieces on the other player's board. This is updated after each cemented piece in high bandwidth mode, but only after a row drops in low bandwidth mode. Reset also registers as a death and the game continues for that player. There is no Game Over, the game continues on with only the ability to pause.

Further Notes

I have to improve the rotate on edge rules to be more flexible. That area in general needs the most work.

Jeff Hobbs (jeff at hobbs org)