85 comments

[ 3.2 ms ] story [ 169 ms ] thread
I've spent so many hours reading Quake source code, trying to figure out how it all works. Such a marvelous game.
For those who find this topic interesting, there is a walkthrough of the Quake source code by Fabien Sanglare here.

https://fabiensanglard.net/quake3/index.php

He has also written a number of Game Engine Black Books on other games such as Doom.

For the graphics side of things there is a PDF by Michael Abrash that also covers Quake.

https://www.gamedev.net/tutorials/_/technical/graphics-progr...

You may be confusing the various engines. The first link is about the Quake 3 engine, the second one is about Quake 1.
Quite right, thanks for pointing it out.
The Quake rasteriser inner loop with its overlapped fdiv is still one of my all time favourite pieces of code.
FYI you need Quake 3 Arena installed to play.

I bought the game when it was new, but I have no idea where that copy/cdkey is anymore.

sad trombone

It's $10 on Steam right now (Sale) or $20 on GOG. If you an be bothered to to set up a new engine you can surely cop a new copy. The most expensive part will be your time tinkering.
Funny, my old Q3A and Half-Life cd keys are burned into my brain. Good news is I suspect if you really don't wanna go to GOG or Steam (understandable) you can likely find a cd key generator no problem
I own the game, I have the box and the CD. So I feel justified in getting a pirate copy to play.
There’s a metaphysics discussion about whether a ship that has had all its parts changed is still the same boat (ship of Theseus).

With that in mind, if you own the game, box and cd, and are only replacing the data… is that actually piracy?

“Piracy” (copyright infringement) is a legal construct. It has very little to do with either morals or metaphysics.

Yes, legally, it is copyright infringement to make copies not authorized by the copyright holder.

Morally I would claim the entire concept of copyright is wrong and the cause of far more evil than any extra copy could ever match.

Metaphysically I would say the law is just silly since the legal definition of what constitutes a copy has so very little to do with physics.

Edit: This comment was also silly. Let’s not start a debate on copyright. Keep the discussion focused on quake.

I believe that just spamming 2 or 3 for the whole key will work.
There's Open Arena for F/OSS content for Quake 3, but I don't know if it's drop-in compatible with this. Also OA's content doesn't look as good as the originals.
I was digging around in a closet at home and found my 3 CDs for q3a... Mac, Windows, and the Linux version. All retail copies which I have purchased.

what a timeless game. all these years later and it's still so much fun to play.

My friends and I all own/owned it legitimately (we had LAN parties nearly every weekend), but over time we'd lose the key. Just entering all 3s has always worked and it accepts it as a valid key.
Nice! As a massive quake fan, I can't wait to fool around with this. Thanks.
A different angle: there's quakejs which you can use in your browser - http://www.quakejs.com/
Amazing that the game just runs with 60fps on my mid range phone.
Considering I played it on Pentium 2 with a very old 3D accelerator this isn't too surprising.
This blows my mind. I remember begging my dad in 1999 to buy me a Voodoo 3 3000 and literally crying until he agreed. He wouldn’t let open the Compaq and install it myself, and so I walked him through the installation. It was a big upgrade from the ATI Rage Pro card we had.

All that so I could play Quake 3 with higher detail at 1024x768.

Hah, so from ATI Rage Pro to Voodoo 3 for Quake 3 (and UT) - that means we had exactly the same upgrade path :D
> He wouldn’t let open the Compaq and install it myself, and so I walked him through the installation.

This sort of thing happened to me all the time in my childhood. I knew a ton about computers relative to my whole family, yet they never trusted me with it and in fact often blamed me when stuff went wrong. My favorite was my grandpa saying I overloaded his computer by playing Starcraft after he had to get it replaced 6 months after I visited.

