less_retarded_wiki/duke3d.md
2023-11-03 17:46:23 +01:00

3.5 KiB

Duke Nukem 3D

Duke Nukem 3D (often just duke 3D) is a legendary first person shooter video game released in January 1996 (as shareware), one of the best known such games and possibly the second greatest 90s FPS right after Doom. It was made by 3D realms, a company competing with Id software (creators of Doom), in engine made by Ken Silverman. It is remembered not only for being very technologically advanced, further pushing advanced fully textured 3D graphics that Doom introduced, but also for its great gameplay and above all for its humor and excellent parody of the prototypical 80s overtestosteroned alpha male hero, the protagonist Duke himself -- it showed a serious game didn't have to take itself too seriously and became loved exactly for things like weird alien enemies or correct portrayal of women as mere sexual objects which nowadays makes feminists screech in furious rage of thousand suns. Only idiots criticised it. Of course, Duke is sadly proprietary, as most gaymes, though the source code was later released as FOSS under GPL (excluding the game data and proprietary engine, which is only source available).

TODO: FOSS engines, source ports

Code

TODO: code stats

Duke ran on Build engine, a legendary software rendering primitive 3D engine that had limitations similar to those of Doom engine, i.e. the camera could not truly rotate up or down (though it could fake this with kind of a "tilting") and things like rooms above other rooms in a level were allowed only in limited ways (hacks such as extra rendering passes or invisible teleports were used to allow this). The engine was similar to that of Doom, enemies and other objects were represented with 2D sprites and levels were based on the concept of sectors (a level was really made as a 2D map in which walls were assigned different heights and textures), however it had new features -- most notably dynamic environment, meaning that levels could change on the fly without the need for precomputation, allowing e.g. destructible environments. How the fuck did they achieve this? Instead of BSP rendering (used by Doom) Build engine used portal rendering: basically (put in a quite simplified way) there was just a set of sectors, some of which shared walls ("portals") -- rendering would first draw the sector the player stood in (from the inside of course) and whenever it encountered a portal wall (i.e. a wall that sees into another sector), it would simply recursively render that too in the same way -- turns out this was just fine. Other extra features of the engine included tilted floors and ceilings, fake looking up/down, 3rd person view etc. The Build engine was also used in many other games (most notably Shadow Warrior and Blood) and later incorporated even more advanced stuff, such as voxel models, though these weren't yet present in Duke. Just like Doom, Build engine only used fixed point, no float! { Hmm, actually maybe there was a small exception, see the link below. ~drummyfish }

{ Here are some details on the engine internals from a guy who specializes on this stuff: https://fabiensanglard.net/duke3d/build_engine_internals.php. ~drummyfish }

See Also