Belzebubas was my very first attempt to write a Quake-like 3d engine. The work on it took almost two years and ended up in complete fiasco. However, I learned a lot during that time. Although the engine itself never came out of the embryo stage, I gained enormous amount of knowledge in programming, design and 3d engine architecture.
I started working on that project barely knowing C and at the time I abandoned this project, I knew C++ quite well, got familiar with STL, design patterns, general programming techniques.
From the techincal point of view, I got really huge knowledge about how 3d rendering engines are built. I gained knowledge in Visible Surface Determination (VSD) algorithms: Portals and Potentially Visible Sets (PVS). Space partitioning algorithms: Binary Space Partitioning (BSP) trees and Octrees. Due to the need of data files representing game levels I got accustomed with the Constructive Solid Geometry (CSG) problem.
I hope I will find some time in near future to describe this project in more detail. I had developed quite a complete image of how I was going to render things. It's neither much, nor high-tech, but it might be interesting for some folks.