Update
This commit is contained in:
parent
8604bfc7c0
commit
fb848d51f1
16 changed files with 1947 additions and 1855 deletions
7
doom.md
7
doom.md
|
@ -22,6 +22,7 @@ Some **[interesting](interesting.md) things** about Doom:
|
|||
|
||||
- Someone created a Doom system monitor for [Unix](unix.md) systems called [psDooM](psdoom.md) where the monsters in game are the operating system [processes](process.md) and killing the monsters kills the processes.
|
||||
- In 2024 some researchers made an experimental completely [neural network](neural_net.md) [AI](ai.md) game engine (called GameNGen) and implemented Doom with it -- basically they just made the network play Doom for a long time and so trained it to estimate the next frame from current input and a few previous frames. It can be played at 20+ FPS and looks a lot like Doom but it's also "weird", glitching, and having little persistence (it only remembers a few seconds back). Still pretty impressive.
|
||||
- The Crispy Doom engine adds `GOOBERS` cheat code which makes all all floor and ceilings the same height, effectively making the game a flat wolf3d-style game.
|
||||
- Someone (kgsws) has been [hacking](hacking.md) the ORIGINAL Doom engine in an impressive way WITHOUT modifying the source code or the binary, rather using [arbitrary code execution](arbitrary_code_execution.md) bug; he added very advanced features known from newer source ports, for example an improved 3D rendering algorithms allowing geometry above geometry etc. (see e.g. https://yt.artemislena.eu/watch?v=RdbRPNPUWlU). It's called the Ace engine.
|
||||
- Doom sprites were made from photos of physical things: weapons are modified photos of toys, enemies were made from clay and then photographed from multiple angles (actually a great alternative to [3D modeling](3d_model.md) that's less dependent on computers and produces more realistic results).
|
||||
- The strongest weapon in the game is name BFG9000, which stands for "big fucking gun".
|
||||
|
@ -42,6 +43,8 @@ The **Doom engine** (also called *id Tech 1*) was revolutionary and advanced (no
|
|||
|
||||
The game data is stored in so called **WAD files** (short for *where's all the data*). While many things are hardcoded in the engine, such as the total number of levels or types of weapons, most other things such as textures, levels, color palettes, weapons and enemy sprites are in the WAD files and so can be replaced without having to mess with the engine itself. There are two types of WAD files (both however still come with the same .wad extension, they are distinguished only by the file magic number): IWAD (internal WAD) and PWAD ([patch](patch.md) WAD). IWAD is the most important one, representing the base game, so for example Doom, Hexen and Freedoom will all have their own specific IWAD. Only one IWAD is loaded at any time. PWAD allows to add or modify things in the IWAD which makes it possible to easily correct bugs in the game data and make mods. Unlike with IWADs, multiple PWADs can be loaded at any time -- when loaded, a resource that's present in the PWAD will override the same resource in the base IWAD. All resources in the WAD files are stored as so called *lumps* which we may simply see as "blobs of data" or "files". A nice [CLI](cli.md) tool for working with WADs is e.g. [deutex](deutex.md).
|
||||
|
||||
Doom WAD (full version) is a bit over 11 MB in size (MD5 1cd63c5ddff1bf8ce844237f580e9cf3), Doom 2 WAD is over 14 MB (MD5 25e1459ca71d321525f84628f45ca8cd).
|
||||
|
||||
Indexed ([palette](palette.md)) mode with "only" 256 colors was used for rendering. Precomputed color tables were used to make dimming of colors faster. Similarly a [look up table](lut.md) was used for [random number generation](rng.md) -- two independent [pseudorandom](pseudorandomness.md) generators are present, one is used for things such as visual effects while the other one is utilized purely for the game simulation so that it stays deterministic independently on graphics etc.
|
||||
|
||||
Doom also has a [deterministic](determinism.md) [FPS](fps.md)-independent physics which allows for efficient recording of [demos](demo.md) of its gameplay and creating [tool assisted speedruns](tas.md), i.e. the time step of game simulation is fixed (35 tics per second). Such demos can be played back in high quality while being minuscule in size and help us in many other ways, for example for verifying validity of [speedruns](speedrun.md). This is very nice and serves as an example of a well written engine (unlike later engines from the same creators, e.g. those of [Quake](quake.md) games which lacked this feature -- here we can see how things get progressively shittier in computer technology as we go forward in time).
|
||||
|
@ -52,6 +55,7 @@ There is no [antialiasing](antialiasing.md) in the engine, i.e. aliasing can be
|
|||
|
||||
- [Anarch](anarch.md)
|
||||
- [Duke 3D](duke3d.md)
|
||||
- [Wolf 3D](wolf3d.md)
|
||||
- [Gloom](gloom.md) (fun [Amiga](amiga.md) Doom clone)
|
||||
- [Quake](quake.md)
|
||||
- [Postal](postal.md)
|
||||
|
@ -59,4 +63,5 @@ There is no [antialiasing](antialiasing.md) in the engine, i.e. aliasing can be
|
|||
- [Build engine](build_engine.md)
|
||||
- [Chasm: The Rift](chasm_the_rift.md)
|
||||
- [raycasting](raycasting.md)
|
||||
- [Doomer](doomer.md)
|
||||
- [Doomer](doomer.md)
|
||||
- [Boomer](boomer.md)
|
Loading…
Add table
Add a link
Reference in a new issue