Portfolio

What follows are several examples of code, writing, game and art Tim Holt has created related to game and software development.  Unless otherwise stated, all content copyright by the author and not to be distributed without permission.

Additional images can be found on the Projects page. For additional background information, a CV is available on request.

Code Example 1:  A rewrite of the default Shot Manipulator code in the Valve Source engine to modify bullet shot spread from a random pattern to a weighted shot pattern

While researching how the Valve Source engine handled distribution of bullet shots with its so called “Cone of Fire” system, I realized that the shot distribution was actually random rather than a weighted shot pattern as one might expect in a real gun.   Interested in seeing the impact of this new method on shot accuracy in-game, I rewrote the code to create a biased or weighted shot pattern rather than a purely random pattern as illustrated below.

Shot distribution patterns
Figure 1 - Shot distribution patterns

This rewrite has been incorporated into several mods and is publicly available online on Valve’s developer wiki.

ShotManipulator.cpp

 

Code Example 2:  A modified terrain shader for use with the Garage Games Torque Shader Engine

For the GNNViz project, I needed to modify the default terrain shader to allow rendering of close up detail textures for terrain near by, but also render satellite images over terrain viewed from long distances.   If you think about it, what you see up close with terrain is very different than what you see from afar.  Up close, you see the ground, dirt, twigs and so forth. But from a distance, you only see the tops of trees and not necessarily ground details.

Though brief, this bit of shader code greatly improves visual quality of the GNNViz terrain.  Besides handling near and far textures, it also effectively removes tiling artifacts with the detail textures by combining two copies of the same detail image scaled differently.

Shader Pixel Code

Shader Vertex Code

 

Writing Example:  Creating a new weapon in the Valve Source engine

As a writing and coding example, I have linked to a draft chapter of a book I have been writing on Half-Life 2 modding.  In this chapter I describe modifying the existing Valve Source RPG weapon to create a new type of weapon (a Crate or Barrel missile shooter).

Chapter_10_Coding_and_Scripting_Weapons.pdf

 

Game/Art Example 1:  GNNViz, a large scale forest visualization for the US Forest Service

Starting in 2005, I worked part time at Oregon State University in the College of Forestry on a large scale forest visualization project as a co-Principal Investigator.  The goals of the project were to create visualizations of largeforested areas using existing forest data to control the types and locations of trees placed in the virtual environment.

The project was first developed using the Garage Games Torque Game Engine Advanced, which is capable of handling the massive landscapes and game spaces required by the project.  A typical map might be on the order of 40-50 kilometers across.  Custom shaders were developed to provide effective rendering of both near and far terrain detail.

The two figures below show a typical forest scene in-game, with both distant hills and near terrain detail rendered with the custom terrain shaders.  Though the trees are rendered as simple 2d billboards (Z locked sprites), the technique is surprisingly effective.  This technique was used both to simplify development, but also to manage the load on the game engine.   A typical scene may include hundreds of thousands of trees in view at a time, so performance is always an important consideration.

GNNViz player in virtual forest
Figure 2 - GNNViz player in virtual forest

In both examples the terrain was generated using 10 meter digital elevation model (DEM) data along with digital orthophoto quadrangles (DOQ) photos for distant terrain detail.  As mentioned above, close up ground detail is handled by the custom shaders which I authored.  Ground textures were created by creating an extensive collection of real forest floor images I took using a digital camera.  The raw images were editing using Adobe Photoshop to make them tile and be usable in the game environment.

GNNViz, North Eastern Oregon, Blue Mountains
Figure 3 - GNNViz, North Eastern Oregon, Blue Mountains

To provide precise placement of trees in the GNNViz project, I have coded an extension to the Torque engine in C++ which uses gray scale image maps to control tree types, stand density, scale and tree form.  This foliage masking system gives control of tree placement as required by the project’s goals of visualizing existing data.  In the GNNViz project, these foliage masks are exported from GIS datasets of the project area, though any gray scale image can be used as a mask.

Particle system smoke and fire
Figure 4 - Particle system smoke and fire

There has been much interest in the use of the GNNViz project as a framework for studying forest fires and as a training environment for forest fire fighting training.  As an experiment in visualization, I placed a particle fire and smoke system into the game as illustrated in the figure above.

For additional images, video and information on GNNViz, see the project website.

 

Game/Art Example 2:  Project Mars, a Mars colonization themed MMO for education and learning

In 2006, I began developing a game concept of an Educational MMO for teaching Science, Technology, Engineering and Math.  It was designed around the theme of near future colonization of the planet Mars.  Mars has an intense and strange draw on mankind, from Percival Lowell’s imagined canals to the current Martian orbiting platforms and amazing discoveries of the Spirit and Opportunity rovers.  This game concept taps into that interest while providing a platform for experiential learning.

Though not a complete or playable game, I was asked to create a short demonstration of this game idea for Multiverse Network, Inc. to show at the 2006 Austin Game Conference.  The images below come from the content created as part of that demonstration.

Screenshot from Project Mars prototype
Figure 5 - Screenshot from Project Mars prototype

The figure above is an in-game screen shot showing a player character in the Martian landscape.  It was created using the Multiverse MMO game engine, using custom CG shaders for distant and detail terrain rendering.  The terrain was built from NASA satellite and digital elevation models for form and distant coloration, with detail textures for the ground made from various NASA image sources.

