Monday, August 30, 2010

Blog<?> Running and Game Update


After last week's set of complaints I feel like I'm obligated to talk about the 3 great runs I've had since.

On Tuesday, I ran half a mile shod, and then half a mile barefoot. I thought I would need the Vibrams because it was so hot, but I took them off and had no problem finishing the second half of my run. On Thursday, I decided to go barefoot-only and managed .8 miles (a personal record) before I started to worry about overdoing it. Since I run a 1 mile loop, I walked the last .2 miles back home. And on Sunday (yesterday) I ran the whole 1 mile loop barefoot (new personal record).

I feel like I'm finally starting to get the technique down. I ended up with zero blisters and zero shin pain. The only thing that started to hurt was the outside of my left foot where my sole meets the ground. I think that my foot twists a little when I land because that spot was starting to get "hot" (no blister though). Also of note is that I finished my second week of planned runs. My total barefoot mileage for the week was 2.3 miles.

So what was different?

Well, for starters, it was about 10 degrees cooler than it's been for the past 6 weeks. This meant I got to run in daylight for all 3 runs. I also decided to start forcing myself to walk 5 minutes as a warm-up before every run (.35 miles). I've been doing the warm-up in my VFFs since my barefoot walking is not quite frictionless yet and I want to save my soles for the running. And lastly, the barefoot running is forcing me to make major corrections to my running form. It's kind of amazing how most of my pain went away just by taking even shorter, less springy strides, but I never would have thought to try it if I still had the protection of a few millimeters of rubber under my feet.


I've also been making some strides on the game development side of things. I added a few features to hide the mouse cursor, and keep the cursor centered on the screen. This prevents the mouse from covering anything, and also keeps the user from clicking outside the window (causing it to lose focus). Also, the Esc key now causes the app to exit (although the key/condition is configurable by the application developer).

Those are pretty small features though. I spent most of the past 2 weeks creating a texture manager and a kind of virtual camera to make scene navigation easier. The standard disclaimer about the crappiness of these videos is in full effect. Each of these is running smoothly when not passed through the screen capture software.

Procedural Textures:

By procedural, I mean not loaded from an image. The basic gist is that each pixel value in the texture is chosen based on its distance from the center. The 1D texture looks like a few points that have smooth transitions between them. The 2D texture looks like concentric rings. The 3D texture, if you could see inside it would look like concentric shells. It is being translated (moved) in the depth direction, giving the appearance that it's animating. If you look closely, you can see how the 3D texture is a moving volume that is being projected onto the geometry (cube, sphere, torus) as it passes through it. It's especially evident on the sphere and torus. I'm not sure how many textures I'll need to procedurally generate, but it was a good test of the texturing code without needing to worry about getting the data from actual image files.

Image Textures:

Each of these textures was loaded from an image file. The cubemap texture is actually 6 different images mapped to the 6 faces of a cube (hence "cubemap"), and then the texture coordinates are generated to make it look like the geometry is reflective. The 3D texture was created from 16 cat scan images, stacked one on top of the other. Like the procedural video, it's being translated in the depth direction, giving the appearance that it's animating. Most of the textures in the game are going to be loaded from image files, so this is going to be used all over the place.

Virtual Camera:

I generated some terrain using the diamond-square algorithm (random noise generator). Then, I added some code to move the camera around. The changing checkerboard pattern is just a weird texture-space trick to make the terrain seem less/more detailed.


  1. Congrats on the running progress! I just told Doug yesterday I want to start running...and then said, guess I need to walk first.

    The game stuff is so cool!

  2. Great news about the running.

    Every time I see this game stuff I'm just baffled by how you made it. It's pretty awesome, though!