darryl@dbarnhart.ca
Darryl Barnhart

Unless otherwise specfied, all code is functional and MSVS 2008 projects are provided.

SimArson

May 2009

On May 1st I participated in TOJam 2009, a weekend long event to make a video game. Despite having my final exams and sleepless night leading up to it week, I was able to pull it off. Then in the 2 weeks following the event, I greatly enhanced the rendering.

The latest version incorporates the following technical features:

I'd like to thank the people that assisted me:

I'd also like to thank all the TOJam organizers!

Please head to the TOJam website to check out the other games as they are released!

Be advised there are two versions, for Nvidia and ATI respectively. The reason for this is that I do not own an ATI card, making debugging very difficult; I have to rely on my friends with ATI cards for assistance. However, I encounter many issues with ATI, so after finally getting a version working, I decided to discontinue supporting them. Consequently, the Nvidia version (pictured here) is much more advanced, and should work on Geforce 7000 series and up. The current ATI version should work on Radeon 2000+ GPUs (at least it did with Cat 9.4 drivers on my friends' machines), but no guarantees. I may switch to DirectX 10 on my next project in order to circumvent this issue.

SimArson 1.2 - Nvidia SimArson 1.1 - ATI SimArson 1.0 - TOJam Version (buggy)

Blobby Water

April 2009

This is a final project for my physics class, that I went above and beyond with in implementing a deferred renderer with reflection, refraction and distortion. I also programmed the Win32 and OpenGL framework for the program. The physics is done using Box2D, and my other team members set up that aspect of the program. Image loading is done with the corona library.

Unfortunately, as I do not have an ATI GPU available to me, I have only been able to test this with Nvidia. If you have a modern ATI card and there are errors, please let me know and paste the console output if any.

Requires OpenGL 2.0, GLSL 1.2, FBO and FP16 render target support.

Source Code & Binaries

Common2

April 2009

A new version of my Common library in which I am rewriting selected parts of the old one using my now greater knowledge and experience. It makes use of the most excellent library boost anywhere and everywhere appropriate.

Source Code

Mobile Frogger Clone

March 2009

Another school group assignment, though this is the final product with everyone's contributions. I myself wrote the multi-threaded framework, initialisation, and did much of the sprite editing. Bonus marks if you know the source of the sprites!
Written with NetBeans and JavaME.

Source Code & Binaries

Racing Game

April 2009

My contribution to a top down racing game for a group project in a software design class. It consists of a heavily modified version of a track editor provided by the professor (Netbeans project), and the actual race game engine (Rational Architect 7.0 project). The track consists of a base track path, which is expanded and contracted into a series of lanes that cars can race along. The AI evaluates the curvature at its location on the track and moves to the inside lane (somewhat slowly).

Source Code & Binaries

Basic PHP Blog

April 2009

A simple threaded blog/discussion implementation in PHP done for a class assignment. It uses a flat file for storage of the posts. There are a few non-sense posts already present as a demonstration.

View Page PHP Source BlogEntry Class

Perl CGI Scripts

February 2009

A few CGI scripts written in perl for a class assignment.

The first link below is a listing of everything from which you can execute the various scripts. The following links are readable versions of those scripts.

Listing Scripts.cgi bday.cgi webbook.cgi

Compiler

January 2009

Work in progress

An attempt at a compiler, or at least the parser of one. Doesn't do much as yet, but I'll see where it goes. Eventually, I'd like to integrate it with LLVM. Unfortunately, I've been too busy with school projects, Common2 and this website to do much work on it.

Source Code

Isosurfaces on the GPU

October 2008

April 2009: Updated to fix some lingering bugs.

GameDev.net Image of the Day - The following description is from there.

First of all, I want to acknowledge Inigo Quilez and his previous submissions (see here) for inspiring this. I also want to acknowledge Auld, as I based my program off their code for Chocolux, which I got from Inigo's NVision presentation.

I implemented surface evaluation, normals, phong lighting, shadows, ambient occlusion and some crude animation. However, unlike Inigo's distance function system, I used Newton's method to evaluate an arbitrary field. In this case, 1/distance to get the metaball effect. I also found this method is much faster, requiring only 16 iterations to get the present results, with no particular penalty on surface edges. In the images, the green component represents the number of iterations to find that pixel, whereas lighting is mapped to red.

Source Code & Binaries

XNA Sandbox

October 2008

Around the same time as making the isosurface program, I decided to try my hand at XNA, and produced this simple program. It demonstrates spline skinning using Frenet frames, and I also ported my mouse look code from UltraViolet to it.

Source Code & Binaries

Ball Collision

April 2008

April 2009: Updated to work with the updated Common library

One of my school assignments that I particularly like. Basically, I took UltraViolet, stripped out its physics components and used what was left as a framework for this. It has a number of 3D balls that collide and bounce off each other. The collisions are predicted by solving for time with:
radius1 + radius2 = magnitude(position1+velocity1*time - position2+velocity2*time)
At the moment, the balls are only moving along a plane, but it can work fine in three dimensions.

Source Code & Binaries

XML Timetable

March 2008

An editable html table generated from an xml file. It represents my timetable from my second semester at Humber College, and was created for a class assignment.

Only works in IE

HTML XML XSD

UltraVoilet

2007

March 2009: Updated to fix some bugs, improve the controls and make it compile with MSVC 9.0.

In order to compile this, it must be placed alongside Common's folder.

Building upon my work in UltraNet and my Common library, I implemented a flexible particle physics system in UltraVoilet. Presently, it simulates a cross of particles being sucked back towards a point of gravity. It uses Eular integration for speed, but 4th order Runge-Kutta is available as well. In addition, I coded full mouse look and directional movement functionality, position based particle colouration, and accumulation based motion blur. There is also the option of replacing the standard background texture with animated Perlin noise reminiscent of white noise.

Source Code & Binaries

Common

2007

March 2009: Updated to fix some bugs in the windowing classes and make it compile in MSVC9.0.

Note: Selected elements of this are being completely rewritten and updated in Common2.

A collection of code, libraries and data structures that I have accumulated since around 2003. It contains the following:

Source Code & Binaries