Check out Smess, our featured variant for February, 2025.


[ Help | Earliest Comments | Latest Comments ]
[ List All Subjects of Discussion | Create New Subject of Discussion ]
[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]

Comments by thomas

Earlier Reverse Order LaterLatest
Chess. The rules of chess. (8x8, Cells: 64) (Recognized!)[All Comments] [Add Comment or Rating]
Thomas wrote on Mon, Sep 18, 2006 08:22 PM UTC:
Hey Tony! One could also call the knight a 'horsey', but we don't.

2007-2008 Chess Variants Design Contest. Chess variant inventors gather round! We're doing it again! Exact nature of contest to be determined with YOUR help!![All Comments] [Add Comment or Rating]
Thomas wrote on Thu, Aug 2, 2007 01:23 PM UTC:

I propose the theme of a draw- and tie-free chess.

If the mechanism of a game allows repetitions, one needs a rule to deal with them, and players have to keep track of the positions occuring in the game. This is not always easy. In an endgame with Queens, e.g., one might chase the opponent's King several times round the board. Then have fun remembering all the previous positions, not to overlook a repetition.

Also, if repetitions are possible, this usually means that the game can last an exponential number of moves. As an upper bound for the game length, one can count all legal positions with the given pieces on the board (with pawns remaining where they are), and the number is usually gigantic. To break such ties, the artificial and ugly 50-moves-rule (or something similar) is needed.

So I find it desirable to invent a Chess variant with a playing mechanism which can't lead to repetitions. A simple example would be that pieces can move only forward, as in the game of Breakthrough.


Thomas wrote on Sat, Aug 4, 2007 01:42 PM UTC:

Another theme idea: having unequal armies on the light and the dark squares.

A player might have pieces of type A, which can move only on light squares, and pieces of type B, which move on the dark squares.

The opponent may have the same types and numbers of pieces, so that the armies are equal over all. The opponent might also have his A-pieces on light and B-pieces on dark squares, so that the A-pieces fight each other, and also the B pieces, but an A piece can never meet a B-piece. It's also possible to make the setup vice versa, so that on any square color the A-pieces of one side fight the B-pieces of the other.


Thomas wrote on Sun, Nov 2, 2008 01:38 PM UTC:
Is this contest still ongoing, or is it already over, or has it died silently?

Dipole Chess. A cross between Chess and the game Dipole by Mark Steere. (8x8, Cells: 64) [All Comments] [Add Comment or Rating]
Thomas wrote on Sat, Nov 8, 2008 03:14 PM UTC:Good ★★★★
This variant I find very interesting.

Additional idea: let the pieces make a non-capturing move laterally or
backwards with demoting the piece to the next lower kind, e.g. in the
order queen -> rook -> bishop -> knight -> pawn. This is buying more time,
and also combinations may include the demotion of a piece to alter its way
of moving.

The king is maybe too vulnerable in these variants. A defended Queen on
any of the three squares in front of the King mates, and also a defended
rook directly in front of it. Three pawns can also mate.

One might add the rule that the king may also move laterally or backwards
when attacked. I think this does not lead to cycles, but if there are
Rooks and Nightriders, a cycle is possible:
white: King e2, Rook e1
black: King e5, Nightrider f7
1. Kd3+ Kd6+
2. Ke2  Ke5

Thomas wrote on Sat, Nov 8, 2008 07:09 PM UTC:
I forgot one thing: if the pieces can move backwards and demote, one must
change the pawn-promotion, or the game is no longer cycle-free. One may
e.g. promote pawns to a 'lazy queen', which is not moving to empty
squares but only capturing like a queen (or maybe a lazy amazon,
capturing
like a knight also).

Thomas wrote on Sun, Nov 9, 2008 03:38 PM UTC:
1. sorry, I forgot to enter my name in the last post

2. A lazy queen (or amazon) captures like a queen (the amazon like a
knight also) but cannot move to an empty square.

Somehow I like the idea that demoting ends with some 'lazy' piece,
which
only captures. But there are other possibilities too, of course.

If this were a modification or a different game, depends on the pont of
view, I think. I just want to give some ideas, maybe leading to a new
game. The coding of demotion can be done so (shown with a bishop which
demotes to knight):


