Archive for May, 2014

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.