I wonder if id Software will continue the tradition of open sourcing stuff under Bethesda.
I don't think they have open-sourced anything since they were bought by Bethesda.
They did release the DOOM 3 engine as open source in 2011 after being bought by Bethesda in 2009. Microsoft owns them and Bethesda now and they have been getting more open source lately. Although I think it was more Carmack who was pushing for the engine's to be open sourced.
Yeah, something like open sourcing an engine is a “default no” for companies unless you have someone very high up as a champion. That was Carmack and he’s gone now.
That's one of the reasons I won't do game development anymore, the industry as a whole is still very hostile to the idea of open source. I don't see that changing any time soon.
Pretty much a hard no. Bethesda has stated that Id engines are to be used for internal projects only.
The last id engine released under the GPL was id tech 4, i.e. the Doom 3 engine (and the updated BFG version)*. id tech 5, 6, and 7 have since been used in Rage (2011), Doom (2016), and Doom Eternal (2020). Carmack was the only guy who both cared about open-source and had the juice to make it happen, but he left in 2013. So I kinda doubt it.

* https://github.com/id-Software

Another possible reason is that newer game engines tend to have dependencies on external libraries that aren't easy/legal to open-source or reimplement.
Nope. It stopped because he wasn't there to help make it happen. id Tech 5 was supposed to get an OSS release, but Carmack resigned before it could be completed.
They could still dump the remainder of the engine and people would fill in the holes.
re: Carmack. I wish we'd see GPL Oculus firmware.
You mean under Microsoft, right?
Microsoft has embraced server-oriented Linux initiatives, but they abstain to participate on Linux desktop and Linux gaming related initiatives.

I do not expect to see Office for Linux, a proper release of Minecraft for Linux with feature parity with Windows, etc. I also do not expect to see Xamarin development on Linux. I do not expect to see a proper release of Skype on Linux either. The only exception to this trend is VS code.

Edge for Linux doesn't bring anything new to the Linux desktop. There are already plenty of browsers such as Firefox and Chrome and others.

And I am deeply thankful that Microsoft won't buy Discord. Discord works very well on Linux and I hope it stays that way.

Any eye candy screenshots anywhere?
It looks the same, but I'm getting 500 fps at 4K (highest details) when I set com_maxfps to 500. I can also get 1000 but there's some bug happening...
It's not making it look better, it's making it run faster.
Both Quake3e and ioquake3 are engines, but not the game. To play, you still need pak0.pk3 file which is not free. It is included if you buy the game. Bethesda [1], GOG [2], Steam [3].

[1] https://bethesda.net/ru/store/product/QU3CSTPCBG01

[2] https://www.gog.com/game/quake_iii_gold

[3] https://store.steampowered.com/app/2200/Quake_III_Arena

You could conceivably download the demo and use that too, right?
You can, but it doesn't have all assets.
Open Arena is an open source shooter based on the original open source quake 3 engine that you can play without licensing the original creative work: https://en.wikipedia.org/wiki/OpenArena
I used to like OpenArena, but there often is a lot of cheating/aimbotting and no one ever does anything.
You can still play standalone mods with q3e or ioq3 and not need baseq3.
I wonder whether it still uses fast inverse square root algorithm.
I hope it's just kept as a historical curiosity or for backwards compatibility with official Quake 3 servers. I can't imagine this trick still being useful on modern hardware.
I tried to use it on an 8-bit AVR one time, and the native sqrtf function was faster!
you were doing that kind of floating point math on an AVR? good lord...
Yep, for that project I implemented an RC airplane attitude controller. It would keep pitch and roll at 0 degrees with an offset based on the joystick input, toggle-able by a switch. It was fun, you could do really foolish stunts and just flip a switch to level out immediately if you got too disoriented.

The AVR was reading a 6 axis IMU chip and estimating attitude using a floating point quaternion based complementary filter, at 100hz. Sqrt was used when normalizing vectors and quaternions, probably two or three times per cycle.

It was also reading 6 channels from the radio receiver, and producing 6 RC PWM outputs. I believe the output was synchronized to the input, so that the throttle and servos would go limp if the radio went out of reception, rather than have the plane just keep flying level into the sunset.

I vaguely remember it using about half the available CPU cycles doing all that. I even managed to get it talking to an RC simulator, so I could debug it without crashing my real plane. It worked perfectly on the first test flight!

