protocol description
--------------------i

all opcodes are sent as chars

upon player join:

	server sends greeting + version number
		op_server_greeting
		[string] "geekgame"
		[int] 1

	client sends name and picture URL
		op_client_presentation
		[string] "hans"
		[string] "http://www.thisisme.com/me.png"

	server broadcasts information
		op_server_newplayer
		[string] "hans"
		[string] "http://www.thisisme.com/me.png"

game host (1st player must select game mode)

	client sends mode
		op_client_ruleset
		[int] mode

	server evaluates mode
		op_server_moderesult
		[int] result

when all players have joined (and game mode is selected)

	server broadcasts game start
		op_server_gamestart
		[char**] <gameboard>
#		op_server_turn
#		[int] 0

	client sends move
		op_client_move
		[int] 10
		[int] 7

	server broadcasts move and scoring
		op_server_moveresult
		[int] 0
		[int] 10
		[int] 7
#		op_server_score
#		[int] 0
#		[int] 1

game interruptions by leaving/rejoining players are covered just fine

	game is interrupted
		op_server_gamestop

	game is being continued
		op_server_gamestart

finally, one player will win

	the winner gets announced
#		op_server_winner
#		[int] 0
		op_server_gameend


game modes
----------
-> server greeting determines capabilities
-> client lets host player select one

e.g "geekgame" -> modes "easy", "matrix", "havoc", "hax0r"
easy -> achieve a sum of zero either horizontally or vertically
 (range: 0 to 20)
matrix -> sum of row and column (multiplied by 2) must be 42
 (range: 0 to 60)
havoc -> numbers under cursor are binary coded, quotient must be 4
 (range: 4 to 128)
hax0r -> numbers under cursor bars must contain same number of 1's
 (range: 0 to 7)

-> this ensures backward compatibility
-> for each achieved goal, a player gets one level point,
   while the others loose one (down to zero)
-> game ends when one player has 10 level points

