(
    {
      name = "Ataxx";
      class = "AtaxxGame";
      viewDelegate = "WallGameViewDelegate";
      aiTypes = ( 
                  {name="Easy"; class="AtaxxAI"; params={depth=1;}; },
                  {name="Medium"; class="AtaxxAI"; params={depth=2;}; },
                  {name="Hard"; class="AtaxxAI"; params={depth=3; useThreads=1; }; },
                  {name="Very Hard"; class="AtaxxAI"; params={depth=4; useThreads=1;}; },
                );
      variations = (
        {name="Default"; params={rows=7; cols=7;
                                 positions = (
                                   (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                 ); }; },
        {name="Random"; params={rows=7; cols=7; randomWalls={count=8; symmetry=none;};
                                  positions = (
                                   (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                  ); }; },
        {name="Random-V Sym"; params={rows=7; cols=7; randomWalls={count=10; symmetry=horizontal;};
                                  positions = (
                                   (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                  ); }; },
        {name="Random-Full Sym"; params={rows=7; cols=7; randomWalls={count=12; symmetry=both;};
                                  positions = (
                                   (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                  ); }; },
        {name="Cross"; params={rows=7; cols=7;
                                 positions = (
                                   (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                   (3,3,-1), (3,2,-1), (3,4,-1), (2,3,-1), (4,3,-1),
                                 ); }; },
        {name="Diamond"; params={rows=7; cols=7;
                                 positions = (
                                   (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                   (3,5,-1), (3,1,-1), (5,3,-1), (1,3,-1),
                                   (4,4,-1), (4,2,-1), (2,4,-1), (2,2,-1),
                                 ); }; },
        {name="Bridge"; params={rows=7; cols=7;
                                 positions = (
                                   (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                   (3,0,-1), (3,1,-1), (3,2,-1), (3,4,-1), (3,5,-1), (3,6,-1),
                                 ); }; },
        {name="Quadrants"; params={rows=7; cols=7;
                                   positions = (
                                     (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                     (3,0,-1), (3,1,-1), (3,2,-1), (3,4,-1), (3,5,-1), (3,6,-1),
                                     (0,3,-1), (1,3,-1), (2,3,-1), (4,3,-1), (5,3,-1), (6,3,-1),
                                   ); }; },
        {name="Moat"; params={rows=7; cols=7;
                                   positions = (
                                     (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                     (1,1,-1), (1,2,-1), (1,3,-1), (1,4,-1), (1,5,-1), 
                                     (5,1,-1), (5,2,-1), (5,3,-1), (5,4,-1), (5,5,-1),
                                     (1,1,-1), (2,1,-1), (3,1,-1), (4,1,-1), (5,1,-1),
                                     (1,5,-1), (2,5,-1), (3,5,-1), (4,5,-1), (5,5,-1),
                                   ); }; },
        {name="Courtyard"; params={rows=7; cols=7;
                                   positions = (
                                     (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                     (1,1,-1), (1,2,-1), (1,4,-1), (1,5,-1), 
                                     (5,1,-1), (5,2,-1), (5,4,-1), (5,5,-1),
                                     (1,1,-1), (2,1,-1), (4,1,-1), (5,1,-1),
                                     (1,5,-1), (2,5,-1), (4,5,-1), (5,5,-1),
                                   ); }; },
        {name="City Streets"; params={rows=7; cols=7;
                                   positions = (
                                     (0,0,2), (6,6,2), (6,0,1), (0,6,1),
                                     (1,1,-1), (1,3,-1), (1,5,-1),  
                                     (3,1,-1), (3,3,-1), (3,5,-1), 
                                     (5,1,-1), (5,3,-1), (5,5,-1),
                                   ); }; },
       {name="X"; params={rows=7; cols=7; 
                          positions = (
                            (0,0,2),  (6,6,2),  (6,0,1),  (0,6,1),
                            (1,1,-1), (2,2,-1), (3,3,-1), (4,4,-1),(5,5,-1),
                            (1,5,-1), (2,4,-1), (4,2,-1), (5,1,-1),
                          ); }; },
       {name="Slash"; params={rows=7; cols=7; 
                          positions = (
                            (0,0,2),  (6,6,2),  (6,0,1),  (0,6,1),
                            (1,1,-1), (2,2,-1), (3,3,-1), (4,4,-1),(5,5,-1),
                          ); }; },
        {name="Arena"; params={rows=7; cols=7; 
                          positions = (
                            (0,0,2), (6,6,2), (6,0,1),  (0,6,1),
                            (0,2,-1),(0,3,-1),(0,4,-1),(6,2,-1),(6,3,-1),(6,4,-1),
                            (2,0,-1),(3,0,-1),(4,0,-1),(2,6,-1),(3,6,-1),(4,6,-1),
                            (1,5,-1),(5,1,-1),(1,1,-1),(5,5,-1),
                          ); }; },
        {name="Fortress"; params={rows=7; cols=7;
                                  positions = (
                                    (0,0,1), (0,1,1), (0,2,1), (0,3,1), (0,4,1), (0,5,1), (0,6,1), (1,3,1),
                                    (6,1,-1),(6,5,-1),(5,1,-1),(5,5,-1),(4,1,-1),(4,2,-1),(4,4,-1),(4,5,-1),
                                    (6,2,2), (6,3,2), (6,4,2), (5,2,2), (5,3,2), (5,4,2),
                                  ); }; },
        {name="8x8 Standard"; params={rows=8; cols=8;
                                      positions = (
                                        (0,0,2), (7,7,2), (7,0,1), (0,7,1)
                                      ); }; },
        {name="8x8 Bridge"; params={rows=8; cols=8;
                                    positions = (
                                      (0,0,2), (7,7,2), (7,0,1), (0,7,1),
                                      (3,0,-1),(3,1,-1),(3,2,-1),(3,5,-1),(3,6,-1),(3,7,-1),
                                      (4,0,-1),(4,1,-1),(4,2,-1),(4,5,-1),(4,6,-1),(4,7,-1),
                                    ); }; },
        {name="8x8 Pillars"; params={rows=8; cols=8;
                                    positions = (
                                      (0,0,2), (7,7,2), (7,0,1), (0,7,1),
                                      (1,1,-1),(1,2,-1),(2,1,-1),(2,2,-1),
                                      (5,1,-1),(5,2,-1),(6,1,-1),(6,2,-1),
                                      (5,5,-1),(5,6,-1),(6,5,-1),(6,6,-1),
                                      (1,5,-1),(1,6,-1),(2,5,-1),(2,6,-1),
                                    ); }; },
        {name="8x8 Rand"; params={rows=8; cols=8; randomWalls={count=10; symmetry=none;};
                                  positions = (
                                   (0,0,2), (7,7,2), (7,0,1), (0,7,1),
                                  ); }; },
        {name="8x8 Rand-V Sym"; params={rows=8; cols=8; randomWalls={count=12; symmetry=horizontal;};
                                  positions = (
                                   (0,0,2), (7,7,2), (7,0,1), (0,7,1),
                                  ); }; },
        {name="8x8 Rand-Full Sym"; params={rows=8; cols=8; randomWalls={count=16; symmetry=both;};
                                  positions = (
                                   (0,0,2), (7,7,2), (7,0,1), (0,7,1),
                                  ); }; },
      );
    },
    {
      name = "Dominion";
      class = "DominionGame";
      aiTypes = ( 
                  {name="Easy"; class="GenericAI"; params={depth=1; }; },
                  {name="Medium"; class="GenericAI"; params={depth=2; }; },
                  {name="Hard"; class="GenericAI"; params={depth=3; useThreads=1;}; },
                );
      variations = (
        {name="Default"; params={rows=8; cols=8;
                                 positions = (
                                   (0,0,2), (7,7,2), (7,0,1), (0,7,1),
                                   (3,3,2), (4,4,2), (3,4,1), (4,3,1),
                                 ); }; },
      );
    },
    {
      name = "Five Field Kono";
      class = "FiveFieldKonoGame";
      aiTypes = ( 
                  {name="Easy"; class="FiveFieldKonoAI"; params={depth=2;}; },
                  {name="Medium"; class="FiveFieldKonoAI"; params={depth=3;}; },
                  {name="Hard"; class="FiveFieldKonoAI"; params={depth=5;}; },
                  {name="Very Hard"; class="FiveFieldKonoAI"; params={depth=7;}; },
                );
    },
    {
      name = "Quad Wrangle";
      class = "QuadWrangleGame";
      viewDelegate = "WallGameViewDelegate";
      aiTypes = ( 
                  {name="Easy"; class="GenericAI"; params={depth=1; }; },
                  {name="Medium"; class="GenericAI"; params={depth=2; }; },
                  {name="Hard"; class="GenericAI"; params={depth=3; }; },
                );
      variations = (
        {name="Default"; params={rows=7; cols=7;
                                 positions = (
                                   (1,0,1),(2,0,1),(3,0,1),(4,0,1),(5,0,1),
                                   (6,1,1),(6,2,1),(6,3,1),(6,4,1),(6,5,1),
                                   (0,1,2),(0,2,2),(0,3,2),(0,4,2),(0,5,2),
                                   (1,6,2),(2,6,2),(3,6,2),(4,6,2),(5,6,2),
                                 ); }; },
      );
   },
   {
      name = "Reversi";
      class = "ReversiGame";
      viewDelegate = "WallGameViewDelegate";
      aiTypes = ( 
                  {name="Easy";      class="ReversiAI"; params={depth=2; }; },
                  {name="Medium";    class="ReversiAI"; params={depth=3; }; },
                  {name="Hard";      class="ReversiAI"; params={depth=4; }; },
                  {name="Very Hard"; class="ReversiAI"; params={depth=5; useThreads=1; }; },
                );
      variations = (
        {name="8x8"; params={rows=8; cols=8; positions=((3,3,2),(4,4,2),(3,4,1),(4,3,1),);}; },
        {name="6x6"; params={rows=6; cols=6; positions=((2,2,2),(3,3,2),(2,3,1),(3,2,1),);}; },
        {name="10x10"; params={rows=10; cols=10; positions=((4,4,2),(5,5,2),(4,5,1),(5,4,1),);}; },
        {name="Annexation"; params={rows=10; cols=10; 
                                    // need to update AI since there are no "corners"?
                                    positions=((4,4,2),(5,5,2),(4,5,1),(5,4,1),
                                               (0,0,-1),(0,1,-1),(0,2,-1),(1,0,-1),(1,1,-1),(1,2,-1),(2,0,-1),(2,1,-1),(2,2,-1),
                                               (7,0,-1),(7,1,-1),(7,2,-1),(8,0,-1),(8,1,-1),(8,2,-1),(9,0,-1),(9,1,-1),(9,2,-1),
                                               (7,7,-1),(7,8,-1),(7,9,-1),(8,7,-1),(8,8,-1),(8,9,-1),(9,7,-1),(9,8,-1),(9,9,-1),
                                               (0,7,-1),(0,8,-1),(0,9,-1),(1,7,-1),(1,8,-1),(1,9,-1),(2,7,-1),(2,8,-1),(2,9,-1),
                                               );}; },
      );
    },
    {
      name = "Checkers";
      class = "CheckersGame";
      viewDelegate = "CheckersViewDelegate";
      viewDelegateParams = {alternateCellColorComponents = "0.2 0.8 0.2";};
      aiTypes = ( 
                  {name="Easy"; class="CheckersAI"; params={depth=2; regWeight=2; kingWeight=3;}; },
                  {name="Medium"; class="CheckersAI"; params={depth=3; regWeight=2; kingWeight=3;}; },
                  {name="Hard"; class="CheckersAI"; params={depth=5; regWeight=2; kingWeight=3; }; },
                  {name="Very Hard"; class="CheckersAI"; params={depth=8; regWeight=2; kingWeight=3; useThreads=1; }; },
      );
      variations = (
        {name="8x8"; params={rows=8; cols=8;}; },
        {name="10x10"; params={rows=10; cols=10;}; },
      );
    },
   {
      name = "Gomoku";
      class = "GomokuGame";
      aiTypes = ( 
                  {name="Easy"; class="GomokuAI"; params={depth=1;}; },
                  {name="Hard"; class="GomokuAI"; params={depth=2; useThreads=1; }; },
                );
      variations = (
        {name="8x8"; params={rows=8; cols=8;}; },
        {name="10x10"; params={rows=10; cols=10;}; },
        {name="12x12"; params={rows=12; cols=12;}; },
      );
    },
    {
      name = "Connect Four";
      class = "ConnectFourGame";
      aiTypes = ( 
                  {name="Easy"; class="ConnectFourAI"; params={depth=2;}; },
                  {name="Medium"; class="ConnectFourAI"; params={depth=3;}; },
                  {name="Hard"; class="ConnectFourAI"; params={depth=4; }; },
                  {name="Very Hard"; class="ConnectFourAI"; params={depth=5; useThreads=1; }; },
                );
      variations = (
        {name="6x7"; params={rows=6; cols=7;}; },
      );
    },
    {
      name = "Gravity";
      class = "GravityGame";
      viewDelegate = "GravityViewDelegate";
      aiTypes = ( 
                  {name="Easy";   class="GravityAI"; params={depth=1;}; },
                  {name="Medium"; class="GravityAI"; params={depth=2;}; },
                  {name="Hard";   class="GravityAI"; params={depth=3; useThreads=1; }; },
                );
      variations = (
        {name="8x8"; params={rows=8; cols=8;}; },
      );
    },
    {
      name = "Hexapawn";
      class = "HexapawnGame";
      variations = (
        {name="4x4 Standard"; params={rows=4; cols=4; moveForward=1; captureDiagonally=1; }; },
        {name="5x5 Standard"; params={rows=5; cols=5; moveForward=1; captureDiagonally=1; }; },
        {name="6x6 Standard"; params={rows=6; cols=6; moveForward=1; captureDiagonally=1; }; },
        {name="4x4 Berolina"; params={rows=4; cols=4; moveDiagonally=1; captureForward=1; }; },
        {name="5x5 Berolina"; params={rows=5; cols=5; moveDiagonally=1; captureForward=1; }; },
        {name="6x6 Berolina"; params={rows=6; cols=6; moveDiagonally=1; captureForward=1; }; },
        {name="4x4 Berolina+"; params={rows=4; cols=4; moveDiagonally=1; captureForward=1; captureSideways=1; }; },
        {name="5x5 Berolina+"; params={rows=5; cols=5; moveDiagonally=1; captureForward=1; captureSideways=1; }; },
        {name="6x6 Berolina+"; params={rows=6; cols=6; moveDiagonally=1; captureForward=1; captureSideways=1; }; },
      );
      aiTypes = ( 
                  {name="Easy";   class="HexapawnAI"; params={searchDepths=(4,3); }; },
                  {name="Medium"; class="HexapawnAI"; params={searchDepths=(5,4); }; },
                  {name="Hard";   class="HexapawnAI"; params={searchDepths=(6,5); useThreads=1; }; },
                  {name="Very Hard";   class="HexapawnAI"; params={searchDepths=(7,6); useThreads=1; }; },
                );
    },
    {
      name = "Breakthrough";
      class = "HexapawnGame";
      variations = (
        {name="8x8"; params={rows=8; cols=8; fillRows=2; moveForward=1; moveDiagonally=1; captureDiagonally=1; }; },
      );
      aiTypes = ( 
                  {name="Easy"; class="BreakthroughAI"; params={depth=1; pieceWeight=40; }; },
                  {name="Medium"; class="BreakthroughAI"; params={depth=2; pieceWeight=40; }; },
                  {name="Hard"; class="BreakthroughAI"; params={depth=3; pieceWeight=40; useThreads=1; }; },
                );
    },
    {
      name = "Orthokon";
      class = "OrthokonGame";
      variations = (
        {name="4x4"; params={rows=4; cols=4; }; },
        {name="5x5"; params={rows=5; cols=5; }; },
        {name="6x6"; params={rows=6; cols=6; }; },
      );
      aiTypes = ( 
                  {name="Easy"; class="GenericAI"; params={depth=3; }; },
                  {name="Medium"; class="GenericAI"; params={depth=4; }; },
                  {name="Hard"; class="GenericAI"; params={depth=5; }; },
                  {name="Very Hard"; class="GenericAI"; params={depth=6; }; },
                );
    },
    {
      name = "Photonic Attack";
      class = "PhotonicAttackGame";
      variations = (
        {name="8x8"; params={rows=8; cols=8;}; },
      );
      aiTypes = ( 
                  {name="Easy"; class="GenericAI"; params={depth=2; }; },
                  {name="Medium"; class="GenericAI"; params={depth=3; }; },
                  {name="Hard"; class="GenericAI"; params={depth=4; }; },
                  {name="Very Hard"; class="GenericAI"; params={depth=5; }; },
                );
    },
    {
      name = "Fission";
      class = "FissionGame";
      variations = (
        {name="Normal"; params={rows=8; cols=8;
                                positions=((1,4,1),(2,3,1),(2,5,1),(3,2,1),(3,4,1),(3,6,1),
                                           (4,1,1),(4,3,1),(4,5,1),(5,2,1),(5,4,1),(6,3,1),
                                           (1,3,2),(2,2,2),(2,4,2),(3,1,2),(3,3,2),(3,5,2),
                                           (4,2,2),(4,4,2),(4,6,2),(5,3,2),(5,5,2),(6,4,2) ); }; },
        {name="Suicide"; params={rows=8; cols=8; suicide=1;
                                positions=((1,4,1),(2,3,1),(2,5,1),(3,2,1),(3,4,1),(3,6,1),
                                           (4,1,1),(4,3,1),(4,5,1),(5,2,1),(5,4,1),(6,3,1),
                                           (1,3,2),(2,2,2),(2,4,2),(3,1,2),(3,3,2),(3,5,2),
                                           (4,2,2),(4,4,2),(4,6,2),(5,3,2),(5,5,2),(6,4,2) ); }; },
        {name="Random"; params={rows=8; cols=8; randomCells=12; }; },
        {name="Suicide Random"; params={rows=8; cols=8; randomCells=12; suicide=1; }; },
      );
      aiTypes = ( 
                  {name="Easy"; class="FissionAI"; params={depth=2; }; },
                  {name="Medium"; class="FissionAI"; params={depth=3; }; },
                  {name="Hard"; class="FissionAI"; params={depth=4; }; },
                );
    },
    {
      name = "Reactor";
      class = "ReactorGame";
      viewDelegate = "ReactorViewDelegate";
      variations = (
        {name="Normal"; params={rows=8; cols=8; p1pieces=13; p2pieces=14; neutrons=4; }; },
      );
      aiTypes = ( 
                  {name="Easy"; class="GenericAI"; params={depth=1; }; },
                  {name="Medium"; class="GenericAI"; params={depth=2; }; },
                  {name="Hard"; class="GenericAI"; params={depth=3; }; },
                  {name="Very Hard"; class="GenericAI"; params={depth=4; }; },
                );
    },
    {
      name = "Bombardment";
      class = "BombardmentGame";
      variations = (
        {name="8x8"; params={rows=8; cols=8; moveForward=1; moveDiagonally=1; fillRows=2;}; },
      );
      aiTypes = ( 
                  {name="Easy"; class="BombardmentAI"; params={depth=1; }; },
                  {name="Medium"; class="BombardmentAI"; params={depth=2; }; },
                  {name="Hard"; class="BombardmentAI"; params={depth=3; }; },
                );
    },
    {
      name = "Tourney";
      class = "TourneyGame";
      viewDelegate = "CheckersViewDelegate";
      variations = (
        {name="8x8"; params={rows=8; cols=8; fillRows=2;}; },
      );
      aiTypes = ( 
                  {name="Easy"; class="TourneyAI"; params={depth=2; }; },
                  {name="Medium"; class="TourneyAI"; params={depth=3; }; },
                  {name="Hard"; class="TourneyAI"; params={depth=5; }; },
                  {name="Very Hard"; class="TourneyAI"; params={depth=7; }; },
      );
    },
    {
      name = "Daggers";
      class = "DaggerGame";
      viewDelegate = "CheckersViewDelegate";
      variations = (
        {name="8x8"; params={rows=8; cols=8; 
                             positions=((1,1,1),(1,2,1),(1,3,1),(1,4,1),(1,5,1),(1,6,1),
                                        (0,2,-1), (0,5,-1),
                                        (6,2,2),(6,3,2),(6,4,2),(6,5,2),
                                        (7,3,-2),(7,4,-2)); }; },
      );
      aiTypes = ( 
                  {name="Easy"; class="DaggerAI"; params={depth=1; }; },
                  {name="Medium"; class="DaggerAI"; params={depth=2; }; },
                  {name="Hard"; class="DaggerAI"; params={depth=3; }; },
                  {name="Very Hard"; class="DaggerAI"; params={depth=4; }; },
      );
    },
    {
      name = "Fianco";
      class = "FiancoGame";
      variations = (
        {name="Default"; params={rows=9; cols=9; 
                                positions=((0,0,1),(0,1,1),(0,2,1),(0,3,1),(0,4,1),(0,5,1),(0,6,1),(0,7,1),(0,8,1),
                                           (8,0,2),(8,1,2),(8,2,2),(8,3,2),(8,4,2),(8,5,2),(8,6,2),(8,7,2),(8,8,2),
                                           (1,1,1),(2,2,1),(3,3,1),(3,5,1),(2,6,1),(1,7,1),
                                           (7,1,2),(6,2,2),(5,3,2),(5,5,2),(6,6,2),(7,7,2),
                                           ); }; },
      );
      aiTypes = ( 
                  {name="Easy"; class="FiancoAI"; params={depth=2; }; },
                  {name="Medium"; class="FiancoAI"; params={depth=3; }; },
                  {name="Hard"; class="FiancoAI"; params={depth=4; useThreads=1;}; },
      );
    },
    {
      name = "Zonesh";
      class = "ZoneshGame";
      viewDelegate = "ZoneshViewDelegate";
      aiTypes = ( 
                  {name="Easy"; class="ZoneshAI"; params={depth=1; }; },
                  {name="Medium"; class="ZoneshAI"; params={depth=2; }; },
                  {name="Hard"; class="ZoneshAI"; params={depth=3; useThreads=1; }; },
                  {name="Very Hard"; class="ZoneshAI"; params={depth=4; useThreads=1; }; },
                );
      variations = (
        {name="6x6"; params={rows=6; cols=6;}; },
        {name="5x5"; params={rows=5; cols=5;}; },
        {name="7x7"; params={rows=7; cols=7;}; },
      );
    },
    {
      name = "Glass Bead";
      class = "GlassBeadGame";
      viewDelegate = "GlassBeadViewDelegate";
      aiTypes = ( 
                  {name="Easy"; class="GenericAI"; params={depth=1; }; },
                  {name="Medium"; class="GenericAI"; params={depth=2; }; },
                  {name="Hard"; class="GenericAI"; params={depth=3; useThreads=1; }; },
                  {name="Very Hard"; class="GenericAI"; params={depth=4; useThreads=1; }; },
                );
      variations = (
        {name="8x8"; params={rows=8; cols=8;}; },
        {name="9x9"; params={rows=9; cols=9;}; },
        {name="10x10"; params={rows=10; cols=10;}; },
      );
    },
    {
      name = "Cats & Dogs";
      class = "CatsAndDogsGame";
      viewDelegate = "CatsAndDogsViewDelegate";
      aiTypes = ( 
                  {name="Easy";   class="CatsAndDogsAI"; params={depth=2; }; },
                  {name="Medium"; class="CatsAndDogsAI"; params={depth=3; useThreads=1; }; },
                  {name="Hard";   class="CatsAndDogsAI"; params={depth=4; useThreads=1; }; },
                );
      variations = (
        {name="8x8"; params={rows=8; cols=8;}; },
      );
    },
    {
      name = "Moray Eels";
      class = "MorayEelsGame";
      aiTypes = ( 
                  {name="Easy"; class="GenericAI"; params={depth=2; }; },
                  {name="Medium"; class="GenericAI"; params={depth=3; }; },
                  {name="Hard"; class="GenericAI"; params={depth=4; }; },
                  {name="Very Hard"; class="GenericAI"; params={depth=5; }; },
                );
      variations = (
        {name="5x7"; params={rows=5; cols=7; positions=((0,0,1),(0,1,1),(0,2,1),(0,4,1),(0,5,1),(0,6,1),
                                                        (4,1,2),(4,5,2));
                                                        };
                                                        },
      );
    },
    {
      name = "Atomic";
      class = "AtomicGame";
      viewDelegate = "AtomicViewDelegate";
      aiTypes = ( 
                  {name="Easy";      class="AtomicAI"; params={depth=1; utilityArray=((60), (40,80), (30, 60, 90)); }; },
                  {name="Medium";    class="AtomicAI"; params={depth=2; utilityArray=((60), (40,80), (30, 60, 90)); }; },
                  {name="Hard";      class="AtomicAI"; params={depth=3; utilityArray=((60), (40,80), (30, 60, 90)); }; },
                  {name="Very Hard"; class="AtomicAI"; params={depth=4; utilityArray=((60), (40,80), (30, 60, 90)); useThreads=1; }; },
                  // current best utilityArray (at 3-ply): ((60), (40,80), (30, 60, 90))
                  // others tested: ((30), (20,30), (10, 20, 30))
                  //                ((60), (35,70), (25, 50, 75)) (tie)
                );
      variations = (
        {name="Default"; params={rows=6; cols=6;};},
      );
    },
    {
      name = "Life";
      class = "LifeGame";
      variations = (
        {name="21x21"; params={rows=21; cols=21; positions=((3,3,1),(3,4,1),(4,3,1),(4,4,1),
                                                            (17,3,1),(17,4,1),(16,3,1),(16,4,1),
                                                            (3,9,1),(4,9,1),(5,9,1),(5,10,1),(4,11,1),
                                                            
                                                            (3,17,2),(3,16,2),(4,17,2),(4,16,2),
                                                            (17,17,2),(17,16,2),(16,17,2),(16,16,2),
                                                            (17,11,2),(16,11,2),(15,11,2),(15,10,2),(16,9,2),
                                                            
                                                            (10,9,1),(10,10,2),(10,11,1),
                                                            (9,3,2),(10,3,1),(11,3,2),
                                                            (9,17,2),(10,17,1),(11,17,2),
                                                            );
                                                            };
        },
        {name="20x20 Random"; params={rows=20; cols=20; player1RandomCells=50; player2RandomCells=52;};
        },
     );
      aiTypes = ( 
                  {name="Easy"; class="LifeAI"; params={depth=1; useThreads=1; }; },
                );
    },
    {
      name = "Diagonals";
      class = "DiagonalsGame";
      aiTypes = ( 
                  {name="Easy";   class="GenericAI"; params={depth=1; }; },
                  {name="Medium"; class="GenericAI"; params={depth=2; }; },
                  {name="Hard";   class="GenericAI"; params={depth=3; }; },
                  {name="Very Hard";   class="GenericAI"; params={depth=4; useThreads=1; }; },
                );
      variations = (
        {name="8x8"; params={rows=8; cols=8;}; },
        {name="6x6"; params={rows=6; cols=6;}; },
        {name="10x10"; params={rows=10; cols=10;}; },
      );
    },
    {
      name = "Tonga";
      class = "TongaGame";
      aiTypes = ( 
                  {name="Easy";   class="GenericAI"; params={depth=1; }; },
                  {name="Hard"; class="GenericAI"; params={depth=2; }; },
                );
      variations = (
        {name="9x9"; params={rows=9; cols=9;}; },
      );
    },
    {
      name = "Think Ahead";
      class = "ThinkAheadGame";
      viewDelegate = "ThinkAheadViewDelegate";
      aiTypes = (
                  {name="Easy";   class="ThinkAheadAI"; params={depths=(2,2,2,2); }; },
                  {name="Medium"; class="ThinkAheadAI"; params={depths=(4,5,6,7); }; },
                  {name="Hard";   class="ThinkAheadAI"; params={depths=(6,8,10,10); }; },
                  {name="Very Hard";   class="ThinkAheadAI"; params={depths=(8,9,10,11); useThreads=1; }; },
                );
    },
    {
      name = "Ambivalence";
      class = "AmbivalenceGame";
      viewDelegate = "WallGameViewDelegate";
      aiTypes = ( 
                  {name="Easy";   class="GenericAI"; params={depth=2; }; },
                  {name="Medium"; class="GenericAI"; params={depth=3; }; },
                  {name="Hard"; class="GenericAI"; params={depth=4; }; },
                );
      variations = (
        {name="6x6"; params={rows=6; cols=6;}; },
        {name="8x8"; params={rows=8; cols=8;}; },
      );
    },
    {
      name = "Sabotage";
      class = "SabotageGame";
      viewDelegate = "SabotageViewDelegate";
      aiTypes = ( 
                  {name="Easy";   class="SabotageAI"; params={depth=2; }; },
                  {name="Medium"; class="SabotageAI"; params={depth=3; }; },
                  {name="Hard"; class="SabotageAI"; params={depth=4; }; },
                );
      variations = (
        {name="Standard"; params={rows=9; cols=13;
                                  p1Goal = (4,1); p2Goal=(4,11);
                                  positions = (
                                    (0,0,2), (0,1,2), (8,0,2), (8,1,2),
                                    (3,2,1), (3,3,1), (5,2,1), (5,3,1), (4,4,1),
                                    (4,6,-3),
                                    (0,11,1), (0,12,1), (8,11,1), (8,12,1),
                                    (3,9,2), (3,10,2), (5,9,2), (5,10,2), (4,8,2),
                                  );}; },
        {name="Reverse Goals"; params={rows=9; cols=13;
                                  p1Goal = (4,11); p2Goal=(4,1);
                                  positions = (
                                    (0,0,2), (0,1,2), (8,0,2), (8,1,2),
                                    (3,2,1), (3,3,1), (5,2,1), (5,3,1), (4,4,1),
                                    (4,6,-3),
                                    (0,11,1), (0,12,1), (8,11,1), (8,12,1),
                                    (3,9,2), (3,10,2), (5,9,2), (5,10,2), (4,8,2),
                                  );}; },
      );
    },
    {
      name = "Fusion";
      class = "FusionGame";
      viewDelegate = "ReactorViewDelegate";
      aiTypes = ( 
                  {name="Easy";   class="GenericAI"; params={depth=2; }; },
                  {name="Medium"; class="GenericAI"; params={depth=3; }; },
                  {name="Hard"; class="GenericAI"; params={depth=4; }; },
                );
      variations = (
        {name="8x8"; params={rows=10; cols=10; protons = 20; positions = ( (4,4,1),(5,5,1),(4,5,2),(5,4,2) );};  },
      );
    },
//    {
//      name = "Diagonals 2";
//      class = "Diagonals2Game";
//      viewDelegate = "WallGameViewDelegate";
//      aiTypes = ( 
//                  {name="Easy";   class="GenericAI"; params={depth=2; }; },
//                  {name="Medium"; class="GenericAI"; params={depth=3; }; },
//                  {name="Hard"; class="GenericAI"; params={depth=4; }; },
//                );
//      variations = (
//        {name="5x10"; params={rows=5; cols=10; 
//                                positions=((0,0,1),(1,0,1),(3,9,2),(4,9,2));
//                              };
//        },
//        {name="8x8"; params={rows=8; cols=8; 
//                                positions=((3,0,1),(4,0,1),(3,7,2),(4,7,2));
//                              };
//        },
//      );
//    },
//    {
//      name = "Nevo";
//      class = "NevoGame";
//      aiTypes = ( 
//                  {name="Easy";   class="NevoAI"; params={depth=2; }; },
//                  {name="Medium"; class="NevoAI"; params={depth=3; }; },
//                  {name="Hard"; class="NevoAI"; params={depth=4; }; },
//                );
//      variations = (
//        {name="7x12"; params={rows=7; cols=12;}; },
//      );
//    },
)
