5 ms·
Why WinQuake exists and how it works
- deleted 10mo ago[deleted]
- deleted 10mo ago[deleted]
- progmetaldev 10mo agoThis is a great write-up for those of us that were into Quake when it was released. Trying to tune your performance was a huge undertaking during the days where you tried running Quake while also having Windows 95. I got into Quake because of all the available MAP tools you could use with it, and the multiplayer aspect, which previously had been very difficult to get working without a LAN.
- 01HNNWZ0MV43FF 10mo agoThat's some of the same stuff that SDL is meant to abstract over, right? Although I guess SDL was more targeting Windows / Linux differences than Windows / Windows differences.
- Sharlin 10mo agoAlso Linux/Linux differences – Xlib, SVGAlib, DirectFB, DRI, GGI, DGA and who knows how many other ways to draw stuff on the screen existed for Linux back then.
- anthk 10mo agoSDL1 used to render anything.
- jon-wood 10mo agoYeah, also SDL didn't exist until a year after WinQuake's release.
- victorbuilds 10mo agoThe detail that -wavonly (falling back to the older WinMM API instead of DirectSound) actually gave the highest frame rate is a perfect example of a lesson that keeps reappearing in systems programming: "more direct" doesn't always mean faster when you're CPU-bound. DirectSound's lower latency came at the cost of more CPU cycles that could otherwise go to rendering.
- 71bw 10mo agoMore than 30 years later, you can still run winquake.exe on Windows 11. Fullscreen does not support widescreen but the windowed mode still works flawlessly. As much as Microsoft has been questionable lately, their commitment to backward compatibility is impressive. I love this about Windows so much it's hard to explain to somebody who doesn't understand why it matters. :-)
- somat 10mo agoIt only matters if you don't have the source to your programs. So yes, there is a huge corpus of programs where this matters. But there is also a large library of programs where the source is available and backwards compatibility does not matter nearly as much. As a concrete example, the source to quake is available, this has allowed quake to run on so many platforms and windows infamous backwards compatibility has little effect in keeping quake running, windows could have broken backwards compatibility and quake would still run on it.
- divan 10mo agoTrue. It's amazing that you can play Quake even on the Oculus Quest 3 these days.
- vrighter 10mo agoif you have the source to those programs, and are willing to (sometimes significantly) rewrite parts of them and recompile (see: wayland, for example) The amazing part is that you don't need to do this in windows whether you have the source or not. I am a linux user, but for all their faults, Microsoft got their backwards compatibility stuff right. Something that the oss world, on average, needs to be convinced it's a desirable thing.
- anthk 10mo agoIf it uses SDL (99% of the libre games), you don't have to rewrite anything.
- 10mo ago
- markus_zhang 10mo agoLink to MGL v4 programmer guide seems to be broken. I’m super curious about this technique — can we do the same nowadays for modern Windows and video cards?
- fabiensanglard 10mo agoFixed it. Sorry about that.
- markus_zhang 10mo agoThanks! Great write-up as always.
- timcobb 10mo ago> Last but not least, id Software really wanted Quake to work on Windows NT. Why?
- ac29 10mo agoWhy not? id was always into cross platform support, quake had a linux and solaris port weeks after launch, and mac a year later or so.
- MisterTea 10mo agoAt the time Windows 95/98/Me lacked certain features so it's possible they wanted to experiment with things like multi-threading/processing. NT also supported Intel's physical address extensions, PAE, to address 64GB of RAM using an extra 4 bits of memory address creating 16x 4GB banks. Might have helped them in the development phase as map compiling took a lot of resources back then. Its also possible they saw that NT was the future of Windows as Win 2k married the multimedia stack of Win 9x with the more capable NT kernel. That led to XP which finally killed the Win 9x family. I tried running Quake 2 on Windows NT 4 before 2k came out so like '98/'99 but had an issue as NT lacked DirectX. My memory has faded and I don't remember if the installer failed or it failed to run. I think it was the former as I have a recollection of something complaining about missing DirectX. I do know that multi-processing was implemented in Quake 3 and I specifically ran Windows 2000 for that.
- mobilio 10mo agoNT4 lack DirectX. But in 1999 i got temporary access to some machine and copy few DX files from Win98. As result - i was able to play some windowed games without 3D acceleration.
- Suppafly 10mo agoA lot of younger people have no idea how great Windows 2000 was. Before that you could run 9x and have it bluescreen all the time, or NT4 and not have drivers for any consumer level products and the really shitty UI from windows 3x. 2000 was the best under the hood and had the great GUI, and had drivers for most things you'd want to install and was stable and handled networking well. Just all around the best OS at the time.
- klaussilveira 10mo agoIf you are like me and like to toy around with ancient game engines, for the sake of simply modding or trying things out, I made this tiny clean fork: https://github.com/klaussilveira/clean-quake https://github.com/klaussilveira/clean-quake The idea is that it builds on 64-bit Linux with a very simple Makefile and SDL2, so you can start from there as your ground truth, and then have fun. It also removes a lot of cruft, like all the DOS and Windows 95 stuff mentioned in the article.
- anthk 10mo agoGet qengine too for Quake2. Similar to Chocolate Doom/Hexen and clean Quake.
- klaussilveira 10mo agoqengine is one of my things too! :) software renderers are so much fun.
- fabiensanglard 10mo agoIt is WinQuake or QuakeWorld?
- klaussilveira 10mo agoWinQuake. Or, well, NetQuake as it is known.
- pimlottc 10mo ago“NetQuake” was primarily used to distinguish the original network code from the predictive model of Quakeworld, which came out a little while later.