Full Report for Brood by Michael Amundsen

Full Report for Brood by Michael Amundsen

Brood is a polyhex-matching game for two players – Black and White – played on an initially empty hex board.

Generated at 2023-06-15, 21:51 from 1000 logged games.

Rules

Representative game (in the sense of being of mean length). Wherever you see the 'representative game' referred to in later sections, this is it!

Definitions

  1. A group is a stone along with all stones one can reach from it through a series of steps onto adjacent stones of the same color.
    1. The size of a group is the number of stones in it.
  2. A brood is a group along with all other groups of identical color, size and shape. Shapes are considered identical across reflection and rotational symmetries.
    1. The size of a brood is the number of groups in it.
    2. The order of a brood is the size of the groups in it.
    3. The mass of a brood is the number of stones in it (its size times its order).

Play

On the very first turn of the game, Black places one stone of their color on any hex.

After, that – starting with White – take turns doing one of the following: Pass or Place two stones of your color on empty hexes.

When the players pass consecutively, the winner is the player with the higher score. Ties are not possible.

Scoring

For each of your broods, you score its mass multiplied by the lesser of its size and its order.

For example, if a brood consists of 2 groups of size 3, it is worth 12 points. Its order is 3, its size is 2 and its mass is 6. Since 2 is smaller than 3, the brood is worth 6*2 = 12.

Miscellaneous

General comments:

Play: Combinatorial,Random Setup

Family: Combinatorial 2022

Mechanism(s): Connection,Territory,Scoring

Components: Board

Level: Advanced

BGG Stats

BGG EntryBrood
BGG Rating8
#Voters2
SD1
BGG Weight0
#Voters0
Year2022

BGG Ratings and Comments

UserRatingComment
alekerickson9
RichardIngram7

Kolomogorov Complexity Analysis

Size (bytes)29714
Reference Size10673
Ratio2.78

Ai Ai calculates the size of the implementation, and compares it to the Ai Ai implementation of the simplest possible game (which just fills the board). Note that this estimate may include some graphics and heuristics code as well as the game logic. See the wikipedia entry for more details.

Playout Complexity Estimate

Playouts per second59976.49 (16.67µs/playout)
Reference Size576867.61 (1.73µs/playout)
Ratio (low is good)9.62

Tavener complexity: the heat generated by playing every possible instance of a game with a perfectly efficient programme. Since this is not possible to calculate, Ai Ai calculates the number of random playouts per second and compares it to the fastest non-trivial Ai Ai game (Connect 4). This ratio gives a practical indication of how complex the game is. Combine this with the computational state space, and you can get an idea of how strong the default (MCTS-based) AI will be.

State Space Complexity

% new positions/bucket

State Space Complexity77276965 
State Space Complexity bounds64544255 < 77276965 < ∞ 
State Space Complexity (log 10)7.89 
State Space Complexity bounds (log 10)7.81 <= 7.89 <= ∞ 
Samples1072627 
Confidence0.000: totally unreliable, 100: perfect

State space complexity (where present) is an estimate of the number of distinct game tree reachable through actual play. Over a series of random games, Ai Ai checks each position to see if it is new, or a repeat of a previous position and keeps a total for each game. As the number of games increase, the quantity of new positions seen per game decreases. These games are then partitioned into a number of buckets, and if certain conditions are met, Ai Ai treats the number in each bucket as the start of a strictly decreasing geometric sequence and sums it to estimate the total state space. The accuracy is calculated as 1-[end bucket count]/[starting bucklet count]

Playout/Search Speed

LabelIts/sSDNodes/sSDGame lengthSD
Random playout81,8772545,158,30116,112635
search.UCT80,161982623
search.AlphaBeta220,52725,026662

Random: 10 second warmup for the hotspot compiler. 100 trials of 1000ms each.

Other: 100 playouts, means calculated over the first 5 moves only to avoid distortion due to speedup at end of game.

Mirroring Strategies

Rotation (Half turn) lost each game as expected.
Reflection (X axis) lost each game as expected.
Reflection (Y axis) lost each game as expected.
Copy last move lost each game as expected.

Mirroring strategies attempt to copy the previous move. On first move, they will attempt to play in the centre. If neither of these are possible, they will pick a random move. Each entry represents a different form of copying; direct copy, reflection in either the X or Y axis, half-turn rotation.

Heuristic Values

This chart shows the heuristic values thoughout a single representative* game. The orange line shows the difference between player scores. (* Representative, in the sense that it is close to the mean game length.)

Win % By Player (Bias)

1: Black win %47.20±3.08Includes draws = 50%
2: White win %52.80±3.10Includes draws = 50%
Draw %0.00Percentage of games where all players draw.
Decisive %100.00Percentage of games with a single winner.
Samples1000Quantity of logged games played

