Gomer Philosophy
While developing the GomerEngine, I have explicitly avoided overlapping concept names with other software like GnuGo - things like GnuGo Worms, Gomer (and every other Go engine in existence) has a very similar concept which Gomer calls Wyrms to stay distinct and emphasize that there are differences, such as: Wyrms know nothing about cut points, or - at this stage at least, multi-stage liberties. A similar thinking is behind the use of Japanese class names, in an attempt to not let the class name unduly influence what the class does, but rather let the concepts at play dictate what each division of code does and does not include.
There's also a certain amount of Zen, or one might also call it inefficiency, in the Gomer Engine - with conceptual representations not only of the Goban, but also the Gosu, which contain explicit Goishi objects which are moved from the Gosu bowl to the Goban when played, and moved again to a Gosu lid when captured. While this might be less than optimal in processing speed, it gives more tangible representations, such as a Goishi can tell which Wyrm it belongs to, and a Wyrm which Draco it is a part of.
Although some of the analysis theory like BensonsAlgorithm doesn't translate to games with 3 or more players, I have tried to keep the code - wherever possible - capable of handling N player games on any rectangular board.
Rather than explicit study and duplication of existing algorithms and concepts, Gomer is trying to take a fresh? approach, from an at least somewhat naïve perspective.
A quick listing of the (C++ class) concepts developed, to a greater or lesser degree, within the Gomer engine as of this writing:
Chiho 地方 definition of a region on a Goban, the base class for more specific regions like Wyrm and Ryoiki. Chiiki 地域 calculating and estimating territory, the collection of Ryoiki for the current Goban position Draco - a loosely connected group of Wyrms of the same color. Goban 碁盤 a generalized playing board Goishi 五石 a stone or playing token Gosu ゴス holds stones not on the board, either in the bowl or the lid Jiyu 自由 maps distance to nearest friendly Goishi, a primitive sort of influence flood-fill algorithm. Ryoiki 領域 a region, defined as a group of Goban intersection points - like a Wyrm of free space Sakudo 策動 selects moves for computer players Shiai 試合 - encapsulates a single game play Shiko 思考 thinking about the board position and game Wyrm - A solidly connected group of Goishi aka Worm, Chain, String, Block, Group, Army.
Back to GomerEngine.