Thursday, December 2, 2010

Not So Unreal After All

Visually, Monkey Morris is minimalistic and uses very light, desaturated tones. There are a few reasons behind the decision approach the design in this way and I'll give a run down of them.
One contributing factor was that I had a desire to create a game using the Unreal engine that didn't look like it was using said engine. Unity was very nearly used for Monkey Morris, however it would have meant a lot of heavy lifting in terms of coding the vehicle (it's arguable that more time was spent extending and getting Unreal Script to work for me, but nevermind... I'm here now), and other aspects of the game.
Two notable things within Unreal powered games are heavy use of normal mapping and lots of shiny objects. And lens flares. And space marines of variations thereof. I also wanted to avoid falling into the trap of cel-shading, so after taking a few pages from the books of hand-drawn animation and watercolour painting Monkey Morris ended up with a bright, colourful character in the car itself, but toned down background detail to emphasise the watercolour look.
I've had a few comments that it doesn't look like an Unreal game, so I guess I win!

I will make a game that looks like this.
A second factor that played a part my visual inspiration was in a development blog post for Jonathon Blow's upcoming game, The Witness.
In the post it talked about how a textured mesh can often less visually interesting than viewing just the geometry with lighting. After taking a cue from this, and agreeing with it to a certain degree, (I'll often look at a map using an in-game lighting only mode and be stunned by it's simplistic beauty. If the lighting is decent anyway.), I began to experiment by building a few houses using simple, chunky geometry and textures that consisted of little more than baked ambient occlusion. The method worked fantastically.

Another reason for using this method was partly instigated by the time constraints placed on the project.  Working in this way enabled me to save a lot of time in texturing and devote more time into modelling, gameplay and placing the assets themselves, which has been invaluable.
To compliment the time-saving texturing, I also devised a method to rapidly produce colour variation in the buildings utilising instanced materials.  This is the shader set-up for the master material used by all of the buildings:
Building Shader Setup, click to enlarge
Building Shader Parameters

Basically, it uses a set of one-bit alpha images to mask out different areas of the UV map, then some simple math to combine them into the final texture.  Each of the colours is adjustable within the material instance.  The mask used for the windows is conveniently used as a mask for the specular channel as well.
The ambient occlusion texture is also set up as a parameter, so that can be altered depending on the mesh the material is used for.

This system of colour altering was initially developed for the Morris, and is further used by a few other gameplay assets, which I'll go into in a separate post that tackles the various scripting tasks and issues of Monkey Morris.

1 comment:

  1. Slightly tangential to this project - heres the site about birds I mentioned earlier

    http://www.brendanbody.co.uk/flight_tutorial/index.html

    ReplyDelete