What does HackerNews think of Quake?

Quake GPL Source Release

Language: C

Good chance it was John Carmack, probably one the top 10 programmers of all time. He basically built the Quake engine himself. There is a pretty decent analysis of it here:

* https://fabiensanglard.net/quakeSource/index.php

I recommend checking it out.

EDIT: i was thinking of the analysis done on Quake 2, which is more about the engine:

* https://fabiensanglard.net/quake2/index.php

while the one about is regarding the multiplayer system, which is still an amazing bit of dev.

Github:

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

Also look at the source for original Quake (https://github.com/id-Software/Quake), one of the last pure software-rasterizing AAA 3D PC games. Michael Abrash's Graphics Programming Black Book (https://github.com/jagregory/abrash-black-book) explains many of the critical parts of the rendering pipeline.

By the way, quake.exe for DOS was 404,480 bytes.

A quick glance at the source @ https://github.com/id-Software/Quake shows some support for both - although I'm seeing more stuff hardcoded to UDP than not. Despite this, amusingly, "TCP" has more search hits than "UDP", due to the frequency of the same 'mistake' as the parent comment, so they're in good company ;) (Other terms to search: "DGRAM", "STREAM".)

UDP's main advantage is the ability to process out-of-order - by sending duplicate state (actually more wasteful in terms of raw bandwidth!) or allowing for a lossy stream of data, your latency won't spike (as much) waiting for previous packets to be retransmitted. This isn't so much about efficiency per se, so much as it is about minimizing response time (even if it is potentially more bandwidth, potentially more CPU, more code, etc.) which matters a lot for some twitchy competitive games.

It's also not going to have any real impact if you're not dropping packets, nor if you're building your own reliable in-order channels atop that (which even the twitchiest game will likely have for some things if they're not using TCP as well - things like in game chat, leaderboards, matchmaking info, telemetry, etc. - a large number of which might use a full HTTP stack these days, if only under the hood of some official SDK, because why not use the same leaderboard server for your game clients and your website?)

And there's the occasional router (edit: or firewall, or other network appliance) that's so terrible, it manages to ship without a properly tested UDP stack, so a full blown TCP fallback isn't the worst idea ever.

TL;DR: Heckin' trade-offs.

I'm not a C person, but I've often heard that the Quake source code is good, practical-not-necessarily-elegant code that's worth emulating.

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

Well Quake is open source, so that might be a good place to start: https://github.com/id-Software/Quake

I don't know if it's described sufficiently detailed anywhere besides the source though.