19/01/2011: Version 0.3.2 - Removed "parser error" messages shown at startup when blockem wrongly tries to load a .dtd file as .xml. Blockem will only try to load those files located at $(game-data-folder)/blockem/challenges whose extension is ".xml" - 4 players game added. All players MUST be humans since there is no AI implemented (yet) - Pieces of any non-moving players can be hidden from the main view through a menu option. This option can be used to get a bigger board while maintaining the window size - Fixed error transferring starting coords settings from the "new total allocation game dialog" to the actual game engine - Fixed error in tar.gz package. Testing .xml files for challenge processing tests had been left out of the package - Stripped out debug information when compiling without all the DEBUG flags. Binary size has been decreased to less than 10% of the original size under GNU/Linux 29/10/2010: Version 0.3.1 - Added support for non-square shaped boards (they can be used now in total deployment games) - Challenge game mode added to the GUI. A blockem challenge is a special kind of game that consists in a customised board where a player must allocate a set of pieces (might be all of them or just a subset of all the available pieces). There is no opponent, so the human user will be playing against the challenge's designer. Have a read to the README file of this project (also to the file challenges/README) - Fixed bug in GUI. If a new total deployment game was launched while the computer was calculating a move for the 1 vs 1 game the mouse cursor never came back to the default arrow (it kept showing the busy icon) - Fixed bug in GUI. Latest deployed piece glowing effect didn't work when two types of game where played before restarting the application. This was due to the way g_timeout_add works - Whenever a game is cancelled its corresponding GLib timers are stopped so they don't keep counting forever 16/10/2010: Version 0.3.0 - Major refactoring on GUI handling. New games can be added easier into the Main Window. New Game dialog redesigned too. - Total allocation mode available on GUI. Player is requested to put down all his/her pieces on a custom-size board playing against no opponent - Tooltip with each piece's name has been added to the available pieces shown to the user. It is shown when the mouse is stopped over a currently available piece - New configuration file in xml format which is loaded at start-up in win32 platforms. At the moment it is only used to set the language on these platforms but it could be easily expanded in future (and created in and loaded from $HOME directories under *nix) - Algorithm to draw the board status improved. It needs less processing now - Directories used by the debian package have been changed to the ones most commonly used - Bug fixed in win32 platforms: Bogus handling of i18n in command line arguments 28/08/2010: Version 0.2.4 - About Dialog contains the URL of the project - Support for internationalization. Available languages for now are English and Spanish 19/07/2010: Version 0.2.3 - Around 20% performance improvement of Minimax algorithm since 0.2.2 using precalculated arrays of nucleation points and forbidden areas as well as piece configurations. Loops have been also fine tuned to loop as fewer times as possible - Improved command line options. backtracking algorithm to deploy all pieces in an empty board (1 player total allocation game) can be tested through command line, for example with this command: ./blockem --mode=1 -r 14 -c 14 -x 4 -y 4 - Test app has been extended to check whether changes added to the sourcebase insert regressions in blockem. Also, Makefile.am for test app has been fixed so it only uses libraries for test, instead of all libraries needed for the blockem app 21/06/2010: Version 0.2.2 - Code adapted to be able to run with glib >= 2.24 (included in ubuntu 10.4). Earlier versions couldn't run with that library version due to the following error: "error: gthread_supported call failed when initialising gthreads" "error: App can't start without gthreads support" - Minimax algorithm improved. 5% performance improvement since 0.2.1 (without taking into account calculation of influence areas) - New concept of influence areas added to blockem. influence area is the set of coordinates of the board that are empty, valid for a possible deployment and are "at reach" of any piece. These influece areas of either player1 or player2 can be shown on the board. They are mainly used to improve heuristic behaviour (though they add around 20% overhead to the minimax algorithm) - Two new heuristics have been added: "Influence area", and "Mr. Eastwood" which are both based on the influence area calculation. They are much harder to beat than older heuristics - "NK weighted v1" has been renamed to "Centre focused", while "NK weighted v2" is now "NK weighted". There is still a lot of work to be done on heuristics, but this topic looks like and endless one - Player1 and player2's names are shown with the corresponding colour on the status bar - User can show either Player1 or player2's forbidden areas, instead of just showing current player's 24/05/2010: Version 0.2.1 - Around 8% computing time improvement in the minimax algorithm (tested in a 32-bit centrino duo processor) - New version of the old NK points based heuristic - Experimental "Amount of pieces" heuristic - Changes to the configuration are applied just after closing the config dialog instead of waiting for the next turn as it happened in the previous version. If, for example, the user sets the search tree depth to a big value and computing is taking too long, the config dialog can be opened again, settings changed and changes applied instantly - Improved progress bar handling - Accelerators for New and Quit options in the Game menu - Icons are loaded correctly in window platform 13/05/2010: Version 0.2.0 - Nucleation points are drawn on the board (if user selects the suitable option in the menu) using player's colour. Shared nucleation points are black. - Current player's forbidden areas can also be shown selecting the "show forbidden area" option in the menu - App can be set up to play human vs human, human vs computer and computer vs computer games - Computer and human players can be selected to play as player1 or player2 in any kind of game - Settings of a game can be edited at all times through the preferences menu (in settings) except for starting coordinates, which can be edited either when a new game is launched or if no pieces have been put down on the board - Type of heuristic (evaluation function) for computer players can be edited through both the preferences dialog and when a new game is launched. 3 types of heuristic have been included in this release: "NK weighted", "simple" and "random" - Piece edition improved for those pieces with only one possible configuration - Application is able to cancel a computing operation for a new game to start. In previous versions cancelling the current computing operation was only enabled when the human user wanted to close the application (new games had to wait until the worker thread had finished its calculations) - libglade dependency removed. Gtkbuilder is used instead - Executable in windows has reduced its size around 50%. Released zipped binary for windows has been also reduced around 30% - Fixed possible deadlock that might have occurred when the game was about to finish - Player handling through Game1v1 interface simplified in source code 24/04/2010: Version 0.1.6 - Computer's latest piece deployed glows so human user can easily notice what was the latest move - App kills itself instead of hunging up when unexpected state occurs if cumputing thread is busy - Progress bar and moves calculated by worker thread are totally thread-safe now - Command line options are properly handled. Blockem can load a game, process the next move and print it out in console with no GUI 16/04/2010: Version 0.1.5 - Minmax has been fixed. It was faulty because pieces weren't being rotated once they were mirrored during the AI calculations. - Editing piece drawing area contains 4 buttons, so the user can rotate to the left and right and mirror over the X and Y axis. - Game1v1 test code fixed - Game->New menu restarts the user's stopwatch even if there's no pieces on the board 09/04/2010: Version 0.1.4 - Added stopwatch to measure how long computer and human take to move - Computer player doesn't process the next move so hard if it already managed to block completely the human user (it was a bit tedious to wait before) - Added a bit of randomness to the starting move when the computer player starts. What is life without randomness after all? - Progress bar in the status bar is fully functional - Removed extra command line window when running in the windows platform - Board drawing area is now handling its own events. GUI code has been improved a lot throughout the last couple of versions 04/04/2010: Version 0.1.3 - Computer's pieces left are shown on the right side of the board - Current score is shown on the status bar at all times - Correct version shown on the AboutDialog when help->About is pressed - Editing piece area shows a circle sorrounding the selected piece - More refactoring done on the GUI code 26/03/2010: Version 0.1.2 - The ugly buttons that used to represent pieces have been changed by real (and beautiful) pieces. - Ghost pieces on the board were kept painted even when the mouse pointer had left the board drawing area. That has been fixed. - Icon added to the executable file in the windows version. - Part of the gui code has been refactored (there's a lot of work left) 19/03/2010: Version 0.1.1 - pthread dependecy has been moved to gthread. - Port to windows done. Code compiles in both linux and windows. - Unhandled menus in GUI are now blurred so the user can't select them. 04/02/2010: Version 0.1.0 - This is the first release of this project. - At the moment it contains a fully functional 1vs1 game based on the board game blokus (http://blokus.com). - 1vs1 means man versus computer, where the computer moves are calculated by a simple (and a bit foolish) heuristic. - It can be compiled and installed using the well-known autotools. - There's still a long way to walk on this project. Have a look at the document TODO for a small snapshot of it.