You see a good move clearly enough. Then, on the next turn, your opponent starts calling threat after threat, and the whole game feels pulled along by a string. The review is even more irritating: the engine marked that line early, as if it knew from the start where the board would cave in. Threat-space search is an explanation of that reading order: look first at lines that force replies, then come back to compare the ordinary good moves.
First, shrink the board to forcing lines
The apparent difficulty of Gomoku is the number of points. After the opening on a 15-by-15 board, every move can have dozens of candidates. If every point is expanded equally, the search tree quickly gets out of hand.
But in real play, points are not equal. A four-in-a-row demands an immediate block. An open three usually forces a defense. A sequence of threats leaves fewer choices. Threat-space search seizes on that fact: study the branches with forced replies first.
This is not mystical “machine intuition.” It is more like temporarily folding the board, leaving only the skeleton of “I threaten, you must answer, I threaten again.” Ordinary positional evaluation can wait.
Why Allis started with threats
In the early 1990s, Victor Allis and his colleagues used threat-space search systematically in work on solving Gomoku, together with proof-number search. The relevant papers include the 1993 AAAI paper Go-Moku Solved by New Search Techniques and the 1994 paper Go-Moku and Threat-Space Search.
The word “solved” has to be understood within the rules and settings discussed in those papers. It should not be read as “all Gomoku variants are solved,” and it certainly should not be stretched to cover forbidden moves, Swap2, or every board size.
Allis’s key observation was simple: if one side already has a chain of threats, many of the opponent’s attractive plans will never get time to happen. A search program should first ask: is there a line here that can force the game all the way?
Read the forcing line first, and the board gets much quieter.
How a program turns threats into objects
A human says, “There is an open three here.” A program has to break that down further. A threat usually contains three parts: the attacking move, the defensive points the opponent must answer with, and the threats that can continue afterward.
Suppose Black makes an open three. White may have two defensive points. The program puts both into the reply set, then checks whether Black, after each reply, can make a four-in-a-row, create a four-three, or switch to the other side and build a double threat.
This is the step most easily misunderstood. Threat-space search is not merely looking for “the fiercest move right now.” It cares whether threats can be chained together. A single four-in-a-row makes noise; if nothing follows, its value drops.
VCF is the cleanest forcing line
VCF is usually understood as victory by continuous fours. Its structure is clean: I make a four-in-a-row, you block; I make another four-in-a-row, you block again; eventually a five appears, or a position arises that cannot be defended in one move.
As board reading goes, VCF suits machines well. The defense at each step is usually confined to a few points, the branches are narrow, and the result is clear. When you review a game and see the engine give a string of “only moves,” it is often this kind of line.
But real games cannot be reduced to VCF. Many wins begin with open threes, closed threes, and four-three exchanges; the first few moves are not as obvious as continuous fours. Stronger searches keep a wider set of threat types beyond VCF, at the cost of more computation.
Evaluation handles positions without force
The board is not always in a killing sequence. Thickness around tengen in the opening, potential along the edge in the middlegame, and the danger of Black’s double-three or double-four under forbidden-move rules all require an evaluation function.
Modern Gomoku engines usually combine forcing-line search with positional evaluation. Kill sequences that can be calculated are calculated first. When a kill is unclear, or when there is no immediate kill, the engine turns to patterns, weights, or neural networks to evaluate candidate moves. The 2025 neural-network distillation work related to Rapfi also discusses this balance between efficiency and playing strength.
So the “engine reading” you see is usually not one trick. Up front are tactical searches such as VCF and VCT; behind them is a broader system for scoring positions. Together, they are what make the engine look both fast and steady.
What humans can borrow: ask whether the opponent is forced
You do not need to memorize Allis’s algorithm. The most useful borrowing in real play is to layer your candidate moves: first look for four-in-a-row and five; next look for open threes and four-threes; only then ask whether a shape feels comfortable.
Take a position where you have two diagonal prospects near tengen, and also a reinforcing move on the side that looks solid. Do not rush to add thickness. First count whether there is an open three that forces the opponent to a particular point, and whether, after that block, you can make a four-in-a-row on the other line.
That order changes many decisions. A “beautiful” thick shape may be one tempo too slow if it puts no pressure on the opponent. An ordinary-looking open three deserves to be calculated first if it connects to the next threat.
Remember the limits of threat-space search
Threat-space search is good at handling force, but it can be held up by rule details and defensive resources. In Renju, some double-threes and double-fours are forbidden for Black. A kill that looks elegant may trigger a forbidden move on the final step.
It can also miss quiet strategic moves. Some positions have no immediate killing threat, yet one reinforcing move can shut down two of the opponent’s future lines while preserving your own counterplay. Pure tactical search does not read that long-term value; evaluation has to supply it.
It is safer to treat threat-space search as a reading habit: find force first, then judge the position; verify the kill before discussing good moves. In your next review, choose one middlegame position and manually go three layers deep along “threat—defense—threat again.” You will understand much faster why the engine played where it did.
Moves that force a reply enter the calculation first.