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.
- OS: Windows/Linux/macOS
- Graphics: OpenGL 3.3 or better
0. Clone this repository
git clone https://github.com/lambdacube3d/lambdacube-quake3.git
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 linuxq3ademo-1.11-6.x86.gz.sh
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.
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
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: q3tourney2
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.