Necromania: Technical Design

Technical Design

About This Document

Work in progress.
This document covers technical design aspects of Necromania.
New terms are emphasised upon definition.
Brasse (
Elemel (


Necromania is a side-scrolling dungeon hack platform game, all in glorious 2D. At a first glance, the graphics we will use might look a bit simplistic, as seen in this piece of concept art, but we will spice that up with rigid body physics, spectacular animations and amazing gameplay. What we want to do is to build a game with simple graphics and focus on making that graphic bahave in an interesting and realistic way. For the animations, we will focus on the movement of the characters rather than realistic-looking characters. The world that these characters will interact with and move around in will be simulated using a 2D rigid body model. This will give us lots of interesting and exciting options when it comes to the actual gameplay.

Graphics API

At the lowest level of the graphics system we will have some cross-platform library such as SDL or GLUT. Which library this will be is not entirely decided, altough we are leaning towards GLUT. We do not want to have to depend too much on what the underlying library is, if GLUT turns out to be unsatisfactory we want to be able to switch to another library easily. To do this we will define the API that Necromania will use to handle graphics and window related tasks, and implement the glue that tie this API to GLUT (or some other library). Switching to another library should then only consist of the simple (you wish!) task of creating the glue to tie our API to that other library.

Our API should provide us with functionality to do (at least) the following:

In some higher-level API, we will define things like animation functionality.

Rigid Body Physics

On top of the graphics API we will have a physics simulations layer, more specificaly a 2D rigid body physics layer. We will use this in order to make the objects in or game world to behave in a realistic way.

The physics API should provide this functionality:

Animation System

Future Extensions