Mayor Max Early Beta
01.29.12 by MichaelEdit: The beta is now closed, thanks to those who played it and tested it out. Check back to this site for more info as the game progresses.
New Game “Mayor Max” (Working Title)
01.22.12 by MichaelI’ve been working on a new game and was moving along at a good clip. Its a building sim where you interact with the citizens of the city and lead them. You can build blocks and buildings and its going to have resource management and exploration and a story and so on.
Then this other completely non-related game video came out.
Their game is similar. Except, they have art! I mean look at how they have little guys with animations and cool looking “ghost blocks” and their trees look like actual trees. My trees look like giant lollipops and my graphics look state of the art for the early 80s. Their geometry has “textures.” My game will have those things eventually. Also, in my game you have an avatar that you control like in an adventure game. And mine isn’t really an RTS like theirs… but, well, watch my video and compare for yourself:
But, my technology is pretty solid, so I can release a build. Its still early, but since the cat is out of the bag I might as well let people play my game and give feedback. So stay tuned for a playable version of what you saw in the video in the coming week.
Kid The World Saver Prototype Now Available
07.19.11 by MichaelKWS is now released in prototype form. Click here to download it. Click here for more info.
Don’t Shoot Yourself
05.30.11 by MichaelThis flash game was originally going to be part of a series of small prototypes. At some point I may start making little games again, but that’s not what I’m working on now. This game may seem like a shmup but it is actually more of a puzzle game. There is a trick to getting high scores. I managed to get a score of over 3000 in a car ride with a laptop by using the trick.
DirectX Quaternion Camera
05.19.11 by MichaelI spent the afternoon rewriting my camera class to store its orientation as a quaternion instead of lookAt, right, and up vectors. I use DirectX so I can take advantage of the built in math library which is optimized. For OpenGL you’ll have to write your own math code, which isn’t too hard. Here is a site that has some basic code. Anyway I’m providing my new camera class under the Boost License:
The trickiest part is getting the quaternion from a focal point and position, but its really not that complicated. First you get a “lookAt” vector by subtracting the position from the focal point and normalizing. Then you take a passed “up” vector, usually (0,1,0), and cross product the lookAt vector it with, storing the result as the “right” vector and normalize. Then all you need to do is cross product the lookAt vector with the right vector, normalize the result and you’ve got your up, right, and lookAt vectors. The following is the code:
D3DXVECTOR3 v3Up, v3Right, v3LookAt = v3FocalPoint - v3Position;
D3DXVec3Normalize( &v3LookAt, &v3LookAt );
D3DXVec3Cross( &v3Right, &v3PassedUpVec, &v3LookAt );
D3DXVec3Normalize( &v3Right, &v3Right );
D3DXVec3Cross( &v3Up, &v3LookAt, &v3Right );
D3DXVec3Normalize( &v3Up, &v3Up );
Then you need to create a rotation matrix from those axes:
D3DXMATRIX mRotation;
D3DXMatrixIdentity( &mRotation );
mRotation(0,0) = v3Right.x;
mRotation(0,1) = v3Up.x;
mRotation(0,2) = v3LookAt.x;
mRotation(1,0) = v3Right.y;
mRotation(1,1) = v3Up.y;
mRotation(1,2) = v3LookAt.y;
mRotation(2,0) = v3Right.z;
mRotation(2,1) = v3Up.z;
mRotation(2,2) = v3LookAt.z;
Finally, you just use the DirectX function D3DXQuaternionRotationMatrix to get the final quaternion.
One of the nice things about using quaternions is they can be interpolated without looking bad. If you were to linearly interpolate a lookAt vector for small differences you would be ok, but imagine interpolation from a vector and one rotated almost 180 degrees. The interpolated values would become non-unit length and just look bad if you are watching the camera movement. The answer is slerp. Slerp can interpolate two quaternions using the shortest path between the two resulting in smooth transitions.
Using slerp I added a filtering component to my camera. Instead of taking values directly as they are set I use an exponential moving average. Here is the code for updating the averages each frame:
D3DXVec3Lerp( &v3FilteredPosition, &v3FilteredPosition, &v3Position, fFilterAlpha );
D3DXQuaternionSlerp( &qFilteredRotation, &qFilteredRotation, &qRotation, fFilterAlpha );
The alpha factor determines how much we weight older observations and changes the speed at which the filtered values catch up to the current ones. Now when I change the camera rotation or position suddenly, the averages smooth out the movement. Its a cool effect but it does add a lag to camera movement which is why I don’t use an alpha value that is too low.
Desktop Bricks With Tweeting
12.15.09 by MichaelI took my desktop brick toy and added a new feature. Now you can share the stuff you build by automatically converting your structures into bits of text. For example, the following spells out HI:
2<b3<b0<r0<r0<r0<t2<t4>b3<b0<r0<r0<r0<t2<r2<t4<l4<t3<r3<t3<l3<l3>r3>>>>>b0<r0>>>>>>>>>>>b1<b1>>>>
You can grab the EXE and start tweeting your creations right now! Just press control+c to copy the selected structure to the clip board and send it to your friends however you want. If you’ve copied some brick code to the clip board, press the middle mouse button to recreate the bricks on your desktop. You can delete stuff by mouse hovering and pressing the delete key. Also remember that the esc key closes the program.
Kid the World Saver Teaser
03.21.09 by MichaelOur team just finished the teaser for Kid the World Saver:
If you’ll be at GDC look for us at the IGF pavilion.
IGF!
01.23.09 by MichaelIts such an honor to have made it into the student showcase with Kid the World Saver. There were some really cool and high quality things submitted this year and I was sweating bullets till the very end.

Just from USC there was some fun stuff like Mike Rossmassler’s Flora, Andre Clark’s multi-screened Minor Battle, and Jamie Antonisse’s Spectre which offers some real innovations in interactive storytelling.
I’m still trying to process it all. I just hope we can have a strong showing at GDC.