(define slide                ;;normal sliding move
  ( $1 (while empty? add $1)
    (verify enemy?) add
  )
)
(define slidebishop
  ( $1
    (while empty? (add Knight) $1) ;; demote on empty square
    (verify enemy?) add            ;; dont demote when capturing
  )
)

....

  (piece
     (name Bishop)
     (image White '...' Black '...')
     (moves
        (slide nw) (slide ne)
        (slidebishop sw) (slidebishop se)
     )
  )

Game Courier Developer's Guide. Learn how to design and program Chess variants for Game Courier.[All Comments] [Add Comment or Rating]
Thomas wrote on Fri, Nov 28, 2008 05:18 PM UTC:
I have written two presets:

http://play.chessvariants.org/pbm/play.php?game%3DBreakthrough%26settings%3DBreakthrough

http://play.chessvariants.org/pbm/play.php?game%3DSquirrel+Chess%26settings%3DSquirrelChess1


May I ask some questions about Game Courier / GAME code:

1. I observe that I can't enter comments starting with '//' in the
Pre-Game part. I wrote:

// comment
setsystem maxmove 2;
...

And I receive an error message:

Syntax Error on line 0
// comment
setsystem maxmove 2 is not a valid expression, because // is not a
recognized piece, coordinate, command, or subroutine.

Why is this?


2. What happens if I edit and save a preset if there are already players
using it, e.g. when I remove a bug or add notification for mate /
stalemate. Can this cause problems?


3. What happens if an operator needs more operands than are on the stack,
or if there are two or more values left on the stack after evaluating an
expression, or if an operator is given an operand with a senseless type,
e.g.:
  set ep false;
  ...
  if equal where #ep 0 1 a3;
    ...
  endif;

Are there rules how such cases are handled, or does the program behave in
an undefined way?


4. am I right that a board position (like 'a4') is of type 'string',
and also a piece type like 'n' or 'K'? Or are these special types on
their own?

Thomas wrote on Sat, Nov 29, 2008 11:04 AM UTC:
Thanks for your explanations!

I have suspected the problem with ep == false. I should correct my
Squirrel Chess preset due to this.

Atomic chess. Pieces explode when captured. (8x8, Cells: 64) [All Comments] [Add Comment or Rating]
Thomas wrote on Wed, Dec 3, 2008 02:53 PM UTC:
I have read about a different variant of Atomic Chess in the book
'Alternatives Schach' by Lars Döring (german):

After a capture, the capturing piece and all pieces on the squares
orthogonally or diagonally adjacent to it are also removed, but with the
exception of the kings. A king may capture without being removed, and is
not removed when on a square adjacent to the capture.

A move may never put the King of the moving side into attack, neither
before nor after removing of pieces. So a king may never capture a
defended piece, even if the defending piece would also be removed.

In this variant, the initial advantage of white is much smaller.

Game Courier Developer's Guide. Learn how to design and program Chess variants for Game Courier.[All Comments] [Add Comment or Rating]
Thomas wrote on Fri, Dec 12, 2008 12:51 PM UTC:
I want to restrict user input so:

setsystem maxmove 2;
ban commands allmoves;
allow moves 1 moves 2 captures 1 promotions 2;

The purpose is to allow entering a generalized castling move, examples:

e1-d1;a1-e1
e1-b1;a1-d1

But then the user might enter something like c1-f7;d2-d4 , the first part
being illegal. The preset should reject this move, but it is difficult,
because the system variables only reflect the (legal) second part d2-d4 :

old = @
origin = d2
dest = d4
moved = P

Is it possible to get info about the first move-part, or at least the info
that the user has entered two parts?

Gess. A Chess variant played on a Go board where pieces are collections of go stones. (18x18, Cells: 324) [All Comments] [Add Comment or Rating]
Thomas wrote on Fri, Dec 19, 2008 12:51 PM UTC:
1. The description doesn't make it clear that the center of a piece can be
on one of the side rows (a, t, 1, 20). This means that Black may start the
game with the move a3-b3. See
http://www.archim.org.uk/eureka/53/gess.html.

2. I don't know if it is allowed to move the center of a piece onto a
side row. Is black allowed to start a game with r3-t3, capturing four of
his stones? Or can a piece move only so far as to move the direction stone
onto a side row?

Game Courier Developer's Guide. Learn how to design and program Chess variants for Game Courier.[All Comments] [Add Comment or Rating]
Thomas wrote on Fri, Dec 19, 2008 03:20 PM UTC:
Sorry I have to pester you again:

