Invader Zim : Good Gir Gone Bad

Game Designer, Gameplay Programmer

I mathed-out on this project while creating a dynamic camera system that sizes and positions the circular game world based on where the characters Gir and Dib are standing. Instead of traditional cartesian coordinates, game objects have a rotation and a distance from the center of the world.

Visit Project

Objects within this game world have a heading (in radians) starting from zero, and a distance away from the center traveling at that heading: Polar Coordinates.

Polar Coordinates

In the image, the zero line is solid white. The heading is the dashed arc, and the distance is measured along the dashed line. "Left-right" movement involved increasing or decreasing the heading. "Up-down" movement involved increasing or decreasing the distance. In this way, elements moved across the surface of the game world.

This was a chasing game, and the player's character (Gir) was always pursuing the computer character (Dib). As such, these characters traveled all around the circle's surface during the course of the game.

Continuous Interpolation

I continually calculated the optimal position, scale, and rotation of the world. This optimal orientation has both characters visible, centered, and large enough to fill the width of the screen. Each step, the world would move a percentage of the difference between its current orientation and the calculated optimal orientation.

Here's a screenshot from the completed game.

It is quite beautiful.

Working with Artists

One thing I love about working for Workinman is never having to worry about the art assets. I could crank out my coding with grey boxes, and then drop in the finished art and animations as they became available.