This page serves as the link point to a pair of software demonstrations I put together in the late 1990s. Both demo packages can be downloaded from the links to the left.

The first demo is of a full video game that I built for a class and then continued to tweak for a few months afterward. It is a 2D space shooter that follows a rock/paper/scissors paradigm with regard to weapons and enemies. The README file in the package explains about the game.

The second demo started as a small part of a video game, but became much bigger than I ever expected. I attempted to make an all-purpose, multiple input/output particle system API in C++. It renders in OpenGL as points or textured quads, but it could be extended to output to raytrace flat-file formats, bmp files (for AVI animation), and so on. The code is now in relatively stable beta configuration, though it isn't yet very pretty.

The guts of the particle API are classes for a particle, a particle system, and a root system (the world). The root system is there so that constant things like wind, gravity, and other things can reside in one place. Unlike most particle systems I've seen, in this one each particle has its own size and mass, and most importantly, hooks to attach entire other systems. This means that each particle can trail sparks or explode. The executable (ParticleDemo.exe) requires that OpenGL be installed on your machine, and works best with hardware acceleration. It includes contrails, fireworks, explosions, and smoke.

When a particle dies (fades to nothing, gets too old, moves too far, etc.), there is an option to propagate any attached systems to the particle's parent, whether that be a system or the root system. Particles attached to the root system are called anchors, and are mainly used to direct where a system goes. For example, in the demo anchors are used to direct the path of the fireworks and the explosive shell.

In order to allow transfers from particle to root-system and back, I implemented methods to detach and then attach any particle or system from and to the root-system and particle systems. This makes the three main classes completely interlinked.