By Fabien Sanglard
Since I left my job at Amazon, I have spent a lot of time reading great source code. Having exhausted the insanely good idSoftware pool, the next thing to read was one of the greatest game of all time: Duke Nukem 3D and the engine powering it named "Build".
It turned out to be a difficult experience: The engine delivered great value and ranked high in terms of speed, stability and memory consumption but my enthusiasm met a source code controversial in terms of organization, best practices and comments/documentation. This reading session taught me a lot about code legacy and what helps a software live long.
As usual I cleaned up my notes into an article. I hope it will inspire some of us to
read more source code and become better engineers.
Part 1: Overview.
Part 2: Engine Internals.
Part 3: Engine legacy.
Part 4: Chocolate Duke Nukem 3D.
I would like to thanks Ken Silverman for proof-reading this article: His patience and diligent replies to my emails were instrumental.
Since I left my job at Amazon, I have spent a lot of time reading great source code. Having exhausted the insanely good idSoftware pool, the next thing to read was one of the greatest game of all time: Duke Nukem 3D and the engine powering it named "Build".
It turned out to be a difficult experience: The engine delivered great value and ranked high in terms of speed, stability and memory consumption but my enthusiasm met a source code controversial in terms of organization, best practices and comments/documentation. This reading session taught me a lot about code legacy and what helps a software live long.
As usual I cleaned up my notes into an article. I hope it will inspire some of us to
read more source code and become better engineers.
Part 1: Overview.
Part 2: Engine Internals.
Part 3: Engine legacy.
Part 4: Chocolate Duke Nukem 3D.
I would like to thanks Ken Silverman for proof-reading this article: His patience and diligent replies to my emails were instrumental.