Lots of work on 4d chess
Getty Ritter
8 years ago
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 |