DokaClone! Project

This project was created in an attempt to replicate the gameplay of Sugoroku/Mario Party-esque games in line with the Dokapon series, combining RPG elements with turn based strategic traversal to earn money and utterly destroy your friends. The largest challenge on this project came down to creating a search algorithm that fit the particular criteria of movement that this style of gameplay requires - on a complicated graph that includes various looping branches, find all possible paths that are exactly N steps long, allowing for traversing around a loop multiple times to reach the initial node if necessary. The ultimate solution was a modified depth first search utilizing recursion, and storing each potential path into a structure to retrieve and evaluate against later to find all possible end points. Outside of the search algorithm and various interstitial functionality, the core loop is created entirely through the NodeCanvas visual scripting tool, with the ORK Framework as a sidealong for handling all things RPG.

Interactive Shader Demonstration

My shader work is presented here in the Unity Engine, demonstrating the customizability of the Toon shader, as well as the ability to inspect each shader from all angles. Left click to rotate the camera. Additionally a static demonstration of each shader can be viewed below for devices which do not support the interactive version.

Face Tracker Demo Project

This project was created as part of a facial tracking tool with the intent of providing a friendlier view of where the user's head was relative to the camera and to provide feedback to help align them with the sweet spot. Using PlayMaker, the entire project was built on a series of node based finite state machines to enable rapid prototyping to match the client's needs. While intended to be fed position information from the camera, for purposes of this demo and for early prototyping purposes, input is fed purely through the mouse position relative to the application. Additional layers of feedback in the forms of edge warnings, and approach and retreat indicators were built to be easily adjustable to fit a wide variety of potential input ranges, while still remaining clear and rapidly parsable.

All shaders shown here are created in the Unity Game Engine with the use of Amplify Shader Editor and Unity Shadergraph.
Deadpool character rig courtesy of Kiel Figgins.
Zelda character rig courtesy of Christoph Schoch.
Other character models courtesy of Protofactor, Inc.

Background Image

Generalized Toon Shader

Created with the goal of being easily customizable to fit the needs of various scenes and lighting conditions to create a unified aesthetic while working with models from various authors and designs.

Tell Me More
Background Image

Dithered Holographic Fade Out Shader

Created to give the effect of a holographic figure, with 'bits' of data constantly flowing upwards to maintain their appearance, while fitting within the limitations of a VR environment.

Tell Me More
Background Image

Dithered Transparency Corruption Shader

Created to provide a quick, but visually interesting way to transition in and out of transparency in a VR environment, and to provide an artist friendly way to induce a 'corruption' effect to visually show the spread of disease.

Tell Me More
Background Image

Localized Dithered Transparency Shader

Created to provide an easily movable area of transparency or opacity, with adjustable dimensions and controlled via a locator that can be controlled by scripting, while fitting within the limitations of mobile VR.

Tell Me More

Generalized Toon Shader

This shader grew out of the goal of developing a universal shader that could be applied to any given character model, and adapted to fit the needs of a scene's lighting or aesthetic decisions. This goal grew out of a desire to have an easy, unified way to present animated sequences, while working with character rigs created by a variety of authors. In the images below, both characters are shaded with this shader, with parameters adjusted to account for lighting and design. Finally, three additional possible variations of the shader are presented as examples of what variations on those parameters can achieve.

Holographic Fade Out Shader

This shader was originally created for a holographic assistant in a VR experience, with the goal of creating the feeling of a digital character who was still physically present. To achieve this goal, two noise patterns are combined to create a digital camouflage effect, which is then passed to the alpha mask in order to create the illusion of digital 'bits' floating up to maintain the body. To fit within performance requirements of the Oculus Quest platform, true transparency was avoided, and instead achieved via dithered alpha cutoff.

As the original work remains under NDA, for demonstration purposes the assistant has been replaced.

Product Image

Dithered Transparency Corruption Shader

In order to provide a quick, but visually interesting way to transition in and out of transparency while still functioning on the Oculus Quest platform, this shader was created using a combination of effects. The first and most evident effect is the use of a dithered fresnel effect to provide the appearance of a holographic object. Secondly, a transition effect was created by passing a gradient through voronoi noise in order to create a varied edge for the transition between the holographic effect, and full transparency. Finally, to provide an artist friendly way to induce a 'corruption' effect to visually show the spread of disease, a spherical mask was used that can be controlled through the placement of a locator in world space, allowing separate objects to share the corruption effect, even as they may be moving through individual animations.

Product Image

Localized Dithered Transparency Shader

To fit the need of a transparency effect that was both able to be moved in world space, independent of the object's position, as well as being of variable dimensions, this shader was created through the use of several remapped gradients to provide the boundary box for the transparency effect. Similarly, the sharpness of the edge between full transparency and opacity can be controlled by further remapping of these gradients. The location of the effect can be controlled through the placement of a locator in world space, allowing multiple objects to share this effect, regardless of their current state in animations.

Product Image