Tuesday, February 22, 2011

fishMoto: Art Direction

FishMoto is an iPhone game I'm developing using the Unity engine -- you play as an electric catfish hooked up to a motorbike with ridiculously stretchy shocks that allow for some crazy gameplay. While I have a good idea about how I want the game to play, I'm less sure about how I want the game to look. Below are some things I tried out over the last couple days -- these were all thrown together pretty quickly and served more to prototype different ideas.

I first played around with an animated background inspired by disco floors. My thoughts were that I could communicate gameplay changes with animations played in the background -- when gravity changes directions, when the player collects ziplock fish, when the player wins/loses etc. While this was perhaps a good idea on paper, in practice it was visually chaotic and very distracting.

Next I played around with patterns. I found some neat patterns on PatternCooler.com and applied them as textures. I figure I could still communicate with animations to some extent, but perhaps these would be a little easier on the eyes. I think this direction showed some promise, but I might save it for another game -- I decided I was drifting too far from my intention to create an accessible, colorful, cartoony game.

So next I tried a more colorful, cartoony approach -- perhaps the obvious choice, but I guess I first wanted to make sure I wasn't playing it too safe and see if something more unconventional could work. These are textures I found on the web and I'll be replacing them with my own now that I've decided to go ahead. Being cartoony, I knew it'd have to be more representational than my previous ideas. There are generally two types of cameras when rendering 3D scenes -- perspective and orthographic. I had been using an orthographic camera, which has no depth or perspective -- the advantage is that distance from character to the surfaces is very easy to gauge, which helps with the precision required for navigating tight spaces; the disadvantage is that everything moves across the screen as if it were one flat single-dimensional layer, which isn't very visually interesting.

Most 2D games move background layers proportional to camera movement to give the illusion of depth (when objects farther away move across the screen slower than objects in the foreground -- this technique in game development is called parallax scrolling) but I'm using a 3D game engine and came up with a better solution. What I did was have two cameras render the scene -- one is orthographic and renders only the player and the level geometry the player interacts with (to retain that precision I want) and the other is a perspective camera rendering only the background elements. So because I'm utilizing the inherent advantages of a 3D game engine rather than having to process the movement of background elements relative to camera movement like a conventional 2D game, I get the best of both worlds at minimal performance cost.

No comments:

Post a Comment