Hacking Xconq
The School for Strategy
Version 7.4
December 2000
Stanley T. Shebs Copyright (C) 1987-1989, 1991-2000 Stanley T. Shebs
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the section entitled "GNU General Public License" is included exactly as in the original, and provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that the section entitled "GNU General Public License", and this permission notice, may be included in translations approved by the Free Software Foundation instead of in the original English.
This manual describes the internal architecture of Xconq, and provides information and guidelines for modifying the sources. You should know what you are doing; Xconq is designed to be modifiable, but it is not simple code. In the past, people have found it easy to make changes, but much harder to make them correctly!
First, the overall goals of Xconq. Xconq cannot and does not attempt to be all things to all people; instead it focusses on a very particular class of game, namely map/overhead-view strategy games. This has become a rather well-worn genre of game, but the field is still open for innovation; Xconq's main contribution is that it allows the construction of many different games in this genre, without requiring low-level programming.
These are the specific goals for Xconq:
Xconq is designed to be portable to different types of user interfaces. It is based on a kernel-interface architecture, where the semantics of the game, as documented in the preceding chapters, is part of the kernel, while the main program and player interaction are specific to each system.
Xconq is also designed to allow the addition of new AIs. The
default "mplayer"
AI, while it is flexible and will attempt to
play any side in any game, does not have the depth that is often
important to success in a game. Its position is that of a generic AI
program that can learn to play any game, given only the rules; while
such a program might figure out how to win at tic-tac-toe or checkers,
it is not going to be particularly good at the subtleties of go or
chess.
The Xconq GDL is also extensible. This is useful when the basic GDL does not provide some feature that is essential to a game. It is fairly easy to add new global variables, properties, and tables.