Note: that win/loss statistics may vary depending on thinking time (horizon effect, etc.), bad heuristics, bugs, and other factors, so should be taken with a pinch of salt. (Given perfect play, any game of pure skill will always end in the same result.)

Note: Ai Ai differentiates between states where all players draw or win or lose; this is mostly to support cooperative games.

UCT Skill Chains

MatchAIStrong WinsDrawsStrong Losses#GamesStrong Scorep1 Win%Draw%p2 Win%Game Length
0Random         
1UCT (its=2)63103239540.6308 <= 0.6614 <= 0.690865.830.0034.1762.82
8UCT (its=9)63103689990.6013 <= 0.6316 <= 0.661067.970.0032.0363.00
23UCT (its=24)63103359660.6226 <= 0.6532 <= 0.682667.490.0032.5163.15
45UCT (its=46)63103579880.6082 <= 0.6387 <= 0.668065.080.0034.9262.84
61UCT (its=166)63102198500.7119 <= 0.7424 <= 0.770664.710.0035.2962.07
62UCT (its=451)63102468770.6889 <= 0.7195 <= 0.748263.170.0036.8362.38
63UCT (its=1225)63102118420.7190 <= 0.7494 <= 0.777559.860.0040.1462.44
64UCT (its=3330)63101377680.7930 <= 0.8216 <= 0.847152.990.0047.0162.32
65
UCT (its=3330)
507
0
493
1000
0.4760 <= 0.5070 <= 0.5379
54.50
0.00
45.50
62.28

Search for levels ended: time limit reached.

Level of Play: Strong beats Weak 60% of the time (lower bound with 95% confidence).

Draw%, p1 win% and game length may give some indication of trends as AI strength increases.

1st Player Win Ratios by Playing Strength

This chart shows the win(green)/draw(black)/loss(red) percentages, as UCT play strength increases. Note that for most games, the top playing strength show here will be distinctly below human standard.

Complexity

Game length65.71 
Branching factor29.80 
Complexity10^86.92Based on game length and branching factor
Samples1000Quantity of logged games played

Computational complexity (where present) is an estimate of the game tree reachable through actual play. For each game in turn, Ai Ai marks the positions reached in a hashtable, then counts the number of new moves added to the table. Once all moves are applied, it treats this sequence as a geometric progression and calculates the sum as n-> infinity.

Move Classification

Board Size61Quantity of distinct board cells
Distinct actions62Quantity of distinct moves (e.g. "e4") regardless of position in game tree
Good moves17A good move is selected by the AI more than the average
Bad moves45A bad move is selected by the AI less than the average
Response distance%47.10%Distance from move to response / maximum board distance; a low value suggests a game is tactical rather than strategic.
Samples1000Quantity of logged games played

Board Coverage

A mean of 99.21% of board locations were used per game.

Colour and size show the frequency of visits.

Game Length

Game length frequencies.

Mean65.71
Mode[66]
Median66.0

Change in Material Per Turn

Mean change in material/round1.61Complete round of play (all players)

This chart is based on a single representative* playout, and gives a feel for the change in material over the course of a game. (* Representative in the sense that it is close to the mean length.)

Actions/turn

Table: branching factor per turn, based on a single representative* game. (* Representative in the sense that it is close to the mean game length.)

Action Types per Turn

This chart is based on a single representative* game, and gives a feel for the types of moves available throughout that game. (* Representative in the sense that it is close to the mean game length.)

Red: removal, Black: move, Blue: Add, Grey: pass, Purple: swap sides, Brown: other.

Openings

MovesAnimation
f5,g4,e9
c4,i3,d8

Opening Heatmap

Colour shows the success ratio of this play over the first 10moves; black < red < yellow < white.

Size shows the frequency this move is played.

Unique Positions Reachable at Depth

01234
16137211116913242821

Note: most games do not take board rotation and reflection into consideration.
Multi-part turns could be treated as the same or different depth depending on the implementation.
Counts to depth N include all moves reachable at lower depths.
Inaccuracies may also exist due to hash collisions, but Ai Ai uses 64-bit hashes so these will be a very small fraction of a percentage point.

Shortest Game(s)

No solutions found to depth 4.

Puzzles

PuzzleSolution

White to win in 8 moves

White to win in 8 moves

White to win in 8 moves

White to win in 8 moves

White to win in 8 moves

White to win in 8 moves

White to win in 5 moves

White to win in 5 moves

Black to win in 5 moves

Black to win in 5 moves

Black to win in 5 moves

White to win in 5 moves

Selection criteria: first move must be unique, and not forced to avoid losing. Beyond that, Puzzles will be rated by the product of [total move]/[best moves] at each step, and the best puzzles selected.