====== Kill-All Go (coming soon) ====== **Kill-All Go** is a two-player Go variant wherein one player begins with a substantial force already on the board and tries to prevent the other from making even one living string. Sensei's Library identifies [[https://senseis.xmp.net/?AlexandreDinerchtein|Alexandre Dinerchtein's]] proposal in the //GoAma// newsletter as the probable first introduction of the variant to the Western Go community.(([[https://senseis.xmp.net/?KillAllGame|Kill-all Game at Sensei's Library]]. This is an attribution of its introduction in the West, rather than a definite claim about the game's ultimate origin.)) Traditionally, Black attacks and White tries to live. This article uses **Attacker** and **Defender**, matching Abstract Play's terminology, to remain color-agnostic given the color customization available on Abstract Play. ===== Rules ===== Rules are as in Go (specifically Tromp-Taylor with no passing) unless specified otherwise. Capturing and ko work as in Go, for example. The **Defender** wins by forming at least one **unconditionally alive** (ie **pass-alive**), string. Such a string can survive any sequence of opposing placements without needing a defensive reply. Life dependent on seki or winning a ko does not qualify. The **Attacker** wins by preventing this. AP awards the Attacker a win when the Attacker's own pass-alive stones leave no room for a pass-alive Defender string, but it's polite to resign as the **Defender** once you are no longer able to realistically make a pass-alive group. There is no scoring. After the setup stage, the **Defender** moves first. ==== Setup: Pieboxing (default) ==== **Devised by MXHero.** (([[https://senseis.xmp.net/?Pieboxing|Pieboxing page at Sensei's Library]].)) - Start with an empty board. - Beginning with Player 1, players alternate turns. On each turn, either place one Attacker stone on an empty intersection, or claim the Attacker role. - When a player claims the Attacker role, the other player becomes the Defender and makes the first ordinary move. All stones placed during setup belong to the eventual Attacker, whoever placed them. Claiming the role takes the place of adding another setup stone. AP permits at most ''floor(p/2)'' stones in this alternating setup where ''p'' is the number of points on the board. If that limit is reached, the next player must claim the Attacker role. ==== Setup: Handicap ==== **Devised by MXHero.** (([[https://senseis.xmp.net/?Pieboxing|Pieboxing page at Sensei's Library]].)) This modifies Pieboxing for players of unequal strength. - Player 1 (the stronger player) chooses a positive number of handicap stones. - Beginning with Player 2 (the weaker player), the players conduct the Pieboxing setup: on each turn, place one Attacker stone or claim the Attacker role. - If Player 2 (the weaker player) claims the Attacker role, Player 2 immediately places the chosen number of **additional** Attacker stones on empty intersections. - If Player 1 (the stronger player) claims the Attacker role, no additional stones are placed. - The other player becomes the Defender and makes the first ordinary move. AP permits at most ''floor(p/2)'' handicap stones where ''p'' is the number of points on the board. The alternating placement phase has the same limit as ordinary Pieboxing; any handicap stones are additional to that limit. Handicaps up to ''round_even(p/12.5)'' are fronted by being selectable via clicking the board. To understand the reasoning behind this number, consider the following: - Kill-All Go Handicap stones are approximately half as powerful as Normal Go Handicap stones, because a player should claim the Attacker stones when about half the handicap would make the game objectively even, so to allow the equivalent of 9 stones on 19x19, our formula should allow at least 18, and probably a few more since "half as powerful" is a first-order approximation. - Perfect komi on 5x5 Go (area scoring) is 25.0 (ie, the first player can kill the whole board), so ''p/25'' is an obvious first-order estimation (likely an underestimation, but that's fine) of how many stones are needed to kill everything, doubling to ''p/12.5'' accounts for Kill-All Go Handicap stones being half as strong, and rounding to the nearest even number (''round_even(p/12.5)'') ensures the maximum option has a whole number for the first-order approximation of its size in terms of 19x19 Normal Go Handicap stones. This variant is only allowed in unrated games. ==== Setup: Classic 17-stone setup ==== This setup is available only on **19×19**. Player 1 is the Defender and Player 2 is the Attacker; there is no choice of roles. The Attacker starts with these 17 stones: * The nine star-points. * The four 3–3 points. * The four 10-2 points. The Defender makes the first ordinary move. ==== Setup: Simple pie ==== This uses the usual **pie rule**: one player prepares the position and the other chooses a side. - Player 1 places any number of Attacker stones on empty intersections, up to ''floor(p/2)'' where ''p'' is the number of points on the board. Placing no stones is allowed. - Player 2 chooses whether to be the Attacker or the Defender. - The Defender makes the first ordinary move. On AP, Player 1 passes to submit an empty setup. If Player 2 chooses the Defender role, they place their first Defender stone as part of that choice. ==== Setup: Generalized Hoctaph's pie ==== Based on **Hoctaph's** proposal on the OGS forums, generalized to all supported board sizes by **Samraku**.(([[https://forums.online-go.com/t/kill-all-go/27365/70|Hoctaph's original proposal]], 21 April 2025.)) - Player 1 chooses two positive whole numbers, **A** and **B**, specifying the sizes of two batches of Attacker stones. - Player 2 chooses who will place the first batch. - That player places **A** Attacker stones on empty intersections. - The player who did **not** place the first batch chooses whether to be the Attacker or the Defender. - The Attacker places **B** more Attacker stones on empty intersections. - The Defender makes the first ordinary move. The batch sizes must satisfy both restrictions: * Neither batch may be more than twice the size of the other. * Their combined size may be at most ''p - 2'' where ''p'' is the number of points on the board. Batch **A** sizes up to ''floor(p/16) * 2'', and batch **B** sizes up to ''floor(p/16)'' are fronted by being selectable via clicking the board. To understand the reasoning behind this number, consider the following: - Batch **B** will be placed by the player who will benefit from said stones, and thus should not be set higher than the minimum number of stones necessary on a given board size to make the game even. But using ''floor(p/25)'' falls a bit short of that (especially on 19x19 where received wisdom is that 17 stones are needed to make the game even), hence the stricter ''floor(p/16)'' which gives reasonable slight overestimations at all board sizes, as intended. - Batch **A** will be placed by a player trying adversarially to make the game even, and thus can be reasonably set much higher than batch **B** if desired, so it maxes out at twice the max for batch **B**. The second batch is placed **after** roles have been chosen. Its positions are not specified in advance. ===== Playing on Abstract Play ===== AP detects pass-alive strings using **Benson's algorithm**, adapted to the game's suicide rules. A position which can be defended successfully with further moves is not necessarily already pass-alive: the Defender must actually establish the required life. The Attacker's automatic win check uses the space remaining around their pass-alive stones. It is very conservative and won't trigger until long after the Defender has clearly lost the game, but it's still an improvement over forcing the Attacker to capture every Defender stone. If you find yourself playing as the Attacker in a game where your opponent is dead lost but refuses to resign, focus on connecting all your stones together while leaving all open areas small enough to not fit a living group inside, which is how you trigger the Attacker's win condition. By default, pass-alive stones are marked once the game ends. The alternative display **Mark pass-alive stones throughout the game** also marks them during play. ===== History and related games ===== Kill-All Go belongs to a family of Go exercises focused on invasion, attack, and survival, including the [[https://senseis.xmp.net/?ShapeGame|Shape Game]]. Sensei's Library describes a version with 17 freely placed Black stones, alongside the conventional fixed arrangement. It reports that 17 was chosen from professional experience as giving White approximately even chances, and notes that the game was scheduled for the March 2010 Insei League on KGS. Thus, the fixed 17-stone setup is one established form, rather than the only way to play.(([[https://senseis.xmp.net/?KillAllGame|Kill-all Game at Sensei's Library]].)) A [[https://forums.online-go.com/t/kill-all-go/27365|discussion and opponent-finding thread]] started by Samraku on the OGS forums in May 2020 documents community play and later experiments with setup rules. Hoctaph's April 2025 proposal was specifically for **9×9**, with up to **five** initial Black stones divided between placements chosen before and after colour selection. AP's generalized version replaces that fixed total with two chosen batch sizes and adds the restrictions described above.(([[https://forums.online-go.com/t/kill-all-go/27365/70|Hoctaph's post of 21 April 2025]].)) Kill-All Go has also attracted mathematical study. Zhujun Zhang's 2019 paper, //A Note on Computational Complexity of Kill-all Go//, proves complexity results for versions using Chinese and Japanese rules. Those results concern the rulesets studied in the paper, rather than specifically AP's implementation.(([[https://arxiv.org/abs/1911.11405|Zhujun Zhang, A Note on Computational Complexity of Kill-all Go]], submitted 26 November 2019.)) ===== Links ===== * [[https://senseis.xmp.net/?KillAllGame|Kill-all Game at Sensei's Library]] * [[https://senseis.xmp.net/?Pieboxing|Pieboxing at Sensei's Library]] * [[https://senseis.xmp.net/?ShapeGame|Shape Game at Sensei's Library]] * [[https://forums.online-go.com/t/kill-all-go/27365|Kill-All Go discussion at the OGS forums]] * [[https://github.com/AbstractPlay/gameslib/blob/develop/src/games/killallgo.ts|Abstract Play implementation]]