I'm writing a preset for Wildebeest Chess.
Now I have a strange bug in the code which I can't understand. I have
boiled it down to the following little procedure:

sub test;
  my i;
  set i origin;
  do:
    if != space #i @:
      die X.;
    endif;
    set i where #i 0 1;
  loop until == #i dest;
endsub;

This is defined in the pre-Game part. In the Post-Move-1 part I call the
procedure:

gosub test;

Then I enter a pawn move, e.g. f2-f5 and I get the error message
'misplaced endsub' at the line number where the procedure 'test' ends.
Why is this?

Thomas wrote on Fri, Dec 19, 2008 05:43 PM UTC:
The link to the preset:
http://play.chessvariants.org/pbm/play.php?game%3DWildebeest+Chess%26settings%3DWildebeest+Chess+with+rules

The error occurs in the procedure 'checkkcastl' in the pre-game part.
Near the end there is a do-until loop that checks if the king crosses
attacked squares. This loop seems to cause the error.

The error occurs when legally castling with the king over 2 or more
squares (entered as a king's move, e.g. f1-h1). Then the said loop is not
ended by the 'die' command but by the until-condition, and the error
message is produced.

If I castle over an attacked square, the 'die' ends the loop, and it
works correctly.

Thomas wrote on Sat, Dec 20, 2008 11:17 AM UTC:
Thank you!
I'll look at the chess2 file and see how I can use it.

I started to program Wildebeest Chess because it is a good practice in
GAME Code and because there is not yet a preset with rule enforcement (at
least I have found none).

Thomas wrote on Fri, Jan 2, 2009 11:27 AM UTC:
I have looked at 'chess2.txt' as you recommended, and rewrote my
Squirrel
Chess preset to use it (because this was easier than Wildebeest Chess).
Also I have experimented and looked at some other presets.
Thereby I have found some bugs:

The operator sign calculates the sign of the operand decremented by 1.

In the preset for orthodox chess (and maybe in some others too) it is not
tested if a rook to castle with has been captured. One should add
  unsetflag dest;
at an appropriate place in the code.

In the file 'chess2.txt':

In function p: checkatwostep must have the arguments 0 -1 0 -1;

Functions p and P allow captures to occupied squares only (except
enpassant). Thus they are not suited to test if an empty square is
attacked, and the subroutine 'castle' doesn't work correctly. It calls
'checked' to test for castling out of or through check, which in turn
uses p and P.

In sub stalemated: If a royal pawn captures en-passant, the captured pawn
isn't removed. (also, 'store' and 'restore' are called more often
than necessary.)

In sub 'enpassant': The line
  set #pe join filename #to filename #from;
should be replaced by
  local pe;
  set pe join filename #to rankname #from;

In sub castle: near the end there should be 'subargs' instead of
'subarg'.



Also I have some questions:

Is there a difference between numbers and strings, or are numbers just
strings consisting of digits only?
In the following code:
set wpr 2;
if == rankname #from #wpr: ... endif;
either rankname gives a number if the ranks are labelled with numbers, or
numbers are strings, or numbers are implicitly converted to strings (or
vice versa).

Wouldn't it be reasonable to check the legality of the last move only?
In
all presets I have seen the legality of every move is checked, but if a
preset rejects all illegal moves, all moves except maybe the last must be
legal, if I don't overlook something.


BTW: I plan to write a 'chess3.txt' include file which is more flexible
and general, first to practice writing GAME Code and second because it
might be of use for you and others. Before I begin, I should know if it
can be a mistake to thest the legality of the last move only. This
would improve efficiency in long games.

Thomas wrote on Sun, Jan 4, 2009 03:10 PM UTC:
Thank you for the fixes and explanations. But you have overlooked that in
sub 'enpassant' there is twice 'filename' used.
It should be 'filename #to rankname #from'.

To check if any piece or any empty square is attacked, one could use the
following subroutine:


// This subroutine checks whether 'square' is attacked by the given
side:

sub attacked square bywhite:
  local from piece pawn pdir;
  if #bywhite:
    def enemies onlyupper;
    set pawn P;
    set pdir 1;
  else:
    def enemies onlylower;
    set pawn p;
    set pdir -1;
  endif;
  for (from piece) fn enemies:
    if == #piece #pawn:
      if checkaleap #from #square 1 #pdir or
         checkaleap #from #square -1 #pdir:
        return #from;
      endif;
    elseif fn #piece #from #square:
      return #from;
    endif;
  next;
  return false;
