Skip to content
Quake 3 map viewer in Haskell using LambdaCube 3D
Haskell C
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.

Build Status Join the chat at

First person shooter game in Haskell

However to be honest at current stage it's just a map viewer...

The motivation of the project is to experiment with purely functional design of a real word 3D computer game.

For technical details check presentation video The innards of a purely functional 3D shooter game engine (influenced by Quake 3) from Haskell Exchange 2016.

To get an overview of LambdaCube 3D watch the showcase presentation video.

System Requirements

  • OS: Windows/Linux/macOS
  • Graphics: OpenGL 3.3 or better

Install Steps

0. Clone this repository

git clone

1. Get pak0.pk3

First you have to get the pak0.pk3 file which contains the game data. You can get it for free from Quake3 Demo version. Here are some alternatives:

  • (a) download Quake3 Demo pak0.pk3 directly (EASY)
  • (b) step by step instructions to extract pak0.pk3 from Quake 3 Demo, first download

If you own the full version of the game you can use the pak0.pk3 from it also.

Then copy pak0.pk3 to the directory where you execute the application from. E.g. ./lambdacube-quake3

2. On Linux install the following libraries.

i.e. on Ubuntu:

sudo apt install libgl1-mesa-dev libxi-dev libxcursor-dev libxinerama-dev libxrandr-dev zlib1g-dev libpulse-dev

For other Linux distributions make sure the corresponing packages are installed.

These libraries required for OpenGL development.

3. Compile & Run

To compile you will need Haskell Stack.

stack setup
stack build
stack exec q3mapviewer

Example Run

When you run it you have to select a map by typing it's name. E.g.

bash-3.2$ stack exec q3mapviewer
Available maps:
q3dm1 q3dm17 q3dm7 q3tourney2
Enter map name:

The application will search pak0.pk3 in the current directory and also will create the .lc_q3.cache folder to cache the compiled graphics pipelines. It reduces the loading time if the map was loaded before. Quake III level viewer

You can’t perform that action at this time.