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