Current Position - Climax Entertainment Ltd.

I have been working at Climax Entertainment for nearly two years during which time I have played a major role in the development of their upcoming Leviathan game engine, an engine designed to accommodate a wide variety of massively multiplayer online games. Whilst working on this engine I have been responsible for many 'key' features which have been implemented. These include the following outlined below.

Real-time Stencil Shadows

Implementation of shadows in the engine has been done on both vertex tweened characters (animated) and static objects (such as buildings). Due to dynamically changing lighting conditions in the engine, shadow volumes needed to be calculated 'every' frame, for example day night cycles where the sun would never be in the same position for more than a few minutes, this meant that pre computed texture shadows cannot be used for realistic shadow effects.

Therefore while developing and introducing these shadows into the engine, efficiency had to be considered as a priority. This meant I had to stick to generating shadow mesh data once at runtime, sending it to the graphics card, and then using vertex shader's to control the animation of the shadow, so as to not send vertex data to the graphics card each each frame (as this is not possible with the high detail of the models used in the scene).

Techniques used were:

  • Depth-Fail technique, meaning a perfect shadow is generated even when the eye point is inside a shadow volume.

  • Reverse extrusion, to allow shadow meshes that are different level of detail to the object being shadowed, if reverse extrusion is not used for this then shadow anomalies can become apparent on the front of the shadowing object.

  • Shadow geometry built in different levels of detail to allow full control of detail of the shadows, also built from both patch data and polygon data used in the models.

  • Use of the stencil buffer for shadowing means that self shadowing and shadowing onto objects in the scene becomes  easier than when using protected texture shadows.

In-game User Interface Library

I have also been responsible for the implementation of the GUI in the Leviathan game engine. It has been created with user customisation in mind, what I mean by this is that flexible user interfaces can be created by someone with no programming knowledge in a simple set of XML scripts. This means the job of making the interface look good no longer resides with the programmer and moves to the place of an artist.

Features include

  • Full window system available similar to that of Microsoft windows.

  • Full customisation of graphical look, using 2D textures and even 3D models.

  • Driven by XML scripting, no programmer knowledge required to create UI's.

  • Rendered using HLSL vertex shader's which allows more flexibility over the rendering pipeline.

  • Event system based on Signals and Slots mechanism, so the data can be sent to the client from the interface (and vice versa) without the two libraries knowing about each other. (a simple example would be that of a button presses).

 

Pre-client patching application

As any MMOG (Massively Multiplayer Online Game) player would know, the standard way of launching the game is through some sort of patching system. Whilst working on the Leviathan engine I also worked on the pre-client patcher. This basically involved working with MFC's (Microsoft's foundation classes) in order to create a series of fully skinned interfaces that suited the game it will launch, and also included writing client code to control some of the patching process.

Features included:

  • Fully skinnable windows using bitmaps with one bit alpha.
  • Fully skinned controls, such as buttons, scroll bars and list controls.