|
|
|
For the Dantes Inferno PSP project, I was a lead visual effects artist, tasked with
creating the majority of the environment effects. Due to the characteristics of the
nine levels of hell, the environment was approached as if it were a large character.
Actually, the largest and most complex character of the game. Before I continue, I wish
to give credit to the other fx artists who worked on the project: Jeremie Chicoine,
and Filip Ivanovic. Sorry about the footage quality, once again, these shots came from
youTube.
|
|
|
Due to the platform of the project, and
its technology constraints, the team and I were forced to think of
new ways to create the effects for the game. As many of us know,
there are quite a number of memory, CPU, and GPU limitations that
require artists and designers to remain conservative in their asset
creation when building for a portable platform. This can make our
development experience quite a challenge when trying to match the
aesthetics and design of a game as visually rich as EA/Visceral's
Dante’s Inferno.
After diagnosing our system performance with standard particle effects,
which historically could be used for producing something that resembles fire,
we concluded that the traditional sprite particle method would be impossible to
implement without killing the performance of the game. In order to overcome
this limitation, we looked at techniques that are available in other game engines
(such as Unity3d, and Unreal), and decided that the best approach was to use a
single image with a sequence of graphics within it, cycle it through a UV animation,
and add two custom attributes which would instruct the effects asset to always
face the camera (similar to a sprite) and to randomize the unwrapped UV starting
point at creation time.
|
|
|
With this technique we were able to cycle through the texture's (like the texture above)
tile block sequence with our UV animation system with a stepped interpolation for each
frame. Approaching the problem this way enabled a fluent and resource friendly result.
With the way A2M's proprietary engine was able to handle animated UV data sets, we
found that even if our texture was a 512 X 512 texture, which can add up in regards to
memory consumption, our engine only evaluated the 64 X 64 unwrapped UV texture
block during run time, so our CPU and GPU performance was nearly untouched.
Considering a game like Dante's Inferno, which would have a significant quantity of
flame/pyro effects, this approach was the only one suitable in order to meet the quality
target we required for the PSP. We had also discovered that this technique could also
be used for a wide variety of effects other than fire, especially when combined with
traditional particle emission effects that are less dynamic.
|
|
|
Considering that Autodesk Maya has a robust particle effect and fluid effect tool set,
and since A2M is a Maya house, we found that we could create a diverse library of
sequential texture effects using all of the effect tools within Maya, without having to
resort to expensive third party plug-ins. We also benefited from several texture assets
that were sent to us by EA/Visceral which we were entitled to re-use in our port, and
we were pleased to find that they were using the same technique, but instead, it
appeared that they were able to assign their texture sequences through their proprietary
particle emission software giving them the best of both worlds: Sequenced textures and
all the property attributes associated to sprite particle systems.
|
|
|
If we look at a system that's available which supports a similar technique, say
Unity 3d, we will see the direct advantage of having a system like this. Instead of
emitting regular static image particles, you can achieve a greater degree of realism
if the texture on the particle is dynamic, such as a sequence of textures. This
combined with other normal particle attributes such as rate, speed, scale, color,
spread, conservation, inheritance, and procedural motion influenced by fields, the
artist could achieve extremely rich results. Unfortunately for us at A2M though, the
engine and tools we were using did not support such technology so we had to resort
to the UV animation approach. Hopefully in the future things will change for them.
|
|
|
The last quicktime video on this page is a demonstration of what the technique mentioned above looked
like in our game engine. I created the flame burst sequence using a 3d volume fluid emitter and container
in Maya, set its in and outpoint to be 64 frames long, cached it, and rendered it at a reasonable resolution.
From there, I took the image sequence into photoshop and constructed the sequence in one texture for our UV
system to cycle through them. Hope you have enjoyed this.
|
|
|