Created: 2011-07-17 14:26
Updated: 2018-12-24 03:21



Lynx is a simple 3D FPS with zombies :) If zombies won't convince you, there are some other features:

  • Multiplayer with robust smooth network latency interpolation
  • Network compression (delta compression and PPM range coder)
  • Multiplatform support (Windows, Mac OS X, Linux)
  • OpenGL 2.0
  • Per-pixel lighting
  • Shadow mapping (dynamic)
  • Light mapping (precalculated)
  • Normal mapping
  • MD2 and MD5 mesh support
  • MD2 interpolation on hardware (allows to render tons of enemys)
  • KD-tree compiler for collision detection on complex geometry
  • Blender as a map editor
  • Dedicated server mode
  • Did I mention zombies?

lynxmd5 lynxmenu



On Linux and Mac OS X, the project is using cmake to generate a build environment for the project. On Windows, you can use the Visual Studio project files.

External Libraries

Download and install the following libraries:

SDL is used for the cross-platform low level access to audio, keyboard, mouse and 3D hardware. SDL mixer is a cross-platform audio mixer library. GLEW is the OpenGL Extension Wrangler Library and is used to access OpenGL extensions.

Compile Lynx on Windows

Use the Visual Studio 2010 project file


And compile the project. Make sure you have the libraries in path.

Compile Lynx on Linux and Mac OS X

Download Lynx from Github

git clone lynx

cd lynx

Create a build directory in the lynx folder

mkdir build

cd build

Run CMake from the build/ folder

cmake ../

This will create a Makefile


This will create the client executable lynx3d

lynx/build/src/lynx3d (game client and server)

And a dedicated server module lynx3dsv

lynx/build/src/lynx3dsv (dedicated server)

Copy these files (lynx3d and lynx3dsv) to the game directory:


The game folder contains the baselynx folder, where all the resources are stored.

Create a level in Lynx

You need to have your geometry available as Wavefront .obj file with embedded texture coordinates. Make sure the face normals are exported too. The usemtl keyword in the .obj file points directly to the texture file. No .mtl files are supported. Then you need to convert this .obj file to a .lbsp file with the kdcompile helper program. kdcompile reads the .obj file and writes a Lynx compatible .lbsp file.

kdcompile mylevel.obj mylevel.lbsp

If you have a lightmap available, you need to place the same geometry in a lightmap.obj file, but with lightmap texture coordinates. The lightmap itself is stored in the lightmap.jpg texture.

Currently I am using the gile[s] radiosity lightmapper to create lightmaps. Link:

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more