This commit is contained in:
Miloslav Ciz 2024-10-05 21:09:59 +02:00
parent 3d238884b9
commit c03351e922
15 changed files with 1885 additions and 1825 deletions

View file

@ -14,7 +14,7 @@ The original system requirements were roughly following: 66 MHz [CPU](cpu.md), 1
Duke ran on **[Build](build.md) engine**, a legendary [software rendering](sw_rendering.md) [primitive 3D](pseudo_3d.md) engine that had limitations similar to those of [Doom](doom.md) engine, i.e. the camera could not genuinely 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](hacking.md) such as extra rendering passes or invisible teleports were used to allow this). The engine was not unsimilar to that of Doom, enemies and other objects were represented with 2D [sprites](sprite.md) 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](dynamic.md) environment, meaning that levels could change on the fly without the need for [precomputation](precomputation.md), allowing e.g. destructible environments. How the fuck did they achieve this? Instead of [BSP](bsp.md) rendering (used by Doom) Build engine used **[portal rendering](portal_rendering.md)**: 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](recursion.md) 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 man view etc. The Build engine was also used in many other games (most notably [Shadow Warrior](shadow_warrior.md) and [Blood](blood.md)) and later incorporated even more advanced stuff, such as [voxel](voxel.md) models, though these weren't yet present in Duke. Just like Doom, Build engine **only used [fixed point](fixed_point.md)**, no [float](float.md)! { Hmm, actually maybe there was a small exception, see the link below. ~drummyfish }
The game uses 256 colors and [palettes](palette.md).
The game uses [256](256.md) [colors](color.md) and [palettes](palette.md).
[Pseudorandom](pseudorandomness.md) number generation is done with linear congruential generator (function `krand`), using multiplier 27584621 and adding 1, returning highest 16 bits of the result.
@ -27,4 +27,5 @@ The game uses 256 colors and [palettes](palette.md).
- [Jedi engine](jedi_engine.md)
- [Dick Suckem](dick_suckem.md)
- [They Live](they_live.md)
- [Dink Smallwood](dink_smallwood.md)
- [Dink Smallwood](dink_smallwood.md)
- [Ashley Jones](ashley_jones.md)