endsub;

Thomas wrote on Fri, Jan 9, 2009 06:10 PM UTC:
Here I am again with one more bug ;)

In file chess2.txt the 'stalemated' subroutine doesn't recognise en
passant captures. I tested this with my Squirrel chess preset. In a
position where the only legal move is an ep capture, it says
'stalemate'.

By experimenting I found that it should work if in the functions P and p
'#ep' is replaced by 'var ep'.

It seems that '#' inside a function inserts the value of the variable at
the time the function is defined, while 'var' is reading the value when
the function is executed. But this seems not to be so for subroutines.
Here # and var have the same effect (at least I haven't observed a
difference yet).

Wildebeest Chess. Variant on an 10 by 11 board with extra jumping pieces. (11x10, Cells: 110) (Recognized!)[All Comments] [Add Comment or Rating]
Thomas wrote on Sat, Jan 10, 2009 05:19 PM UTC:
One might add a one-space orthogonal step to the Knight (Wazir Knight) and
a one-space diagonal step to the Camel (Wizard from Omega Chess), and both
moves to the Wildebeest (Wildebeest plus King). This preserves the symmetry
between the riding and leaping pieces, and now the King is integrated into
it, having the moves which are shared by Queen and Wildebeest.

And the stronger pieces can be seen as a second advantage, if one feels
that the standard pieces are relatively weak for the big board.

Unirexal Chess. Only white has a king.[All Comments] [Add Comment or Rating]
Thomas wrote on Tue, Jan 13, 2009 06:11 PM UTC:
I suggest to use a pie rule: The side without king is made stronger (like
in the first game where black has a queen for the king), and one player
sets the maximal number of moves to mate, then the other player chooses a
side.

Game Courier Developer's Guide. Learn how to design and program Chess variants for Game Courier.[All Comments] [Add Comment or Rating]
Thomas wrote on Fri, Jan 16, 2009 11:24 AM UTC:
I'm done with four presets yet. They are automated and with
rule-enforcement and detect the end of a game (but not by threefold
repetition or 50 moves rule). I have tested them and they seem to be
bugfree. Maybe you want to include them into the 'Games for Game
Courier' list.

Breakthrough:
http://play.chessvariants.org/pbm/play.php?game%3DBreakthrough%26settings%3DBreakthrough

Wildebeest Chess:
http://play.chessvariants.org/pbm/play.php?game%3DWildebeest+Chess%26settings%3DWildebeest+Chess+with+rules

Gess:
http://play.chessvariants.org/pbm/play.php?game%3DGess%26settings%3DGess+with+rules
Playing gess is a nuisance without an automated preset, so I wrote one. To
make the point-and-click movement usable, the preset expects that the
origin and destination coordinates of the direction stone are entered.
This is uncommon, normally a move is denoted by the coordinates of the
center of a piece (= 3x3 area containing a stone in the direction of
movement).

Squirrel Chess:
http://play.chessvariants.org/pbm/play.php?game%3DSquirrel+Chess%26settings%3DSquirrelChess1
This variant I have made up myself. The difference to orthochess is only
the 9x9 board and every side has an extra pawn and a squirrel which leaps
two squares orthogonally or diagonally or like a knight (as described in
the piececlopedia). Pawns promote to squirrels also.


BTW: how can I uncheck 'exclude pieces not in setup' when editing a
preset? Somehow it doesn't work.

Is it possible to select some pieces out of a piece set and assign them 
names entirely of upper- or lowercase letters, so that 'isupper' and
'islower' can be used to identify pieces of a side?

Thomas wrote on Sat, Jan 17, 2009 10:53 AM UTC:
This is good to know. But can someone please tell me how it is done?

I can't log in. I just went to the 'Games for Game Courier' page,
clicked 'edit' at the bottom right of the page (is this the right way to
add more presets, BTW?), and after entering my username and PW, the login
window just appeared again with my PW deleted. I used the same data as
when saving a preset.

Maybe it's because I'm not a member nor a contributor yet. What should I
do next?

22 comments displayed

Earlier Reverse Order LaterLatest

Permalink to the exact comments currently displayed.