Personal Work

Outside of my educational and professional obligations I like to work on projects which present interesting challenges.

Shard Engine / Dead By Destiny (C++ / HLSL / Direct3D / Newton / Getic)

Shard Engine is an ongoing educational pet project - an attempt to create a fully-functioning engine based on techniques I read or hear about, when I get the urge to program something outside the boundaries of whatever I'm working on professionally.

Primary features include:

  • HDR rendering and fullscreen postprocessing
  • BSP environments loaded from Zalsoft Getic
  • Newton-based physics simulation
  • Basic Lua scripting support
  • Custom shader/material system
  • XML-based game object declaration
 

Shard Engine Map PreProcess (C++ / HLSL / Direct3D / Getic)

One of the ongoing problems with the Shard Engine after allowing it to load Getic BSP was that the lightmaps Getic generates are low dynamic range and generated according to an unknown lighting algorithm, causing non-lightmapped objects to stand out starkly. The solution was to create an intermediate tool to replace the lightmaps.

 

Relief Mapping for Half Life 2 (C++ / HLSL / Source Engine)

During the development of Cerebral Corrupt, I happened to read Fabio Policarpo's paper on Relief Mapping. As a potential feature for our game I created a derivative of Half Life 2's standard object shader which performed Relief Mapping before the usual texture and lighting steps. Asset production schedules and shader model issues prevented it from being useful in the team project, but the demo itself was pleasing and gave me a very interesting education in Source's unusual approach to shaders.

 

2D Physics Engine / Starship Sumo ( Java )

Out of a desire to try out a language other than C++ and a growing interest in physics simulation due to working with the Newton API, I decided to attempt to make a small game using realistic physics behaviour that could be embedded into a web page. The engine uses simple Euler integration and treats each object as a collection of convex polygon hulls, except for point objects which are treated as a special case.