NumLock by Dylan Leigh - user dleigh at site cs.rmit.edu.au http://www.dylanleigh.net/vg/numlock.html Version 1.1RC Requirements ============ Client: Java 1.5 or higher, running on a graphical interface. Server: Working C compiler with Berkeley TCP/IP sockets and pthreads. Tested on FreeBSD 5.3, Solaris 9 and Windows XP. Gameplay ======== You and the server take turns in picking numbers from the grid. You may only pick numbers on the *row* that the server made it's move; the server picks numbers on the *column* that you made your move on. Thus a good player can lock the other player out of the higher numbers. The numbers you pick are added to your score and the highest score wins. Note that the game will end if it is impossible for either player to make a move (no numbers left on the row/column they are required to move in). The numbers in the highscore list are the player score minus the computer score. Servers ======= At this time there are no permanent servers running. (Sorry). If this changes I will be sure to mention it on the site, in here and put them in the dropbox in the server menu of the application. Bytecode (client only) Distribution notes ========================================= To run the program on Windows doubleclick the "NumLock.jar" file. Some UNIX/UNIX-like operating systems have the Magic set up to execute .jar files properly (simply run it as you would any executable). If all else fails, use "java -jar NumLock.jar" from the command line. Source Distribution notes ========================= WARNING 1: Many files in this package, including the Makefile and source, use UNIX line endings. They will thus be unviewable on many Win32 text editors. The use of gVim is reccommended if you wish to access the source or Makefile from a Win32 system. This file uses DOS line endings. WARNING 2: The server needs to have the "hiscores.dat" file in the format defined in the protocol. If not the server will barf. If the file does not exist it will be created. OLD SERVER: The ATTIC directory contains the (old, deprecated, 1.0.1) java server. This is incompatible with the current client and is only provided for educational/historical purposes. The server is a console application and is terminated by sending an interrupt to the program (simply enter Ctrl-C or close the program). With the Makefile: make all - Builds server and client make client - Builds client only make server - Builds server only make release - Makes a jar file of the client. make run - Runs the client in debugging mode. make runserver - Runs the server in debugging mode on port 7331. make clean - Removes compiled class, jar file, and server executable Without the Makefile: Use "javac Numlock.java" to build the client and "javac NumlockServer.java" to build the server. Enter "java Numlock" to start a client. The client is a GUI application. Note that you will be prompted for a server in : form. Enter "java NumlockServer" to start a server, listening on port 7331 (the default is 7331, this can be changed with the -port command line parameter). Sending a SIGTERM will cleanly close the server. To have the client or server print debugging information to the console add the command line parameter "-debug". For other commands consult the makefile. Documentation: My original report for EEET2094 (Computer Network Engineering 1) is in the file report.html in the ATTIC/docs/ directory. Amongst other things it describes the original (1.0) protocol. History ======= 1.1 First "public" release. Server rewritten in C. Apart from performance improvements it is now resistant to denial of service attacks and saves the high scores cleanly on shutdown. Protocol 1.1 - 60 second timeout if there is no activity (real activity, not including keepalives) on the connection. 1.0.1 Server rewritten to use threads; plays against multiple opponents over multiple connections. 1.0 Original Version, written in Java 1.5RC. Thanks ====== Mike (http://quex.org) for the game name. David Marshall, Steven Buck and Emil Mikulic helped me test the program (i.e. they played the game lots and tried to break it). $Id: readme.txt 6 2005-06-06 07:05:28Z dleigh $