Man Linux: Main Page and Category List


       atom4 - two-player color puzzle game


       atom4 [ -a n ] [ -d level ] [ -mt | -mx ]
       atom4 -h


       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,
       atom4 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
       controlled way.

       atom4 supports both a curses-based text interface and an X11 interface.
       The interface can be selected with the -m  option.  By  default,  atom4
       launches the X11 interface if the $DISPLAY environment 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.

       -h     Shows a summary of command-line options that atom4 takes.

       -mt    Selects the  text  (curses-based)  interface.  The  curses-based
              interface  requires a terminal with color capabilities; at least
              9 colors are needed.

       -mx    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

       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 to quit.


       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

       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 mouse button.

       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:

        - black
        - red, green, and blue (the primary, or "additive", colors)
        - yellow, cyan, and purple (the secondary, or "subtractive", colors)
        - white

       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:

                             red   yellow
                                \ /
                        purple --*-- green
                                / \
                            blue   cyan

       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 purple.

       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  "additive

       6)  Similarly,  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

       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 blacks.

       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 significantly.

       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 <>.


       Copyright (C) 2002-2003 by Hwei Sheng Teoh <>

       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 ANY WARRANTIES.