Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Id Software's Id-tech-4-BFG in the Ada programming language.
Ada GLSL Other
Branch: master



The aim of Ada Doom3 is to re-engineer the id-tech 4 engine with a clear dependency hierarchy, and robust tasking systems.

Planned Features:

  • Load and play doom 3 bfg levels
  • Load Valve map workshop levels
  • Native ports for Windows, Linux X Windows, Mac OS, and SDL
  • Input support for generic and all major game-pads
  • Multi-monitor windowing
  • Threaded rendering with support for using multiple graphics cards
  • SIMD math library
  • Responsive multi-player
  • Steam support for user accounts and achievements


To compile with GPRBuild:

cd Setup

gprbuild -p -P neo.gpr

Or the Gnat Programming Studio IDE may be used (email is optional):

To compile with GPS click the gear and hammer button after ensuring the scenario drop boxes are correct.

After successfully compiling press play ▶ to run.

Using Git

Github's tutorial on installing and using commandline git:

Frequent commands:

git init

git config --global ""

git config --global ""

git remote add origin

git pull origin master

git pull origin branch

git commit -am ''

git push origin master

git push origin master:branch


Begin adding Linux/Mac support by implementing stubbed functions/subprograms

Getting Started

To begin developing for AdaDoom3, first examine all of the “base” system and foundation components in the /Code directory.

Each package in this folder (as all packages in Ada) consists of a specification (ads) and a body file (adb). For clarity, everything but subprogram, package, protected type, and task bodies are placed in the specification (including global variables and private function prototypes) allowing an entire overview of user-important information in one file.

It is highly recommended to examine the foundation files first as they will be included at almost every level in the design. They contain all of the basic components: data types, utilities for testing packages, and redirectable text input and output. The data types file is especially notable, because it renames all elementary Ada data types to be more descriptive by including each type’s byte size and range (i.e. renaming Integer to Integer_4_Signed). Although it is possible to use the non-renamed data types with the renamed ones interchangeably, it is not recommended.

More to come...


Something went wrong with that request. Please try again.