UnrealTools Project

The goal behind this project was to bring about three new game play elements that would be beneficial to the player base of Unreal as well as being a way for me to test my abilities in UnrealScripting and Shader development.

Distortion Cloaking:

The distortion cloak effect makes the player almost invisible to the naked eye, but not so much that other players cannot see them at all. There is a distortion field surrounding the player so that when another player is looking at the cloaked player, it is barely noticeable. A side effect that was added is that the field pulses. This is to make sure that a player standing still can be noticed as well.

Night Vision Goggles:

The night vision goggles work like real night vision goggles. Unlit areas in Unreal will become visible to the player using the goggles. In real night vision, color information is dropped during the process of capturing ambient photons of light and exciting them with an electrically charged metal plate that in turn produces bright electrons. To avoid stress on the eyes a green filter is used in the final pass. These night vision goggles enhance a darkened area and bring it back into a playable range as well as add the green filter for a more authentic look.

Thermal Vision Goggles:

The thermal vision goggles is a joint work combining elements from the distortion cloak and the night vision goggles. A thermal shader is applied to all characters on screen to make them appear “hot” in the goggles view and to represent the rest of the scene as “cold” a blue overlay filter is applied in a similar fashion to the green overlay filter of the night vision goggles.

Shader Development

To download the file containg all of these shaders click on AdvancedMaterials.upk. Please note that you do need to have access to the Unreal Editor for Unreal Tournament 3 to view these shaders.

2D Arcade Shader:
The goal behind working on this shader was to use a single RGB component mask to alpha between different layers and give the old feeling of 2D backgrounds moving at different speeds.

Durer Shader:
I created this shader based off a HLSL shader found in the Nvidia Shader Library. The goal behind this shader is to give a crosshatched look to objects, almost is if they had been shaded in by a pen or pencil using line shading.

Toon Shader:
The toon shading method or cel shading is more and more common in games today and I wanted to see if Unreal could be capable of a good looking toon shader. This shader uses a lot of parameters that can be changed on the fly inside of Unreal and UnrealScript.

Water Shader:
The current water shaders inside of Unreal do not cover all the unique properties of water so I set about to add some of them in. This shader like the standard water shaders has specularity, ripples and reflections. Unlike the other shaders this also adds in refraction and depth based transparency.

Matrix Shader:
I thought it would be interesting to mimic the matrix code effect seen in the movies using an unreal shader, this shader takes the green lines as well as some random text and multiplies them together at different sizes and speeds to get that really flowing effect.

Two-Tone Shader:
A lot of cars nowadays have a paint that shines a different color depending on how you look at it, the effect inside of unreal is achieved by taking the players view and using it to alpha between two different colors. Whatever the player is directly looking at would be one color and everything else would be the other color.

Tools Scripting in Max and Maya

Each one of these tools was designed to speed up workflow when working on specific tasks. Some were created for 3ds Max using MaxScript and some were created for Maya using MelScript.

AnimationInterface(MaxScript):

The animation-interface script was created to quickly make specific controls inside of Max to save time when setting up animations controls. This script was created at the request of Mr. Scott Horton(an instructor at AIPX) to be used by students in his early animation classes. Click animation-interface.ms to download this script.

JB_Manager(MelScript):

The jb_manager script was created so that I could keep better track of keyable properties on objects in Maya. Information displayed in the attributes window depends on the type of variable the property is. An example would be that rotateX is a float and so a floatfield displays the information, visibility however is a boolean, so it is displayed as a checkbox. In addition to tracking keyable properties this script can also give me information on child objects of the selected object. Click jb_manager.mel to download this script.

JB_Tools(MelScript):

The jb_tools script was created in an attempt to bridge the gap of tool differences between Max and Maya. It is a three part script that incorporates target welding, chamfering of edges and connecting of edges. All these tools that can be found in 3ds Max are missing from Maya. Maya has its own methods that can achieve the same results as these tools, but with more effort required by the user. This tool set was created to ease the transition to Maya for users that are more familiar with 3ds Max. Click jb_tools.mel to download this script.

Visual Simulations in C++