Archive for the ‘Miegakure’ Category

Looking back (Do you think your conception of reality has changed from making this game?)

Tuesday, July 1st, 2014
(Here’s another expanded transcript of part of the talk I gave at NYU)
A question that people ask me once in while is: Do you think your conception of reality has changed from making this game?

I find that one of the things that excite me the most about Miegakure is that because it takes concepts familiar in three dimensions and generalizes them to four dimensions (or even n dimensions) it distills these concepts to a more fundamental core. There is something more truthful about a concept that has been distilled to a simpler form, but it also helps us understand the concept better.

A good example is rotation. A rotation is fundamentally a 2D thing; you need two dimensions to define a plane of rotation. We are so used to thinking about rotations in 3D that we think about the axis of rotation, but this doesn’t generalize to nD: the 2D plane that is perpendicular to that axis is what is important. The focus on 3D space actually hides part of the truth. Transforming the plane of rotation into an axis loses some information about its semantics, which causes problems for example when you want to transform the rotation itself (ex: the idea of an axial vector in 3D is a hack). But you can’t even transform the plane into an axis in any dimensions but three, so considering the general case helps us avoid making this mistake.

When trying to generalize a concept we often find that some parts of the representation do not generalize at all. Then, we search for a new way to think about things, a new viewpoint that allows us to throw away the parts that don’t generalize. What we are left with is often much more beautiful than what we started with originally, because it describes the same concept, but in a much more concise and precise way.

We can use n-dimensional space as a way to discard viewpoints that are not as fundamental as others because they do not generalize.

Rotating the view

In Miegakure, the player’s main action is a rotation (when the space appears to deform, the player is actually just turning their head 90 degrees into the fourth dimension) and there are rotating objects in the game. So the player is learning about rotation in a more general context and it enlightens their concept of rotation in 3D.

I think this idea of distilling and generalizing concepts happens in other games, in some form.

Go board

We celebrate Go because of how rich its situations are compared to how small its rule set is. Go distills the rules of territory and life and death to a form that allows us to explore it, to a form where we can get glimpses of fundamental truths about our universe. Go is so simple that we feel that it has be fundamental.

Frank Lantz talked about similar ideas in this great talk.



This is a slightly different idea:
Portal takes the usual laws of physics and adds portals to them. There’s some exploration of what having portals might mean by themselves, but what is especially interesting to me is the way that Portals affect things like momentum.

The idea of using gravity to increase momentum then rotating that momentum to cross a pit makes the player think about momentum in a different way and that reveals things about it. Momentum is seen through the more general lens of portals. There are actually problems with this because it is difficult to cleanly generalize, but I will talk about it more next time.


[Part 1][Part 2][Part 3] [Part 4] <Part 5> [Part 6]

Interview for the Creators Project

Friday, May 9th, 2014

Did an interview for the Creators Project. I think it came out pretty well!

When did you first think of the idea for a 4D video game?

I had the idea for a hyper-dimensional game in college, maybe around 2005? When you program a 3D game, every object’s position is represented using three numbers (usually called x, y and z), but that concept easily generalizes. Why not four numbers or more? At the time, a big tech company’s programming interview question involved computing whether two 2D rectangles overlap. It turns out the code for this generalizes extremely easily to the 3D case of cubes and to any number of dimensions: you just have to change a single number, the dimension of the space. So the idea came from this as a joke almost, like “I could answer your programming question for any number of dimensions.” But it made me start to wonder, what would it an actual n-dimensional game be like?

The idea stayed in the back of my mind until around 2008, when I decided I wanted to make a game that would satisfy both my love of game design and tech, in particular computer graphics. I made a list of my most experimental game ideas, and a 4D game came at the top of the list, so I started to build some prototypes. The first few prototypes were not very good however, and I later realized the main reason was that even though the game was taking place in a 4D world it was not clear to me what the consequences of being able to move in 4D were. What could you do that you couldn’t do in 3D? […]

Tell me about the programming tech behind the puzzles.

