Wednesday, January 11, 2012

The Ship Graveyard

Ahhhhhh The Ship Graveyard. Water everywhere. The hollowed out remains of ships scattered about. This is a very dynamic level as the water that drives the movement of the objects is completely procedural and it's movements are evaluated at runtime. I can't begin to describe how amazing the tech that controls the water is..........but I will try. Carlos Gonzalez Ochoa, one of our rendering programmers who I have mentioned before, developed the ocean system for Uncharted. I won't reveal all of the super intricate details behind it's functionality but I will tell you how I was able to manipulate it. Carlos gave us the ability to control the ocean system through a series of unique i.d's. Each unique i.d is assigned a set of parameters that control the waves. I was able to adjust these values until we got to what we wanted. This ranged from calm small wave movements escalating all the way up to the huge waves at the end in the Rough Seas. Carlos also created a shader for the ocean that I was able to use to create the look of the oceans for the level and in other parts of the game. One of our gameplay programmers, Ryan Broner, (also awesome) developed a way for objects to move with the surface of the ocean. So the objects and the ocean never move the same way all the time. All this randomness and chaos. How the heck is one to put particles on that? I'm glad you asked. Marshall Robin, our dedicated fx programmer, supplied us with a particle emitter type that could do the same thing Ryan's tech did with objects, except, it additionally could evaluate the velocity of the water as it rises and falls. This gave us a way to spawn particles only when the water rose fast enough. This is how we got splashes on the sides of objects. Randomness plays an important role in making things look more natural. Nature is random.

Tidal Wave
Carlos gave us a way to create a profile curve to make a wave in a shape we could control while the rest of the ocean would still do it's thing. Peter Field, the level designer, created a simple curve that was animated and scripted into the game. Once we had the tidal wave shape it was time for some particles. I key-framed several emitters on and off based on camera cuts trying to get a shape that would look good. I ran into an issue of overdraw with the shader being used on the water particles being a little too expensive and at the end of the sequence these particles would fill the screen tanking the frame rate. Eventually I reduced the cost by using a cheaper shader and this allowed me to increase the particle count by A LOT. Turned out pretty good.

On top of all of this technical stuff, I want to recognize the artistry that created the assets in the level. The amount of detail is amazing to me even now. A lot of hard work and many many hours. Matt Morgan must have created 20 different variations on the lighting, and I saw Simon Craghead at his desk...........he never left it. Check out some images below. I'll add a video in a little while

Artists on this level
Background: Simon Craghead
Foreground: Mike Hatfield, Christophe Desse
Lighting: Matt Morgan
Visual FX: Doug Holder
(I will update with the others)

No comments: