QuakeWorld by John Carmack (1996)
fabiensanglard.net
fabiensanglard.net
"Strafe jumping is an exploitable bug. Just because people have practiced hard to allow themselves to take advantage of it does not justify it's existance. When I tried fixing the code so that it just didn't work, I thought it changed the normal running movement in an unfortunate way." - Carmack
If you're curious to see some gameplay from 2016, there was an "all-star" 4on4 competition recently, on YouTube with commentary here: https://www.youtube.com/watch?v=oN6s1nh6nV0
It might look different to the Quake you remember — after id open-sourced it, some really great community projects sprouted up improving both the clients and servers, but the gameplay stays exactly the same.
I can't fathom the amount of suboptimal bullshit going on in today's netcode to achieve that.
What is the standard QW setup these days? What client port are they running?
The easiest method would be to install nQuake: http://www.nquake.com. You'll need to find pak1.pak from a full Quake install to have all the original maps — I believe it's available on Steam, otherwise Google... ;)
ezQuake is the most popular client — the most recent release is available at https://github.com/ezQuake/ezquake-source/releases/tag/v3.0
For info on setting up modern dedicated servers (with KTX for example, which provides 1on1, team deathmatch, readying up, automatic demo recording etc.), this is helpful: http://wiki.quakeworld.nu/How_to_server
... However, they don't document a lot of server stuff, and the nquake server package is only okay for internet servers. If you're running a lan server, you're gonna need to install the mvdsv server. Find it at https://github.com/deurk/mvdsv. you may want ktx, as mentioned above, which is at https://github.com/deurk/ktx. Both must be compiled as 32-bit, or they refuse to run. Fortunately, the Makefiles document how to force 32-bit, and it's fairly simple. After that, put the compiled ktx folder in the same folder as your id1 folder (but not inside it!), and do the same for the mvdsv binary. You can then launch mvdsv with the -game ktx argument, and any other args you want. And it won't work. You still need the original qwprogs from id in order to run the thing. Luckily, I tracked them down so you don't have to. You can get them at https://www.bluesnews.com/archives/aug98-4.html. Download the server zip, put the qw folder into the same directory as the rest of this junk, and now your server will FINALLY work.
One is CPMA (http://playmorepromode.org/) which is basically Q3 with QW physics. It's based on Quake 3, which I was never a fan of, and really fast & fun!
The other one is Warsow (https://www.warsow.gg/). I enjoyed playing this game a lot, but I think a lot of us got bored at version 0.4 or 0.5 when it seemed to become more "beginner friendly" and less... fast. (If there's any Warsow players in here you might remember eml from bolted.nu :)
I still watch QW games occasionally, especially duels. The longevity of the game is insane. Seems to me that the FPS duel genre is dying off though. (Not that I follow anything closely anymore.)
Romero is now gone from id.
There will be no more grandiose statements about our future projects.
I can tell you what I am thinking, and what I am trying to acomplish, but all I promise is my best effort.
John Carmack
I think this brief, internal message to staff following Romero's departure is more interesting than the rest of this sheet.
Once QW was out and this was tried in practice, it was promptly abandoned. It just didn't work well for many reasons.
And yet, that kind of feature is pretty much mandatory in mainstream FPSs today. A game like Overwatch doesn't even have a real server browser (yet), it's only auto matching.
Another instance where John Carmack was ahead of his time.
Hopefully this interest means we may be seeing a new Sauerbraten fork at some point
The world wasn't ready.
I personally think it was the right decision. I enjoyed going to the same server over and over again through a period of years and usually seeing the same people. I learned to recognize them. Some would steamroll over me, some I could dominate, some were a nice challenge. I could pick my battles.
Edit: Never mind, apparently that aspect of QuakeWorld was a bundled version of QuakeSpy which evolved into GameSpy.
If I could I would choose to come back as John in my next life. What a great mind on such an exciting adventure.
Solipsism here we go.
Also, AFAIK, QW doesn't simulate enemies or rockets clientside, so not seeing an enemy fire a rocket and having it kill you would happen the same way in NetQuake (quake's original network protocol). Of course, I haven't seen the code...
I would imagine this isn't very relevant these days, as nobody plays with a 300ms ping (+ packet loss) any more.
QuakeWorld had prediction, so it'd render everything to the best of its abilities, and then correct as needed. You didn't just get the position of a rocket, for example; you got its velocity vector too. And everything was UDP based, so missed packets could easily be ignored and the clients would fill in the blanks. For all its weirdness, it was a beautiful thing back then.
I haven't taken a deep look into modern game protocols, but I believe games today go a bit further. They don't just get position and velocity vector from the client, they spawn and control read-only entities on the client side. The client runs a full simulation. The result is that you get a seemingly much smoother experience, with no interruptions or corrections. But the downside is that you might be seeing things that are completely incorrect. You'll see yourself killing someone and their model playing a death animation, but then one second later you're dead once the client gets the truth from the server.
Personally, I prefer the way QuakeWorld did things. It at least allowed you to compensate for the lag - leading rockets, etc. Playing QuakeWorld with a ~200ms lag was mostly fine for me. But if I play a game with 50ms lag, I'll be getting my shots all wrong and not even realizing it.
I hop back on QuakeWorld servers every few years, but the gameplay is just too crazy from what I remember, the people left playing it are simply too good.
TCP/IP for LAN use was fairly new at the time, iirc. Most games with a network multiplayer component only supported IPX/SPX. I seem to recall that there was even a matchmaking service that tunneled IPX over TCP (and thus the net) that did quite well.
Ah, fund it: https://en.wikipedia.org/wiki/Kali_%28software%29
It seems to have done much of what the quake engine did, a couple of years before Quake was released.
By the way, my reccomended controls are: wasd for forward, backward, left, and right, q and e for roll, and mouse for pitch and yaw, with pitch invert on, to invert the default inversion.
Fun to see that he used this idea 18 years later at Oculus. It's called Asynchronous Timewarp now.
I haven't played a QW game in maybe 10 or even 15 years, and haven't really encountered a reference to it recently either (that I remember), but I actually had a dream last night about QW. Things changed was that every player model was replaced with what I can only describe as a starcraft siege tank, but the physics/rockets/gameplay was still pure QW (including jumping). The map was DM6.
Back on topic: Fascinating read. This must have been back in -96 I assume? Remarkable foresight and predictions, even if it reads that he's unsure of some of them.