atom4 - two-player color puzzle game
[ -a n
] [ -d level
] [ -mt
Atom-4 is a two-player color manipulation game played with colored spherical
pieces on a board divided into equilateral triangles. The player who first
makes a row of 4 pieces of the right color wins.
There is an AI mode where you play against the computer. By default,
runs in 2-player mode. Since 2-player mode is controlled from the
same terminal, it can be used as a "practice" mode to acquiant
oneself with the color change rules or to explore strategic possibilities in a
supports both a curses-based text interface and an X11 interface.
The interface can be selected with the -m
option. By default,
launches the X11 interface if the $DISPLAY
variable is set, and the curses-based interface otherwise.
- -a n
- Play against AI player. n must be either 1 or 2,
specifying which player the AI will be.
- -d n
- Set AI player's difficulty level, where n is an
integer from 0 or larger. The default difficulty setting is 2. This
version of Atom-4 uses a real min-max algorithm; higher difficulty
settings are actually much harder unlike in the previous version. However,
be warned that very high difficulty settings will likely be very slow, as
the game tree grows very quickly.
- Shows a summary of command-line options that atom4
- Selects the text (curses-based) interface. The curses-based
interface requires a terminal with color capabilities; at least 9 colors
- Selects the X11 interface. The X11 interface requires an X
display that supports at least 8-bit color. Note that currently,
atom4 will always connect to the X server specified in the
$DISPLAY environment variable.
The text mode interface requires a terminal that supports at least 9 colors.
The game controls are straightforward: the keypad arrow keys move the cursor
around the board, and the Enter key or the Space key will place the piece
being played on the board. The panel on the right shows you which piece is
currently being played. Gameplay proceeds until one of the players win.
You can press q
at any time to quit the game.
After one of the players win, the game will pause. You can either press n
to proceed to the next round, or q
The X11 interface requires an X display which has at least 8-bit color.
Gameplay on the X11 interface is simple: the color wheel in the right panel
shows the order in which pieces are played, as well as the current player
(number in the center). The current piece being played is highlighted in the
color wheel. To play the piece, simply locate your mouse over the desired spot
on the board and click the mouse button.
When it is your turn to play, and your mouse hovers over a legal position where
you can place a piece, the piece you are currently playing will appear under
the mouse cursor. It is not actually placed on the board until you click the
At any time during the game, you may press q
to quit the game.
After one of the players win, press n
to proceed to the next round.
(Adapted from the README file.)
Pieces may be placed only on the vertices of the triangular game board
divisions, and only if touching two other pieces which themselves are adjacent
to each other (i.e., it must form an equilateral triangle with two adjacent
pieces already on the board). Theoretically, the board is unlimited in size;
practically, we limit it to 16 vertices across and 16 rows down.
Pieces have 8 different colors in total, grouped into 4 groups:
- red, green, and blue (the primary, or "additive", colors)
- yellow, cyan, and purple (the secondary, or "subtractive", colors)
Black and white are also called "propagators" (explained below).
The first player plays additive colors, and must make a row of 4 whites. White
is the "goal piece" of the first player. Similarly, the second
player plays subtractive colors, and must make a row of 4 blacks. Black is the
"goal piece" of the second player.
Since neither player can play their goal pieces directly, they need to combine
the colors they play in order to form their goal pieces on the game board,
indirectly. Whenever an additive or subtractive piece is put on the board, it
changes the color of pieces surrounding it. The color changes are illustrated
by the following color wheel:
purple --*-- green
1) If the
neighbouring piece has an adjacent color on the wheel, it does not change. For
example, if red is placed next to yellow or purple, the yellow or purple
remains the same.
2) If the
neighbouring piece has a color 60 degrees away on the wheel, then it changes
to the color in between. For example, if red is placed next to green, the
green turns into a yellow. If a red is placed next to a blue, the blue turns
3) If the
neighbouring piece has the opposite color on the wheel, then it changes to
either white or black, depending on what type of color the new piece is. If
the new piece is an additive piece, the neighbour becomes white; if it is a
subtractive piece, the neighbour becomes black. For example, if a red is
placed next to a cyan, the cyan turns white; but if a cyan is placed next to
the red, the red turns black.
4) If the new
piece is additive and the neighbouring piece is black, then the black changes
to the same color as the new piece. Similarly, if the new piece is subtractive
and the neighbouring piece is white, then the white changes to the same color
as the new piece.
5) If the new
piece is additive and the neighbouring piece is white, then the white does not
change, but the color change effect "propagates" through the white
to the piece behind the white. That piece then changes as though the new piece
had been placed next to it. If it is also white, then the effect continues
propagating in the same direction, in a straight line, until it reaches a
non-white piece, and then changes that non-white piece as though the new piece
was placed next to it. If an empty spot is reached before a non-white piece,
then nothing happens. Because of this effect, white pieces are also called
if the new piece is subtractive and the neighbouring piece is black, the color
change effect propagates in the direction of the black until it reaches a
non-black piece, which then changes as though the new piece had been placed
next to it. Nothing happens if an empty spot is reached before a non-black
piece. Hence, black pieces are also called "subtractive
(Another way to understand the color changes is treat colors as red, green, and
blue combinations. Additive colors always try to "add" themselves to
their neighbours: red + green = yellow (red & green together); red + cyan
(green & blue) = white. Subtractive colors try to remove their complement
color from their neighbours. For example, the complement of yellow (red &
green) is blue; so yellow tries to remove blue from its neighbours. Hence,
when yellow (red & green) is placed next to cyan (green & blue), the
cyan turns green (loses the blue component). Similarly, when cyan (green &
blue) is placed next to white (red & green & blue), it removes its
complement, red, from the white; so the white becomes cyan as well. In other
words, additive colors behave like colored light, whilst subtractive colors
behave like colored paint.)
The initial state of the board consists of two pieces, green and purple, in the
middle of the board, touching each other. The first player then plays a red,
the second player plays a yellow, and then the first player plays a green, and
so on, taking turns, going clockwise around the color wheel. The first person
to make a row of 4 propagators wins.
If the game is played in multiple rounds, the second player may start first on
the second round, using a subtractive piece, and then the first player with
the next color clockwise on the color wheel, and so on. The starting
configuration always consists of two pieces, one 30 degrees counterclockwise
from the starting color on the color wheel, and the other 60 degrees
clockwise; each touching the other in the center of the board.
Notice that in order to get from additive colors to white, the first player must
form secondary colors and then add their complements; but the second player
already plays secondary colors. So the first player can make use of the pieces
played by the second player to make whites, which is faster than building
whites from scratch. Similarly, the second player plays subtractive pieces and
must first form primary colors and then add the complements to make black; but
the first player already plays primary colors, which can be exploited to make
This also means that when playing a piece, one should be careful not to give too
much advantage to the other player by providing material to make propagators
(black or white).
Propagators (blacks or whites) are useful for changing colors of pieces already
blocked from direct access because they are surrounded by other pieces. Using
propagators, you can create more propagators from such "buried"
pieces. Strategic positioning of propagators that allow you to reach these
"internal" pieces is key to winning the game.
Since it is relatively easy for one's opponent to prevent one from winning by
changing the color of a piece intended to be the 4th propagator in the row of
4, a good strategy is to devise a way to have at least two different pieces
that can serve as a 4th piece in the row. Another good strategy is to bury the
prospective 4th piece with other non-essential pieces so that the opponent
cannot easily reach it, and have multiple propagator paths to it. Then if the
opponent blocks one propagator path, another one is available to reach it.
It is very useful to anticipate the color of one's subsequent piece, and plan
accordingly. For example, if the first player is playing a red, and there are
no cyans around, it is useful to place the red next to blue pieces, because
they form purple which can be complemented by the green on the next turn. If
they are placed next to green pieces, the result is yellow, which cannot be
used until 2 turns later.
The original 2-color version of the game was developed in December 2002. It was
based on much simpler rules (basically, each player directly plays his goal
piece), but because of the very small initial state space and the proximity of
winning states, one player always had the advantage. Several different
starting configurations, including randomized starting states, were tried in
an attempt to balance the game, but with limited results.
Because of these limitations, more elaborate versions of the game were sought.
The current 8-color version was first introduced in February 2003. Its main
motivation was to postpone winning states until the state space has grown
A min-max algorithm with alpha/beta pruning was introduced to the AI player in
April 2003. This replaced the previous, more limited algorithm which only
performed well at certain search depths.
The "4" in the name "Atom-4" refers obviously to the goal of
making the 4-in-a-row. The "atom" part refers to the similarity to
atoms forming into a crystal lattice: you can't just stick an atom anywhere in
a crystal lattice; it must fit into a "stable" position (in this
case, touching two other adjacent "atoms" already on the board).
Also, atoms don't just stick together; chemical reactions (color changes)
happen when they come together, and some chemical changes have far-reaching
effects (color change propagating over whites and blacks).
The game concept of Atom-4, the design and implementation of the software
version of the game, and the graphics used by the game, were all done by Hwei
Sheng Teoh <email@example.com>.
Copyright (C) 2002-2003 by Hwei Sheng Teoh <firstname.lastname@example.org>
This is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version without