Project – The Last Phoenix

The Last Phoenix is an aerial melee combat game giving the player control to explore an ancient mysterious island while being attacked by marauding Carrion-birds intent on feeding off the decaying planet.

The Last Phoenix puts players in the role of a Phoenix that has the power to soar through environments while burning the world back to life. The world has been thrown into decay by the vile Carrion-birds and the Phoenix is the only hope of relighting the life of the world and rescuing the guardian, Coatl. Created in UDK by a team of five VFS students, The Last Phoenix gives players an open-world environment to explore and save, all the while being in aerial dog fighting combat with murders of Crows, malicious Carrion, and the monstrous Cocoons.

I was the technical artist and level designer on this project. Some of the things I did for this project are listed below:

– Level design.

– Level scripting.

– Lighting the entire world.

– Shader authoring.

– Post process effects.

– Foliage modeling and texturing.

– Particle FX.

– Optimization.

I wrote the restoration shader around which the entire game is based upon. This shader is applied to all the models in the world. The shader creates masks based on player position and position of objectives. The mask is used to blend between a decayed version of the asset and a restored version of the asset. The decayed version of the asset is generated in the shader itself by performing some calculations on the diffuse and specular sections of the material. I designed this shader with the goal to reduce iteration time by exposing parameters to the artists to tweak. In addition to this the shader has functionality for procedural weather (snow and rainfall) built right in.  When it is raining water flows on all surfaces that are not facing up. The water is oriented downwards irrespective of mesh rotation. When it snows, snow accumulates only on the top of the mesh. This helped us a lot and this allowed us to create an open world which is 250,000 x 250,000 unreal units. All the features of the shader are listed below.

– Diffuse tinting with brightness, contrast and desaturation options

– Derivation of specular from diffuse with brightness, contrast and desaturation options

– Specular power of the of the surface adapts to weather

– Strength control for normal and detail normal maps

– Derivation of specular from diffuse map

– Procedural generation of decayed version the material

– Proceduaral weather (snow and rain).

– Snow piles on top of mesh irrespective of mesh orientation.

– Rain flows downwards only, irrespective of mesh orientation.

– Mask generation from player position and objective position.

– Blinn lighting model support

We make use of material instance constants to reduce performance impact so that we get a great looking game at a great framerate.

We have a variation of this shader that works on the landscape on which I worked closely with our programmer Marc St- Onge, to create a mask on the surface as the player flies above it. Making this shader was quite a challenge as we had nearly two different looking worlds. A decayed one and a restored one. The lighting had to work with both versions and was a challenge to make it look good. I loved working on this quite a bit and I am happy with the results we were able to achieve in a period of 3 months.

Lighting the world was a big challenge as the world looked completely different when decayed and completely different when restored. To get the lighting to look right I had to tweak both the lighting and shaders to get a contrast between the foreground, background and mid-ground elements.

I also made a variety of post processing effects such as cross processing, sharpen, cel shading, autofocus DOF, chromatic aberration etc. This improved the immersiveness of our game and also increased our visual quality. I spent a lot of time tweaking the post processing effects, the fog, lighting and shaders to make the game look beautiful from all angles.

I worked closely with our other level designer, David Dryden on designing the world. I designed two sections of the world, the plains and the cliffs. We worked closely together to make sure that the areas were distinct and the game-play was diverse. I also set up a smooth efficient pipeline for us to work on the same map at the same time by using level streaming.

I spent a lot of time optimizing the game from the start so that we have a good frame rate. Our framerate target was 30fps and our game runs at an average of 45 fps. Below are some of the things we used to achieve this.

– Material Instancing

– Particle and mesh LODs

– Distance culling volumes


Project Page:

gameplay video: