-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1de3b79
commit 09a3567
Showing
3 changed files
with
36 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
## Book: Game Engine Black Book: Wolfestein 3D | ||
_Fabien Sanglard_ | ||
|
||
### Notes | ||
|
||
- "Floating-point arithmetic is considered an esoteric subject by many people" - David Goldbert | ||
|
||
- in 1991 a student from University of Helsinki started working on a hobby of his: an operating system which contrary to DOS was able to use the CPU in protected mode and take advantage of the MMU and the 32 bits registers. It would become Microsoft's worst nightmare. Linus Torvalds had just started what would become Linux | ||
|
||
- The challenge is to complete a level, not get to a level. (about iOS port having a level menu) | ||
|
||
- Tearing: CPU is faster than the frequency of the CRT (70Hz). Two frames were torn and taped back together. | ||
|
||
- Previus test of the 3D technology of Id software: Hovertank 3D, there was no texture mapping yet and the pace was quite slow. Catacomb 3D introcution of textures and took immersion one stpe further by placing the player in control of a magician in first person view. | ||
|
||
- To accelerate cos, sin and tan calculations, the engine uses lookup table | ||
|
||
- `TimeCount`. Every system in the engine uses this variable to pace itself. | ||
|
||
- Wolfstein 3D was ported by John Carmack himself to iOS: | ||
|
||
> told EA that we were NOT going to ship that as the first Id Software product on the iPhone. Using the iPhone's hardware 3D acceleration was a requirement, and it should be easy -- when I did the second generation mobile renderer (written originally in java) it was layered on top of a class I named TinyGL that did the transform / clip / rasterize operations fairly close to OpenGL semantics, but in fixed point and with both horizontal and vertical rasterization options for perspective correction. The developers came back and said it would take two months and exceed their budget. | ||
|
||
Rather than having a big confrontation over the issue, I told them to just send the project to me and I would do it myself. Cass Everitt had been doing some personal work on the iPhone, so he helped me get everything set up for local iPhone development here, which is a lot more tortuous than you would expect from an Apple product. As usual, my off the cuff estimate of "Two days!" was optimistic, but I did get it done in four, and the game is definitely more pleasant at 8x the frame rate. | ||
|
||
|
||
### Futher reading | ||
|
||
- [Digital differential analyzer](https://en.wikipedia.org/wiki/Digital_differential_analyzer_(graphics_algorithm)) | ||
|
||
- [Linear Feedback Shift Register](https://en.wikipedia.org/wiki/Linear-feedback_shift_register) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters