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.