Archive for the ‘Miegakure’ Category

Designing to Reveal the Nature of the Universe

Thursday, November 3rd, 2011

Jonathan Blow and I gave a talk at Indiecade this October. I talk about the design philosophy of Miegakure and reveal a bit more about it in the process (for a change).

.

 

 

Here’s the summary:

Any system of interactivity can of course be explored: If X happens, what are the consequences? What are all the ways in which pattern Y expresses itself, and to what do those expressions lead? By inspecting the structure of a system in this way, we can find the core ideas of the system, and see how those ideas illustrate fundamental truths of our universe. We present a game design aesthetic that values looking for systems that express these truths in the cleanest possible way. We explain how this is different from more-traditional combinatoric design techniques; we show examples from our games and describe a method for applying the aesthetic in general.

For those of you who came upon this wobsite from xkcd and might not know who Jon is, he is a very intellectual and talented designer, and maker of the indie hit Braid and currently of The Witness. His games also involve revealing interesting aspects of reality, in the case of Braid by allowing the player to rewind time at will. So we have a lot in common and we tried to integrate our viewpoints together in the talk.

Here’s a link to the Indiecade page, on which there’s also a presentation by Richard LeMarchand, and more to come.

Thanks very much to Ida C. Benedetto for recording the talk!

I also did a followup interview for DIYGamer.

4D Rotations and the 4D equivalent of Quaternions

Friday, May 20th, 2011

In a game, we often want to represent rotations: the main character’s head tilts left and right, the wheels of a vehicle rotate, characters follow curved paths through space.

There are many ways to represent a rotation mathematically, and each might have different benefits when we actually transform that math into code. Quaternions are one such way, and they are often favored because they are easy to interpolate; this means that given two rotations, we can easily transform one into the other in a smooth way without running into any issues.

Rotating Cube

For example, if the main character’s face is pointing down and to the right and his head is tilted sideways, it is possible to bring him back to facing straight ahead smoothly, using only the two quaternions corresponding to each orientation of the head.

This is why Quaternions are used in pretty much any 3D game engine out there.

You need four numbers to represent a quaternion. That might feel arbitrary, but it turns out that it’s related to the number of “different” 2D planes that can exist in 3D space.

It’s important to realize that rotations happen on 2D planes. In 3D, we usually think of rotations happening around an axis, like a wheel turning around its axle, but instead of thinking about the axle, we should think about the plane that the wheel lies on, perpendicular to the axle. Allow this old lady to demonstrate:

Old Lady shows off rotations

She is spinning wheel in the XZ plane, perpendicular to the Y axis. In addition, this is more like the 2D case where there is only one plane to rotate in. Considering rotations to happen around a third axis (perpendicular to the 2D plane) is technically incorrect, since we shouldn’t need to introduce another dimension to perform rotations.

In any case, this is what the code for a quaternion class might look like:

Quaternion Source code

You can see that, aside from the scalar part, there are three numbers (x,y, and z), one per axis, or more properly one per plane perpendicular to each axis.

That’s all well and good, but we’re making a 4D game.

And we need to rotate things. So what about 4D rotations? It turns out there is a mathematical entity called a Rotor which can represent a rotation in any number of dimensions. As long as we think of rotations as happening on 2D planes instead of around 1D axes, everything works out fine. We just need to count the “different” 2D planes that can exist in 4D space. There are 6.

This is what the class definition for a 4D Rotor looks like:

Rotor Source code

New Work In Progress Screenshot

Saturday, April 2nd, 2011

GDC Build Screenshot

I figured I should post a screenshot of what the game has been looking like lately. Please note these are not the final graphics. There are a lot of things in this screenshot that we’re going to change, but it gives you an idea. This was printed on a postcard for GDC.

Mailing List Options

Wednesday, January 5th, 2011

A quick note for those on the mailing list: If you only want to be notified of Miegakure’s release date and nothing else, I just added a new category on the blog.

You need to register here and after logging in, only check the “I only care about when Miegakure is released” box, and uncheck everything else.. Sorry about the 2 step process and the spam.

You can also unsubscribe on the mailing list page