The figure below shows a space ship prop model for Project Mars under development for the demo.  The vehicle was built based on reference mission designs developed by NASA.  The model was generated with the Softimage XSI modeling application, and UV map textured with a custom texture generated in Adobe Photoshop from stock metal textures.

Prop model from Project Mars, developed with Softimage XSI
Figure 6 - Prop model from Project Mars, developed with Softimage XSI

To integrate the model into the Multiverse game engine, the model was exported into the open standard Collada format, and then converted to an Ogre mesh format which is used by the Multiverse engine.

In addition to several stills, I also created a short trailer for presentation.  It was made from in-game video captured with the FRAPS recording tool, and then composed using Adobe Premier to provide text, animation and sound.   The final video may be viewed online at http://multiverse.net/games/videos/mars_trailer2a_small.wmv

While developing design and reference documentation with this project, I began to experiment with an art technique for concept drawings.  The figure below shows an example of this technique, showing the space craft in situ on Mars, with a player model for scale reference.  The drawing was actually created after the model was generated by using a render image as reference, then using a WACOM tablet in Adobe Photoshop to create the hand drawn and colored look.

Concept artwork/illustration of the Project Mars landing vehicle
Figure 7 - Concept artwork/illustration of the Project Mars landing vehicle

 

Game/Art Example 3:  Medical Training Previs/Prototype for Texas A&M University Corpus Christi

In 2005 I developed a previs/proof of concept design for Texas A&M University Corpus Christi as they began researching the use of games for medical training.  Their research group had begun work on a longer term project funded by the US Navy, and were looking for a fast and inexpensive way to prototype some game concepts before committing to full development.

To meet this need, I proposed using Half-Life 2 as a base and to create the project as a mod (modification), allowing them to take advantage of the superior rendering and interaction environment provided by Valve’s game.

The project’s goals were not to fully model every detail of interaction a doctor might have with a patient, but rather to model the decision making process required in an ER for triage and proper treatment.  The concept is for players to make effective decisions such as checking the airway before proceeding to stop bleeding from an injury, or perform proper auscultation (listening to body sounds) to properly triage some conditions present in an ER.

In-game screenshot of ER room mockup with patient
Figure 8 - In-game screenshot of ER room mockup with patient

The project was developed using the Valve Source engine as a Half-Life 2 mod.  Except for the patient model, I developed all of the 2d and 3d assets, plus created several custom character animations for NPCs as well as modeled the player’s arms and hands holding a stethoscope.

Alternate view of patient with NPC medic
Figure 9 - Alternate view of patient with NPC medic

The prototype also featured a simple patient simulation which I developed, with C++ software controlling the patient’s heart and breathing rate integrated into the game engine.  The patient data was displayed real time on a dynamically rendered EKG machine display visible in the game, and could be monitored using a stethoscope “tool” the player is able to use.

Since the prototype was built as a mod of Half-Life 2, I was able to make use of the existing AI and entity systems to populate the prototype with computer driven characters including doctors and nurses.  By modifying the NPC character models (both 3d mesh and 2d texturing) it was possible to transform the standard HL2 “civilian” characters into doctors and nurses for the project.

In addition to coding the stethoscope and simple patient simulation, I also implemented a “task tracking” interface, so that players can see on-screen the different tasks they need to complete, listed and color coded by priority.  Though the task system is implemented in C++, it can be accessed via entities so that level designers can add or remove tasks from a players list.  This provides a nice layer of separation between the engine coding side of development and level creation, so that level designers don’t have to be exposed to the lower level code.

The stethoscope was implemented by creating a new “weapon” in the Source SDK code base, using the crowbar weapon as a template.  The stethoscope can only be activated if it is targeting set locations, and allows the player to hear a magnified heartbeat and breathing sound synchronized by the patient simulator.  Because they dynamically rendered EKG machine screen is also driven by this simulation, the player can use the stethoscope on a patient while also seeing “blips” on the EKG machine synchronized with what they are hearing.

 

Game/Art Example4:  Concept and Demo Art for a Half-Life 2 modding book

I have been authoring a book on Half-Life 2 modding.  In the process of developing the book, I have needed various illustrations and concept drawings, and so have been developing an art technique using Adobe Photoshop with a WACOM tablet to create “sketch” drawings.  These are not drawn completely from scratch, but rather are tracings from screenshots of various renders.

By using the WACOM tablet for precise cursor control, I am able to create a “sketch” drawing style, while also adding broad soft brush strokes based on original colors to create an effective ink and watercolor drawing look.  The “old notebook paper” background adds to the overall feeling of concept sketches.

The next figure shows a design concept drawing for a “Crate and Barrel Rocket Launcher” developed as part of the book.  It is for a mod known as “Crate VS Barrel”.

Figure 9 - Weapon development concept sketches
Figure 10 - Weapon development concept sketches

Here is an additional drawing created for the book, showing concepts for player models for the two teams in the “Crate VS Barrel” mod.

Player model concept sketches
Figure 11 - Player model concept sketches

In addition to these illustrations, I also created a short demo video of a rocket launcher concept whose development is documented in the book.

All coding of the new weapon behavior, plus 3d modeling and texturing was by me.  I also created the music used in the video by mixing various weapon and other sounds from Half-Life 2 to liven things up a bit in the video.