Next: , Previous: Move generation Intro, Up: Move Generation


6.2 Generation of move reasons

Each move generator suggests a number of moves. It justifies each move suggestion with one or move move reasons. These move reasons are collected at each intersection where the moves are suggested for later valuation. Here is a partial list of of move reasons considered by GNU Go. (The complete list may be found in move_reasons.h.)

ATTACK_MOVE
DEFEND_MOVE
Attack or defend a worm.
ATTACK_THREAT_MOVE
DEFEND_THREAT_MOVE
Threaten to attack or defend a worm.
EITHER_MOVE
A move that either achieves one goal or another (at the moment this only used for attacks on worms).
ALL_MOVE
At the moment this is used for a move that defends two worms threatened by a double attack.
CONNECT_MOVE
CUT_MOVE
Connect or cut two worms.
ANTISUJI_MOVE
Declare an antisuji or forbidden move.
SEMEAI_MOVE
SEMEAI_THREAT
Win or threaten to win a semeai.
EXPAND_TERRITORY_MOVE
EXPAND_MOYO_MOVE
Move expanding our territory/moyo. These reasons are at the moment treated identically.
VITAL_EYE_MOVE
A vital point for life and death.
STRATEGIC_ATTACK_MOVE
STRATEGIC_DEFEND_MOVE
Moves added by 'a' and 'd' class patterns (see Pattern Classification) which (perhaps intangibly) attack or defend a dragon.
OWL_ATTACK_MOVE
OWL_DEFEND_MOVE
An owl attack or defense move.
OWL_ATTACK_THREAT
OWL_DEFEND_THREAT
A threat to owl attack or defend a group.
OWL_PREVENT_THREAT
A move to remove an owl threat.
UNCERTAIN_OWL_ATTACK
UNCERTAIN_OWL_DEFENSE
An uncertain owl attack or defense. This means that the owl code could not decide the outcome, because the owl node limit was reached.
MY_ATARI_ATARI_MOVE
A move that starts a chain of ataris, eventually leading to a capture.
YOUR_ATARI_ATARI_MOVE
A move that if played by the opponent starts a chain of ataris for the opponent, leading to capture, which is also a safe move for us. Preemptively playing such a move almost always defends the threat.

The attack and defend move types can have a suffix to denote moves whose result depends on a ko, e.g. OWL_ATTACK_MOVE_GOOD_KO. Here ..._GOOD_KO and ..._BAD_KO correspond to KO_A and KO_B as explained in Ko. See engine/move_reasons.h for the full of move reasons.

NOTICE: Some of these are reasons for not playing a move.

More detailed discussion of these move reasons will be found in the next section.