General R & D

This page contains a random collection of R&D tests. Its a bit of a mish-mash of stuff, but theres a good range of things that may be of interest.

The first 2 videos here show a small project I developed whilst getting to grips with Unity. This was early version 3. Its basically a space navigation system where the player can override direct control of their vehicle and switch to auto-pilot which tracks a user defined target. Under the hood, I also built a custom level builder that wrapped around an XML based level description. Each system has its own sun, that all the planets orbit around relatively. Each planet could also have multiple moons. All node data was pulled from the XML file, including the absolute position of the system itself, the size of the sun, the size of each planet, the speed of its orbit around the sun, etc.

Just for fun I switched the project from a 2D top-down game to a fully 3D cockpit view. The only thing I didn't get working was damping on the pitch, roll and yaw when under manual control - ah well...

Simple point and click navigation using ray-casting and surface collisions. All inputs based on mouse position projected into camera space. I added a "mode" whereby if the user stopped clicking for any length of time, an automated system would kick in and start firing rays at random points and time.

The next video shows one of my biggest single projects to date. This was a complete system prototyped in XNA as a proof of concept for a time of day management system. This was built for Armada of the Damned at Propaganda games and went on to be wholly incorporated into the main game, including the shaders I wrote for the sky itself (albeit slightly modified and optimized).

I did everything here from building the artist editor in C#, to developing the entire engine-side management framework and the shaders to handle all the rendering. I used XML to store artist generated data that the engine could read and initialize. At its basic level, the system stored "states" of time that described the sky and general environment settings like fog and lighting. These states were interpolated between in a linear fashion providing a simple timeline. Global parameters could be set to control the transition between night and day and this influenced the position of the sun and moon. I also exposed a special "supernatural" layer that could be switched to at any point, which was a major theme for the game.

I wrote this script for a friend who needed a quick way to decimate level geometry based on a user defined pattern. This basically automated the process of breaking large models down into chunks that could be more efficiently culled in real-time (Unity was the target platform)

Just for fun, I wrote a very simple A* path-finding algorithm using Python in Maya.

Look development done at Propaganda Games using Mental Mill. This shows a complex shader that could "grow" barnacles and grime on a character to make them look like drowned, other-worldly creatures.

Here is a real-time preview of the output of the network shown above:

Another C# / XNA piece used to demonstrate how we could store small packages of tint-data to be used in-engine to get additional variation between customizable character components

Another Mental Mill prototype to demonstrate the use of masks in a shader to define areas of customization on character faces

This is the shader above, shown in context of a larger customization demo developed in Maya using a combination of blend-shape and shader based manipulation.

This is the first incarnation of my custom vertex color tool (shown on the General Tools page). It was built to service content created for Armada of the Damned where we made use of the RGB and A channels to store independent data such as AO (greyscale only), Terrain blending and foliage deformation weighting. Uniquely, this tool allowed the artist to store the channels separately in order to make it easier to work on the individual data and then collapse all the channels into an export color set prior to exporting the model asset

Old R & D learning how ray-casting worked in 3D Studio Max - Version 8! - Very rudimentary stuff but it was a great learning experiment.

Another Ray-Casting experiment - building a simple conform to surface command