3D Quake-like engine from scratch in C++


The goal of this project was to get better at programming. I was going to set myself a task that seemed almost impossible. I wanted to build a Quake 3-like game engine in C++ from scratch. I also restricted myself to only 2 libraries: OpenGL and OpenAL. The game also had to be able to run on a Windows 98 machine. These restrictions all had a very specific purpose. Only allowing myself those 2 libraries meant I had to write almost everything myself from scratch. The Windows 98 machine restriction was purely to force myself to make it as efficient as possible. With that said it was time to get coding. I was pretty new to C++ at this point so I started by getting a dev environment set up (G++ on Linux). Then I went to work figuring out how to use openGL. After I had that working I went and designed a function to detect collisions between convex quads in 3D space. I implemented that and added some simple physics and input. It was starting to look like a game at this point and I decided to change my dev environment to a Windows XP VM running Visual Studio C++ 2005. Since it was all basically bare C++ code I didn’t really have to change anything to make it work. I then built weapons and network code and that’s about as far as I got. It works. It may not be perfect or beautiful but I had a working engine and I had done something that I thought I couldn’t do.

Level design

Code design

Screenshots & vids

To top