This page provides a summary of all of my major projects to date which have been programmed in C++.
Ginever Engine (2011-2013)
The Ginever Engine (GinENGINE) is a state-based 2D games engine which makes use of the Win32 API, Direct3D 9X, and the FMOD Ex sound system. The engine was written in order to act as a complete replacement to Game Maker. It is designed to be easy to learn, with core functions split into relevant modules – for example, drawing a sprite is accomplished by calling SPRITE->Draw(), and playing a sound effect is achieved by calling SOUND->PlaySoundFX().
The engine also integrates with the Mercurial version control system. This provides two benefits. Firstly, it allows games and programs based on GinENGINE to quickly update to the latest engine revision by doing a pull and merge. Secondly, compiling a release build of the program automatically stores the latest executable and game assets in a public repository, with the source code revision number being embedded into the program. This allows testers to quickly get hold of the latest compilation without communicating with the developer, and to file bug reports relating to a specific revision of code without requiring access to the entire project.
Spellmaster II (2012-2013)
Spellmaster II is the work-in-progress sequel to Spellmaster Classic, a program which helps people play Magic: the Gathering (and other collectible card games) over long distances. It is currently in the early stages of development and uses GinENGINE as the core framework. The primary goal of the Spellmaster II project is to develop a LAN-enabled version of the program, allowing people to play over a virtual private network such as Hamachi.
Spellmaster II reads the game data from externally stored XML files, which contain information about each playable card. This provides the game with a much greater amount of information than that which is available to Spellmaster Classic. The XML files are built using online databases and can be updated without needing to patch the game executable, which reduces the amount of work required by developers when a new set of cards is released by a publisher.
Spellmaster II is currently in an early alpha stage. The latest build can be cloned using Mercurial but is not suitable for public use and contains a large number of bugs and unfinished features. If you still wish to download the latest build despite this warning, you can do so by pointing your Mercurial client at the following URL and performing a clone operation: https://hg.ginever.net/spellmaster2/public/
Paulipede is a basic centipede clone that was written for a university assignment under the name “Sort of like Centipede”. It initially made use of the Teesside University PRG Library in accordance with the assignment requirements, but the inefficient nature of the PRG Library made the game impossible to feasibly release. During the development of GinENGINE, the decision was made to port Paulipede to GinENGINE in order to compare the efficiency of the two frameworks. The end result was that the CPU usage on the test system reduced from 78% (with PRG Library) to 2% (with GinENGINE).
Paulipede was the first C++ program I wrote that features a high score system. High scores are stored in an external text file with the HST file extension.
The latest public build of Paulipede can be downloaded from the Ginever Alliance Mercurial repository system. Click here to download it. To run the game, you will require a computer running Windows XP or later, with both the Microsoft Visual C++ 2010 Redistributable (msvcp100.dll) and the DirectX June 2010 Update (d3dx9_43.dll) installed.
You may alternatively use a Mercurial client and clone the following repository: https://hg.ginever.net/paulipede/public/
HAPI-Shooter is a basic vertical-scrolling shooter written for a second year university assignment. It was inspired by the Super Nintendo game “Strike Gunner STG”. The game uses Keith Ditchburn’s HAPI and combines both states and an entity system as part of the engine design. It also makes use of the high scoring system from Paulipede.
The game has multiple enemy types, an adapting weapon speed, and a kill-streak system. The enemies are randomised, meaning that the game play is theoretically endless and will terminate only at the request of the player (or when the player runs out of lives).
CrimMap is a 2D RPG map editor built using GinENGINE. It was originally designed for a proposed C++ remake of Crimson, but could easily be adapted to design worlds for any 2D RPG.
Maps are stored in a proprietary binary format with the CRMAP file extension. The file format header includes space for version data, allowing newer versions of the CRMAP format to be created with more features. The editor currently includes support for multiple layers, tile types (water, wall, etc), map connections, and location data.
Other Notable Work
I am currently working on my own fork of the game “OpenTTD”. This is implemented as a downloadable patch pack which adds a number of new features to the game, such as colour-coded town names and alternative rail type support. The latest build of the fork can be downloaded from the Ginever Alliance Mercurial repository: Click to download
I have also worked with C++ in the 3D Graphics Programming module at university, where I used Direct3D 10 to build an application that used multi-pass rendering to draw a model of the Sponza atrium, with a point light and shadows. Appropriate vertex and pixel shaders were written in HLSL for this application.