gdritter repos documents / e78291b
Lots of work on 4d chess Getty Ritter 7 years ago
1 changed file(s) with 261 addition(s) and 0 deletion(s). Collapse all Expand all
1 Back when I was an undergrad, I designed a family of four-dimensional
2 chess variants. I have no idea how they play: I have literally never
3 convinced another human being to play them with me, in part because I
4 only ever implemented them as buggy software, and playing them with
5 analog equipment is tedious and error-prone. But still, it seems like
6 a shame to let the idea languish, so I'm going to describe my approach
7 here, in hopes that it provides at least passing interest.
8
9 ## The "Board"
10
11 There's a trick to visualizing and working with discrete chunks of
12 higher-dimensional spaces: you can always look at an _n_-dimensional
13 space with _k_ discrete chunks as _k_ instances of an _n-1_-dimensional
14 space. A basic example: a three-dimensional space, divided into
15 three discrete chunks, can be displayed as three two-dimensional spaces:
16
17 [image here]
18
19 This obscures the connectivity of the space a bit: if we're talking about
20 a 3D game in which a token can move one space at a time, then a token here
21
22 [image]
23
24 could, in one 'turn', move to any of these places:
25
26 [image]
27
28 It does mean that our visual is a bit misleading: it looks like the
29 piece is 'hopping' from one 'square' to the next, but the squares here
30 are a fiction to make it easier to see every part of a 3d space on a 2d
31 web page. It'd be like having a dynamic map of each floor of a building
32 set next to each other:
33
34 [image]
35
36 A person going upstairs here, viewed on a 2D map like this, would "jump"
37 from one map to the next, in the same way that a piece moving upwards in
38 our 3d game-space would "jump" from one square to the next.
39
40 Now, we apply the same approach to a four-dimensional space, it means we
41 can split apart a four-dimensional object into multiple three-dimensional
42 "slices":
43
44 [image]
45
46 And again, we can split that three-dimensional object into several
47 two-dimensional slices: our 3×3×3×3 hypercube has become three 3×3×3 cubes,
48 which in turn became three sets of three 3×3 grids:
49
50 [image]
51
52 In a two-dimensional space, we have four possible cardinal directions:
53 _up_, _down_, _left_, and _right_:
54
55 [image]
56
57 In a three-dimensional space, we add two new directions, which I will
58 call _in_ and _out_:
59
60 [image]
61
62 And in a four-dimensional space, we add two _more_ directions, which are
63 traditionally called _ana_ and _kata_:
64
65 [image]
66
67 So here's a 3×3×3×3 hypercube, sliced into sets of sets of grids,
68 and all the possible non-diagonal 'moves' for a piece sitting at the center,
69 each labeled with the cardinal direction to which it corresponds:
70
71 [image]
72
73 Whew!
74
75 So, my original plan called for a 5×5×5×5 hypercube as the board. This means
76 that there are a lot more _positions_ than on a standard chessboard: an
77 8×8 chessboard yields 8×8=64 possible locations, while a 5×5×5×5 board yields a
78 whopping _625_ positions. On the other hand, a four-dimensional board has a
79 _lot_ more connections and paths: on a 2d board, a given square is bordered
80 non-diagonally by four squares, and another four diagonal squares:
81
82 [image]
83
84 On a 3d board, you'd have six non-diagonal connections and _twenty_ diagonal
85 ones:
86
87 [image]
88
89 And on a 4d board, you'd have eight non-diagonal connections and _seventy-two_
90 diagonal ones:
91
92 [image]
93
94 Part of what that means is that you have a tradeoff when it comes to board size:
95 a 3×3×3×3 board would only have 81 spaces, making it a lot closer to a
96 classic chessboard size: on the other hand, almost every spot on that board is
97 _closely adjacent to_ another spot: a piece in the center is literally diagonally
98 adjacent to every single space on the board! On the other hand, if we try to take
99 a cue from traditional chess-board sizing and used an 8×8×8×8 hypercube, we'd have
100 a board with 4096 possible positions: a piece, hopping along cardinal directions
101 from the bottom-left inward ana-most corner and hopping _towards_ the top-right
102 outward kata-most corner would have to take 32 steps—and that's just for one
103 piece!
104
105 So we need some middle ground, and my completely unscientific kneejerk thoght
106 is that 5×5×5×5 gives us enough space without giving us too much space. That
107 might be wrong! But let's run with it for now.
108
109 ## Moving in Four Dimensions
110
111 What does it mean to move _diagonally_ in two dimensions? Pieces in chess
112 usually move _horizontally_ or _vertically_, which means they move in exactly
113 one cardinal direction at once:
114
115 [image]
116
117 Or they move _diagonally_, which means they move the same number of squares in
118 two _orthogonal_ cardinal directions at once:
119
120 [image]
121
122 Well, what if we start moving this to three dimensions? We can still move in
123 one dimension: left, right, in, out, up, or down. This isn't a standard
124 term, but because we're moving in _one cardinal direction_, I'm going to
125 call this a _1C_ movement:
126
127 [image]
128
129 We can also move diagonally in roughly the same way as before: we can move
130 the same number of squares in _two orthogonal_ cardinal directions, or a
131 _2C_ movement:
132
133 [image]
134
135 But there's another way to move diagonally, two: the same number of squares
136 in _three orthogonal_ cardinal directions: here, we're moving right, up, and
137 in, all at once, in a _3C_ movement:
138
139 [image]
140
141 That was in just three dimensions: in four, we have the _1C_ movements
142
143 [image]
144
145 The _2C_ movements:
146
147 [image]
148
149 The _3C_ movements:
150
151 [image]
152
153 And, of course, the _4C_ movements:
154
155 [image]
156
157 ## The Pieces
158
159 Well, let's come up with some pieces, shall we? Pawns are the "most basic"
160 piece, but how they move is in some ways harder to define than the other
161 pieces, so I'm going to leave them for a lot later. I will, however,
162 propose a piece that's _slightly_ more powerful: a **Squire**, which can
163 move one hop in any _cardinal_ (non-diagonal) direction:
164
165 [image]
166
167 We don't have any trouble tackling **the Rook**, which in 2D chess can
168 move as far as it wants in any one cardinal direction. Let's stick with
169 this and generalize it: our rook can make _any unrestricted 1C movement_.
170
171 [image]
172
173 That gives us an approach for **the Bishop**, too: in chess, it can move as
174 far as it wants diagonally, so our bishop can make _any unrestricted 2C
175 movement_.
176
177 [image]
178
179 This also suggests another piece or two not present in chess: we could,
180 for example, have a piece which can make _any unrestricted 3C_ movement,
181 something with no proper chess analogue. The logical corresponding
182 name for this piece is, of course, **the Trishop**.
183
184 [image]
185
186 We could also propose a **Quadshop**, but my instinct is that it would
187 be too restrictive a set of moves. For completeness' sake:
188
189 [image]
190
191 How about the **Knight**? It moves in a characteristic _L_ shape which
192 doesn't get covered by our movement descriptions, but we can describe
193 it at a high level as _one step in one direction, two in an orthogonal
194 direction_. We can keep this same description and allow any two orthogonal
195 cardinal directions to be chosen, to get a piece that moves like this:
196
197 [image]
198
199 This is another movement we could play with: what if, instead of _one
200 step in one direction, two in another_, we lengthened it, to _two
201 steps in one direction, three in another_? Let's call this more far-reaching
202 but unwieldy piece a **Baronet**:
203
204 [image]
205
206 Or, we could add another step in a third direction, orthogonal to the other
207 two, and have another knight-like piece: let's take this piece, with
208 _one step in one direction, one step in an orthogonal direction, and
209 two steps in a direction orthogonal to both the first ones_, and call
210 it a **Marquess**:
211
212 [image]
213
214 What does a **Queen** do? Well, in typical chess, she is allowed any _1C_
215 or _2C_ movement, so we should allow to use any _3C_ or _4C_ movement,
216 as well. She _is_ the queen, after all:
217
218 [image]
219
220 And a **King**, like chess, should be able to move a single jump in any
221 direction—which is to say, it can move the same way as a Squire:
222
223 [image]
224
225 ## Towards A Notation
226
227 There were lots of repeated patterns in the definitions above: various
228 kinds of "diagonality", number of steps, knight-like movements… I've
229 already started using a shorthand notation for the different kinds of
230 straight lines—that is, `1C` through `4C`—so let's extend that notation
231 a bit more:
232
233 * If I don't care about the number of directions—for example, in the case
234 of the Queen, who can travel in any straight line—I'll use a star instead
235 of a number: a Queen's motion can be described as `*C`.
236 * If I want to limit a piece to a particular number of steps, then I'll
237 mark it with an `@`: so, a King's motion can be described as `1@*C`, which
238 is read as _one step in any direction_. We can think of a notation like
239 `3C` as being the same as `*@3C`.
240 * A knight-like sequence of moves in orthogonal directions is written
241 with a slash: a Knight's motion is therefore summed up as `1/2`.
242
243 With this notation, we can concisely describe all the "pieces" given
244 above:
245
246 ------------ ------------
247 Squire `1@1C`
248 Rook `1C`
249 Bishop `2C`
250 Trishop `3C`
251 Quadshop `4C`
252 Knight `1/2`
253 Baronet `2/3`
254 Marquess `1/1/2`
255 Queen `*C`
256 King `1@*C`
257 ------------ ------------
258
259 This is just one possible notation, and I'm not convinced it's the best
260 one—for example, if we admitted variables, then we could use the knight-like
261 notation to represent