This is the current homepage for Hyper Imperia: Game Mechanics Development & Demonstration Program Prototype 1 (HI-GMDDPP1 for sort-of short). Here you can find an introduction to the project, access information about the engineering and background of the program, and a section to get distributables of both the project files (including some documentation of the code) and the binaries of the program.
This project is released and licenced under the BSD 2-Clause License.
The title of the program is somewhat of a mouthful, but it should give some idea of the reason for its existence. The program was (and still is) intended to be a small first step on the path to developing a far more ambitious, long-term, project which I currently call ‘Hyper-Imperia’.
Its main, functional, purpose is for the development and demonstration of the basic game mechanics of a portion of a larger game. These game mechanics are those of a turn-based terrestrial strategy game in the mould of a classic Sid Meier game such as the Civilisation series, Colonisation or Alpha-Centauri. Taking a step further, these mechanics are basically no different to those of a simple board game, such as chess.
The game itself consists of opposing sides (parties), controlled by either a human or AI player, and a square game board full of spaces representing a geographic map. Each space can be ocuppied by entities belonging to a single party. Entities are either units (mobile entities) or settlements (stationary entities). Settlements create a single unit every five turns and a unit can create a settlement at any unoccupied space (a process which eliminates it). Units can eliminate enemy entities by attempting to move to a space occupied by an enemy entity. The attack is resolved such that one of the entities is eliminated and the other is victorious. The attacker takes the space if it becomes vacant. The objective of each party is to eliminate all other parties by eliminating all opposing entities from from the map. Each party starts with a single settlement and each player takes turns moving, attacking or constructing with each unit and the game continues until one party is victorious.
The program is a protoype in the sense that its creation was (ultimately) intended to give rise to a true game mechanics development platform for this area of the larger game.
Latest Distribution Packages
The HI-GMDDPP1.exe executable should run from the directory it’s unpacked into. I don’t currently provide any instructions for how to use the program but it is quite simple and it shouldn’t take too much effort to work out.
I don’t currently include any information on how to build the project but it should be possible using the Qt4 SDK (including MinGW), QMake and some perseverance. QMake project files are provided.
I plan to include detailed information on how to use and build the game in the future.
- Iterative & Incremental
- Model Assisted/Driven Development
- – The entire static structure of the program was modelled (to varying degrees of detail)
- – Significant/important desired behaviour was modelled
- Test Driven Development:
- – All non-GUI class (including abstract class/interface) definitions were written and completed prior to any functional code being written.
- – All unit test cases were defined and implemented prior to any functional code being written.
- – Comprehensive unit tesing of non-GUI code (400+ test ~2x(+) that in assertions)
- Limited integration testing
- Ad-Hoc System Testing
- Comprehensive mocking: All non-GUI classes mocked.
- Comprehensive code in-line documentation written.
- – Class definitions documented when first written
- – Implementation documented during implementation.
Revision Control: CVS 1.12.13 (Cygwin)
UML Modelling: Visual Paradigm for UML® (Community Edition) 8.2
Language System: C++ (-gnu-C++98)
IDE: Eclipse® (Indigo)
Build Tool: QMake 2.01a
Compiler: GCC (MinGW) 4.4.0
Unit Test Framework: Boost.Test (Boost 1.49)
Mocking Framework: Google C++ Mocking Framework 1.6.0
Code Documentation Comments System: Doxygen 1.6.1 (Cygwin)
Third Party Libraries
- Qt (4.8.1)
- Boost (1.49)
Detailed Development Information
Here are links to pages providing more information on various aspects of the project. I plan to develop and grow this section over time.
To find out about the various parts of the conception and development of the program check out the following page: