Game Engine
Below is an XML driven "engine" I wrote to educate myself regarding modern game engine design and data structures. Have implemented scenegraph, renderqueue, HID support, limited physics and collision detection, .x file import, textures, and other features. All of which are configurable though the XML. Key elements missing are scripting, AI and space partitioning. This is an ongoing "playpen" for me to extend when I'm ready to learn something new. It is not intended to ever be a full featured game engine. Several demos are included in the zips. See included readme files for usage. Requires DirectX9.

Download Binaries Version 0.08 1-17-05
Download Source Version 0.08 1-17-05
Core Design Document
XML Schema Specification

The screenshots below demonstrate various engine features. All shots were taken from the same code base, version 0.08. Only the xml and resource files were changed to generate the scenes below. These demos are included in the binary and source packages above.

A cube with a different texture applied to the top-left face than the other visible faces. The geometry and texture information is read from a '.x' file exported by Blender. Lighting, camera, view and scenegraph information resides in the XML file (generated by hand).

XML Scene File






This scene consists of two views and cameras. The primary view displays some sample geometry and the view frustum of the other camera. The small view in the upper left corner of the screen shows the same scene from the second camera's perspective. The engine is running in debug mode so objects that would normally be culled show as wireframe. Notice that the teapot is outside of the second camera's frustum and appears as wireframe to the primary camera. In the small corner view the teapot is not visible as expected. This scene is used to unit test frustum culling.

XML Scene File




This screen is split 50/50 vertically into two views. The cameras are orientated on opposite sides of the scene's geometry facing each other. The cube and the teapot are rendered blended. However, the monkey between the cube and teapot is solid. This scene is used to unit test the render queue system. Since the camera position is different for each view, the blended geometry must be rendered in a different order for each view. The precedence for the queue is configurable in the XML via the RenderPass tag.

XML Scene File





Brew (Wireless Games) Demo
Brew is a proprietary development API for phones by QualComm. It features good integration with the familiar MS Visual Studio IDE. Binaries can by tested in a "simulator" provided with the Brew SDK. Unfortunately, a $400/year fee is required to obtain the tools that allow you to test your game on a genuine phone and additional funds are required to publish. Nevertheless, it's a hoot to roll back to the '80s and work on some 2D fun that focuses on gameplay.

Brew Pong: This is my first Brew app. A simple pong clone to get a feel for the Brew API. I also posted the main source file which includes the meat of the game but omitted the overhead code, resources, etc.

pong.c









Shadow Volume Demo

An implementation of shadow volumes that I wrote as part of a class. It is not part of the engine above. DirectX9 required.

The small white spheres represent the light sources. One shadow is projected for each light source.

Download Binaries