Foobase is a tool for managing collections of chess games. It is not a chess playing program (that is: you cannot play games against it)
The main drive for starting the project was to be able to enter chess games on a java capable PDA device. It was highly preferable that the output was directly compatible with the commercial Chessbase program so that the editor of our chess club magazine could publish the games without going through the process of entering the games himself (and usually detecting that many of the game sheets are worthless due to notation errors made by the players during the game ;-)
The screenshot above shows the current state of development: games can be entered through the graphical
interface and stored directly in Chessbase compatible files. This version only supports the older format
Future releases may offer filters for additional formats.
The current version, release 0.2, is a minor upgrade. It includes:
update()method such that a game can be updated instead of constantly appended
Note that an update still appends the new version to the database file. This is a limitation of the database format, unfortunately.
Also note that a delete operation does not really delete anything: it merely sets the "game deleted" flag in the game header.
After deciding to start a new open source project, the original short-term intentions were extended to the following, more general list:
The first goal is achieved by means of portability of Java applications. The code uses 1.1 features, so any 1.1 or higher Java VM should do the trick.
The resource consumption is limited by using plain AWT instead of Swing. Unfortunately, that is no guarantee for low resource consumption: using a database of about 170 games and browsing through a couple of games, rapidly consumed all of the available 10MB RAM available to the application.
The current implementation uses a number of interfaces instead of hardcoded classnames for a number of classes:
This approach should allow to plugin other implementations of the same interfaces.
For the time being, only one format of database is supported: the older Chessbase format using
.CBI/.CBF files. Even this format is not yet fully implemented: it is possible to retrieve
games and add new games to a database, but update and delete are not yet implemented.
Probably the next filter will be for PGN support.
Support for the new format of Chessbase databases is high on my wishlist, but a first attempt failed on decoding the move-bytes stored in these databases (apparently, either the "encryption" has changed or the move generator generates moves in a different order)
The current implementation runs fine on this configuration:
Three kits are available:
You can find a brief explanation of the functionality of the current version here
Given the rather poor performance of CPU intensive tasks in Java, there are currently no plans for implementing database searches (so you won't be able to sneak into a private corner during a game to quickly lookup what to play next ;-)
The name "Chessbase" is probably trademarked and registered by the company of the same name. They are reachable here.
The information about the actual file formats comes mostly from the sources of the 1-Apr-96
release of "CBUTILS" by Andy Duplain, Syntegra, Brighton, UK. That kit is available
here (look for the file
The images used for drawing the pieces have been created with Gimp from screenshots of characters in the
freeware "CHESS MAYA" font created by Armando Hernandez Marroquin. Look for file
MAYA_TT.ZIP on the same FTP site.
Copyright © 2000 Eddy Vanlerberghe. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of Eddy Vanlerberghe shall not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY EDDY VANLERBERGHE ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EDDY VANLERBERGHE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|This project is hosted by SourceForge.||
Last Update: 15 October 2001.