I feel compelled to link to Michael Abrash&#x27;s amazing and inspiring series of articles written when Quake was developed (don&#x27;t know if there is a better link):<p>Ramblings in Realtime: <a href="http:&#x2F;&#x2F;www.bluesnews.com&#x2F;abrash&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.bluesnews.com&#x2F;abrash&#x2F;</a><p>I read this while I was in high-school and worked on my own 3D engine in parallel (inspired by Abrash&#x27;s articles).<p>As this was written while quake was under development, you get the reel feeling of the challenges they went through during development. Through &quot;beam trees&quot;, z-buffer, to finally end at the PVS and sorted edge rasterization and mip-mapping technique that made the whole thing wrong smooth enough in the end.<p>There is a similarly lengthy description of the considerations they had regarding shadow maps vs. e.g. gouraud shading.<p>Carmack and Abrash&#x27;s experience is very much trial-and-error and that&#x27;s inspiring, because you realize that they went down many dead ends in order to find the right way to solve the problems. It&#x27;s not some sort of divine stroke of genius, but far more their determination that solves the problems in the end.<p>Of course Abrash also mentions some of the uglier hacks.