I could see sqrtf(x) being faster than 1/rsqrt(x). An integer software implementation of sqrt and division will be similar (in fact, I think if implemented with Newton's method, sqrt will be significantly faster), and you still have to compute rsqrt.

But, if you were computing 1/sqrt(x), I highly doubt the quake3 style rsqrt(x) was slower than that. If both implemented with software floats, rsqrt(x) would be strictly less work. They're almost the same computation, except you'll probably get a better initial guess for rsqrt (the "what the fuck" line), and each iteration produces more accuracy.

Those were the days-- fast integers and slow floats!
> t.i = 0x5f3759df - ( t.i >> 1 ); // what the fuck?

classic

It would be a crime to remove that, or the comment.

It's legitimately a part of history, specifically the dawn of FPS gaming, and utterly brilliant besides. The comment even helps reassure the new programmer that they're not alone in thinking that at that line.

I still play the Movie Battles mod for Jedi Knight 3, which uses this engine. https://www.moviebattles.org
Cool, I will check that out! I hopped on JK2 again a few months back, always amazed to find other people playing.

Sadly, insta ctf died out

The #massassi chat moved to Discord a while back. There's usually a bunch of us in there.
I couldn’t tell from the site: is that an offline single player mod or an online multiplayer mod (or both)?
online multiplayer

Edit: ex MB2 dev here, hi

It's really incredible that there hasn't been another Jedi Knight game since JK3; it's still the best lightsaber combat you can find in any Star Wars game.
In what engine version does the DeFRaG CGazHUD movement deceleration bar display properly? The graphic showing acceleration seems to work fine but not deceleration, and I'm needing a bit of help getting the muscle memory correct.
Cool, but Im not up2date anymore since a decade. Could someone give me a hint where still to get a few nice maps and mods for a retro session with Friends?
If you like Quake-likes, let me recommend Xonotic. It's a free and open source game based on a heavily modified Darkplaces engine.

It's a friendly community, with a wide age distribution (lots of old quakers like myself). If you don't like death match, clan arena or CTF, login to a CTS defrag game (time races for movement training).

https://xonotic.org

it is fun idd. however, i wish there were more players online.
Xonotic is great, been playing it almost since it started. Also contributed some music to it!

I've always been amazed in particular by how polished it is for an open source game. Don't think I've ever heard anyone that tried it say they didn't enjoy it either, though generally folks don't stick around, save for a couple.

Most of the current playerbase is situated in Europe though I think, so you gotta play at times that make sense for those time-zones if you wanna see players (evenings usually pretty active).

And lots of Russians! Super game. I've only been playing it for about a year, and didn't really do much gaming for about 20 years prior to that. It reminded me of the best of Q3 and UT2004 in one game.

I've probably killed you / been killed by you a bunch of times.

Slightly rarer for me to play lately, haha! But you may have seen some of my clanmates, such as psyx|Pendulla, he plays quite often.

You're right about the Russian presence, it has gotten to the point where using "))" to indicate smileys has become a community thing, Russian or not :D

Or Diabotical. Free on epic games store.
The problem with Quake clones is that most of them have really small playerbase and it's hard to find someone to play with, especially when location is considered (I live in Eastern Europe). The potential playerbase is also fragmented between various clones.

I gave Xonotic a go a few minutes ago. The game is nice but right now I can see 6 only servers populated. That's not a lot to be honest.

Agreed. If you're in Europe look for the two Eris servers.

Sometimes it's hard to find a deathmatch game, so you end up joining clan arena, getting killed and then spending the remainder of each match spectating and not actually improving your skill. Freeze tag is huge fun but it's rarely voted for.

The one good thing about the small player base is that you will always bump into those superhuman players who destroy everyone. That gives you something to aspire to. Once you start leveling up to them, you know you're getting good.

Quake-derived game died off because people use various kind of hacks (particularly aimbotting) and no kind of management for that was ever implemented.

So, getting good at any of those game means that sooner or later you'll start actually getting very very angry at people cheating.

Another thing is the skill disparity between median and ceiling player-skills is very far.

Many players often get accused of cheating in Quake, but they're just really good.