
Quake Engine source review - jenningsjason
http://fabiensanglard.net/quakeSource/index.php
======
beaumartinez
Interesting thought: the three most popular games on Steam[1] (Team Fortress
2, Counter-Strike, and Counter-Strike Source) _and_ the two most popular games
on Xbox Live[2] (Modern Warfare 2 and Black Ops) are all based on Quake's
engine to some extent.

[1] <http://store.steampowered.com/stats/> [2]
[http://majornelson.com/2011/08/10/live-activity-for-week-
of-...](http://majornelson.com/2011/08/10/live-activity-for-week-of-
august-1st/)

~~~
malkia
A lot of FPS games still use a lot of that code, or later versions.

------
Revisor
Is it usual in games to perform prediction in single-player?

Also interesting note regarding readability of bitwise operations at the end
of the Networking section.

Edit: Found more about this exact substitution on Wikipedia, of all places. :)

[http://en.wikipedia.org/wiki/Modulo_operation#Performance_is...](http://en.wikipedia.org/wiki/Modulo_operation#Performance_issues)

~~~
malkia
Using &, rather than % is important, if someone used signed types for index
for example, then % would've generate division, while & would still keep
masking it - the example uses unsigned.

Also even if it was unsigned, but % was used then people might have the idea
that any value could be used, while if & was used - it's more clear (at least
to me) that power of 2 - 1 mask is needed - it just brings the right message.

The only case where % would've been used in similar fashion is in a hash-
table, where the number of elements in the current bucket is prime number.

~~~
malkia
It reminds me also how clojure has recur, for tail-calls, rather than rely on
the user to write code that would do so, which started as limitation of what
the Java VM could do, but now it turns out that this design is better - as the
intention is - make sure that the code is tail-call recursive, rather than
relying on programmer or compiler to do it right.

In the same spirit - & rather than % for that example.

------
wingo
Very cool. More code reading posts, please! :)