The game runs on its own custom 4D engine that I developed from scratch. Every position in the game is *actually* represented with four numbers. There are no tricks or hacks. We are building what a 4D world would be like, in many ways. This creates a space were puzzles happen naturally: they are just simple consequences of 4D space. More traditional puzzle games very carefully set up situations, and the behavior is limited to what the designer has intended (for example you need to input the right code to open the door, and the code is written down somewhere hidden). Because what we are building is so general, I might not know all the solutions to a particular puzzle… or I might discover a lot of puzzles by just setting up random situations and playing and seeing what happens. If something surprising and interesting happens, I will make it into its own puzzle.

PAX East 2014 Report

Friday, April 18th, 2014

PAX East went very well. We had four stations, and they were all filled for the whole duration of the show. I wish we could have had more for the people who waited in line; maybe next time we will get a larger booth. We also had the trailer looping on a large TV, and an explanation of “how to walk through walls using the fourth dimension” running underneath, on a smaller monitor (it will be the next trailer).

I noticed I don’t learn much from playtesting the beginning of the game anymore. It is solid and people just get it eventually. I guess that means all there is left to do is finish the game!

I do still learn a lot from explaining the game to people. Every time I do it the explanation gets more concise, and different people need different explanations. This becomes useful later on when writing for the website, or to explain the game to press. But really sometimes I feel other people are better at explaining the game than I am, as I’m too close to it now. Thanks to Christopher Hart & Colin Hart for helping out at the booth!

Pax

Pax (1)

Pax (3)

Pax (2)

Pax (4)

What is that shape at the end of the trailer?

Tuesday, April 15th, 2014

Miegakure Trailer Screenshot

The shape at the end of the trailer is called a 120-cell (or Polydodecahedron, or Hecatonicosachoron, which sounds cooler, but a bit too hard to pronounce). It is actually modified a bit, but first let me explain some basics.

You see, a 3D object has a 2D surface, whereas a 4D object has a 3D surface (an nD object has an (n-1)D surface). So while a dodecahedron has 12 faces which are pentagons, a 120-cell has 120 “faces” which are dodecahedra (called cells, since they are 3D).

The 120-cell is a Convex Regular Polychoron, the 4D analogs of the 3D Platonic Solids (Tetrahedron, Cube, Octahedron, Dodecahedron, Icosahedron). All the faces of a 3D platonic solid are the same 2D regular polygon, while all the cells of a “4D platonic solid” are the same 3D platonic solid! It’s basically building shapes out of the the most symmetrical elements each time.

Interestingly, there are infinitely many regular 2D polygons (just divide the circle equally into n sides: triangle, square, pentagon, etc…), 5 regular 3D convex polyhedra, 6 regular 4D convex polychora, but in 5D or more there are only 3 types! It appears that building shapes this way gets more and more complex until it is no longer possible, save for a few very generalizable cases (the hypercube, for example).

Leonardo da Vinci's Polyhedra

But what you see in the game is not quite a 120-cell, it is actually a 120-cell with a hole inside each cell. My friend Vi Hart [Youtube Channel] came up with the idea to do this, inspired by drawings by Leonardo Da-Vinci.

In the drawings, a hole has been cut inside each 2D face, or rather only the edges are visible. In the game a hole has been cut inside each 3D cell (each cell is hollow), or rather only the faces are visible.

The way this is implemented in the game engine is using our 4D Mesh Structure (a 3D mesh is made out of triangles, a 4D mesh is made out of tetrahedra).

 

Banana MRI

What you see is a 3D slice of a 4D object. While the 4D object is static, the 3D object you see transforms as the slice changes, similar to what you see in a moving slice produced by an MRI machine, but in one higher dimension (The image on the right is an MRI slicing though a banana flower).

 

The reason the number of faces changes is that depending on which slice you take, you might go though a different number of cells (each cell you slice will produce a face). If you slice the 4D object near its tip, you will get a small 3D object. If you slice the 4D object near the center, you will get a larger object. This is similar to slicing a 3D sphere with a 2D plane. Use the following sliders to slice through a dodecahedron, and its “Davinci’d” version. (Note that in the game we are rotating the 3D slice whereas here I am letting you move a 2D slice up and down, but the morphing effect is the same).