Tuesday 12 November 2013

Seas of Sand


Journey is an adventure game that was released on the PlayStation Network on March 19th, 2012. Since the time of its release it has received international acclaim and, personally, I think it can be used as very strong evidence for the argument that games are art or at least can achieve the level of art.

Recently I was finally able to play a bit the game and found that it provided a compelling and awe inspiring experience. Right from the beginning the story hooked me immediately with its mystical and mysterious elements. The questions of who you are? What you are? And what happened to the mysterious civilization that now laid in ruin and near buried by the oceans of sand drove me further into the world of the game.

Though a good part of what made the game so compelling was the amazing visuals that the game provided through its unique art design. But the most beautiful part of the game was not the flowing scarf or the landscape/architecture, it was the sand. It was how it flowed, how it billowed and waved. It looked so natural yet at the same time seemed magical in how it glittered and moved. When I saw it I wondered how they did it and came to the conclusion that they probably used some height map to get that wavy effect then used an assortment of shaders to get the glitter effect of the sand. But how did they really do it? Thanks to the miracle of the internet I was able to find a PowerPoint presentation that details how they did it. To be honest my answer was mostly correct but then again my answer was so broad I can’t see how my answer could not be at least partially right. It’s like asking someone “how did people achieve flight?” and that person answering “with a flying machine”.

So, how did they create those mystifying sands? First used a detailed mipmap to bring out and maintain the grainy look of the sand at varying distances from the camera. This is different that using a normal mipmap because in a normal mipmap the details of the texture get smaller or less defined as you downsample, this did not create the desired effect so in order to fix this doubled the normals when they downsampled which maintained graininess of the sand textures.

Next they wanted to simulate the sparkling effect of sand as light is reflected off those tiny glass pebbles into your eyes. Initially they tried using specular reflection but found that the glitter points seemed to be too spread out, it was like being “clubbed in the head” as John Edwards put it. To rectify this they instead use an “ambient specular” in relation to the “normal dot view” which created less spread. But there was a problem with this, and that was in some areas of the level the specular shader goes a little crazy. This is where the anisotropic filtering they game uses fails, and removing the filtering all together is not possible since it made the world look like it was covered in dollar store glitter. They fixed this by covering up wherever they filtering failed with a texture that provided predictable values given perfect anisotropic filtering. Then when they added in the effects from the other shaders, the problem areas were displayed in black and were covered therefore fixing their filtering problem.



But this left their glittery sand not as glittery. So how did they fix this? By adding MORE specular! They added in a column of specular reflection, this effect is typically seen on large bodies of water but never on sand. But you know what? It looked good, so who cares.

ocean of sand
They also used a modified diffused shader since they found that a lambert shader was boring. Essentially they used hacky method that increased the contrast between the light side of and the dark side of objects which is the prime characteristic of another method they wanted to use called the Oren-Nayer method but it was too expensive in terms calculations.

you can really see that contrast in the dune to the right
Lastly, they used detailed height map. The main dunes in Journey were created using a low resolution height map but for those smaller waves the dev team used four “tiles” of height maps which they lerped between, depending the values of each vertex’s x or z values.


Overall, the dev team over at That Game Company did a spectacular job in creating the amazing sands that mesmerized all who played their great game.  

sources 
Edwards, John. "Sand Rendering In Journey". Date Last Modified 12 Nov. 2013. Microsoft PowerPoint file.

No comments:

Post a Comment