6 ms·
Let's compile Quake like it's 1997
- orionblastar 4mo agoIf you want to play Quake for free on Windows 11, try this: https://quake-remake.en.uptodown.com/windows/download https://quake-remake.en.uptodown.com/windows/download
- vee-kay 4mo ago[dead]
- ogurechny 4mo agoThere is a dozen of existing Quake ports ready to run the moment you feed them the game files, and you recommend a version re-implemented on top of Xash3D, which is a GoldSrc-compatible engine. Why?
- orionblastar 4mo agoIt was the first result in a Google Search for "Quake".
- kristopolous 4mo ago"VC++6 is remarkably powerful for 1996. It has features such as "Go to definition", breakpoints, stacktrace, and variable inspections (but no Intellisense auto-completion yet). I never used it but it must have felt like a dream at the time." And here we are, in a generation of people writing blogs that never used VS6. I am now officially old. I was still using VS6 as late as 2009 btw...also it's from 1998. If you made a list of Microsoft bangers it's in the top 5 with probably windbg, quickbasic and windows 3.11.
- vee-kay 4mo agoBefore the .Net era, there were millions of programmers who were experts in VB. In fact, VB6 was the defacto tool to build desktop apps. Then Microsoft decided to compete with the new-age rivals: Java and CORBA. So it expanded COM into DCOM and then further into COM+, and eventually released the .Net platform. Suddenly, those millions of programmers and their built desktop apps were obsolete, as they had to race to understand .Net and learn how to use it to build new apps and replacements for the old VB6 apps. And somewhere along the way, many of them decided it wasn't worth the struggle (because .Net was a nightmare to install as client apps on Windows machines; even the deployment scripts had becom3 too complex), and they migrated to other tools (Java, Python, Perl, Ruby on Rails, PHP, etc.) or to non-programming jobs (usually management). Thus, within a few years, Microsoft had veritably killed the programming industry it took decades to build and nurture (and yes, Microsoft's decision to turn a blind eye - as its Windows OSes, MS Office and Visual Studio (VB & VC++) tools were pirated across the world, churning out millions of programmers and users familiar with its products as they used the pirated versions at school, college. home and office - that was also a deliberate decision by Microsoft during this halycon era). But I feel .Net became too big of a beast even for mighty Microsoft to handle. As concerns grew over the performance aspects and innumerable dependencies of the .Net platform and related tools (Azure, SSIS, SSRS, etc.), the world started to shift away from Microsoft's tools, and that's perhaps why Microsoft finally knuckled under and embraced the open-source ecosystem it had openly hated for decades. VSCode, etc., are Microsoft's last-ditch attempts to have some relevancy in the programming industry.
- kristopolous 4mo ago.net was fine ... they were solving these fleeting problems of interoperability, event driven gui programming, object re-use and a bunch of other things. They tried tackling this so many ways: win16, ole, mfc, activex, win32s ... it was a big mess and nothing really worked well. Microsoft had some really smart people working on the problem for years and .net was the culmination of the efforts with things like c# and the very interesting f#. The problem was they finally solved the desktop interoperability problem when it no longer mattered and there wasn't a huge killer app for it. Properly scoped well designed abstractions can be extremely powerful and also pretty useless. There's an interesting counterfactual if they had .net ready to go around windows 98 ... I might be on a windows phone right now...
- gryson 4mo agoYou make it sound like he's some young'un, but Fabien has been programming since 1983. https://fabiensanglard.net/40/ https://fabiensanglard.net/40/
- Sarkie 4mo agoExactly but writing to serve his audience
- DanielHB 4mo agoTurbo Pascal had breakpoints, variable inspections in the late 80s. I think it had stack traces too but not 100% sure. I am not old enough to have used it professionally, but my teacher used it for teaching intro programming in the early 2000s. So I used it quite a lot, the debugger was great and the development loop was so tight. Not until I got into web dev did it ever feel "fast" to make change->see change. To this day it is still bad in most stacks.
- haspok 4mo agoYes, but if you compare the complexity of (Turbo) Pascal to the complexity of C++... language, environment, libraries and cross-compilation... (A nice thought-experiment is to ask if Quake could have been coded in TP at all - even if memory hadn't been an issue (I think there was no DOS extender for TP, but I could be wrong).)
- bluedino 4mo agoI don't see why it couldn't have been written in Pascal. Plus, Quake was written in C/asm, not C++.
- invader 4mo agoIn the storm of Doom-Quake mania of the mid 90s there was Chasm: The Rift by a small Ukrainian company Action Forms. And if memory serves me right, it was created in Turbo Pascal. It was late in development and came out in 1997 after Quake, so it didn't get much traction. But the engine, though pretty limited, could produce 3D enemies with interesting effects not found even in Quake. So Turbo Pascal (with a whole bunch of x86 asm inclusions) was totally capable of producing Quake-level games. I myself, in the late 90s, discovered the hidden capacities when I learned x86 assembly from Peter Abel's book. Once I got rid of the primitive TP BGI library and switched to VGA 13h, it was an unbelievable level up in abilities to manipulate pixels on the screen!
- Narishma 4mo ago> Chasm: The Rift I might be misremembering but I thought it was more of a Doom-style engine with 3d models instead of sprites for the entities, rather than a full 3d engine like Quake.
- EliRivers 4mo agoAh yes, VC++6.0 It had such a long lifetime. The last time I used it in anger to release commercial software was round about the year 2020, at which point the dev environment for that particular piece of software that customers were still paying annual license fees on was a VM machine. The source code repo it linked to had been unknowingly destroyed years earlier, so the VM image was copied around as needed. One had to find the very latest version of that image, because otherwise any changes one made would of course exclude some other recent changes and customers would receive a Frankenversion. Starting the VM would reveal a desktop with VC++6 already open, and enough supporting evidence to show how to build the software. Make your changes, build, carefully extract the binary to send to the users, freeze the VM again. I expect it's still there, still being brought back every year for "one last update."
- haspok 4mo agoI used VS6 professionally and for private business around 2000-2004, and it was still going strong then. VC++ was great. One thing though that I still have nightmares about is Visual SourceSafe, Microsoft's idea of a source control system for small teams. It was not only terrible to use (and slow), but we regularly lost data in it due to concurrency issues.
- kristopolous 4mo agoTortoiseCVS all the way down. Nothing else came close. (this was before git and svn, kids. relax!)
- Traubenfuchs 4mo agoIt was my favorite VCS ever at my first workplace where we deployed .war to prod tomcat from eclipse with one click. No tests, no PRs, no tickets. Customer would call me and I could get a change out to them within 5 minutes. Most (and only!) agile workplace I ever experienced in two decades.
- nnevatie 4mo ago> Visual SourceSafe Ugh, instant flashbacks and not the good kind.
- avadodin 4mo agoI transitioned my employer directly from VSS to git back in the day as soon as I had to start managing sources. It was pretty bad using vss for a little while but luckily there was a vss2git tool already so it was seamless. Our customers have just recently finally deprecated SVN lol.
- nnevatie 4mo agoAnd here I thought I'm dealing with legacy setups!
- jaymzcampbell 4mo agoSpeaking of MS and source control, I have to shout out this incredibly niche channel [1] that recently covered "Microsoft Delta", a precursor and home grown effort that was eventually abandoned in favour of buying in what would become SourceSafe. [1] https://www.youtube.com/watch?v=8bNLp_oTuNM https://www.youtube.com/watch?v=8bNLp_oTuNM
- pragma_x 4mo ago100% agree. Not only was VC++6 a stand-out product overall, but it was easily the better IDE out of the crop of options at the time. Sadly, the product line got worse before VSCode came out. Things are much better now.
- pooloo 4mo agoThe load times of VC6 versus VSCode... yeah. I would bet you can load a VC6 project faster in OP's environment faster than VSCode could load the same project in a current environment.
- jchw 4mo agoVC++6 was the first IDE I ever used: as a kid, I was gifted a CD that had a version of it included. What a great tool to have for the time. I would go on to use Bloodshed Dev-C++ next. Which was also quite great for the time.
- skew-aberration 4mo agoRational Apex Ada is another dev platform that was way ahead of its time in early to late 90's. Multi-user hosted dev environment with incremental compilation and dependency tracking, syntax and semantic error highlighting, semantic search (i.e function signature) across whole repo, its own version control system with a git submodules style structure, automatic formatting as you write code. [Remote] Debugging and emulation features (stack trace, line of code, disassembly, etc), plus excellent VxWorks integration and tooling. Not to mention all the Ada language features which are still not available in modern languages.
- eurekin 4mo agoIt feels now like an alternative timeline, one which performance optimisations were first and foremost still. Sometimes I fantasize, thinking how would our current development ecosystem look like, if we never abandoned the "be very vigilant with all resources you use" approach, that includes the whole webdev liftoff, where we ship a few hundred mb chromium engine for a dock app
- bityard 4mo agoIn the timeline I remember, Microsoft and Windows were routinely criticized for producing bloated and buggy systems. Especially from those who previously used an Amiga or Mac. A new version of Windows inevitably meant buying a whole new computer, along with upgrading the memory midway through it's 3-4 year lifespan.
- tosti 4mo agoA friend of mine installed MS-Windows 95 on a 386 and Weird Al Yankovic nailed it: But my machine, it's obsolete. It takes an hour just to bring up the screen!
- miki123211 4mo agoWe'd have far fewer apps, far fewer features, far more bugs, far more crashes, far less stability and far more memory safety vulnerabilities. Oh, and Linux and Mac would be far less usable. The age of performance optimizations was the age of computers as little islands that didn't need to communicate with anybody or anything, and definitely not outside of a homogeneous LAN environment. It was the age of people having just one device, running one OS, with no expectation of data synchronization. Sharing files was, at best, done by sending quarterly_report_v14_approved_by_legal_fixed.doc over email. This is no longer the age we live in.
- Uvix 4mo agoCould be worse. It’s finally gone now but I believe that my employer used VS6 as late as 2025.
- pjmlp 4mo agoMany of those features were already available in MS-DOS and Windows 3.x IDEs from Borland for Turbo Pascal and C++. Which is why when I got into UNIX development felt like going into the stone age of development tools, thankfully XEmacs was already there. Which by the way, it was born for Energize C++, in 1993! https://www.youtube.com/watch?v=pQQTScuApWk https://www.youtube.com/watch?v=pQQTScuApWk Also here is what NeXTSTEP development environment looked like, used for Quake tooling development, in a 1991 marketing video. https://www.youtube.com/watch?v=UGhfB-NICzg https://www.youtube.com/watch?v=UGhfB-NICzg Which is why, I usually assert I cannot understand the nostalgia of CLI and TUI, being there at the time, and not being able to use some of these systems, due to the amount of money they required.
- joe_mamba 4mo ago>Which is why, I usually assert I cannot understand the nostalgia of CLI and TUI Elitism
- pjmlp 4mo agoYeah, right. :) https://www.reddit.com/r/cinescenes/comments/18h22ug/hackers_1995_1337_books https://www.reddit.com/r/cinescenes/comments/18h22ug/hackers...
- i_am_a_peasant 4mo agosometimes you wanna do debugging on a device that has no screen or ethernet port too
- pjmlp 4mo agoDebugging can be done even by serial ports and JTAG.
- skydhash 4mo ago> Which is why, I usually assert I cannot understand the nostalgia of CLI and TUI, being there at the time, and not being able to use some of these systems, due to the amount of money they required. I was not there at the time, but one appeal of CLI (not TUI) is scripting. After a while, you have all your routine packaged in nice alias and commands. And that’s universal across all languages and projects.
- zelphirkalt 4mo agoDidn't Smalltalk environments have those features ages ago already?
- pjmlp 4mo agoIt did, as did other Xerox systems, Interlisp-D, XDE and Cedar.
- wk_end 4mo agoI could've sworn VC++6 had Intellisense. I'm not going to dig too far to confirm but Wikipedia seems to agree with me (https://en.wikipedia.org/wiki/Code_completion#Visual_Studio https://en.wikipedia.org/wiki/Code_completion#Visual_Studio) - it's not a great reference but definitely implies that it was there: > the Visual Basic versions of IntelliSense were always more robust and complete than the 5.0 and 6.0 (97 and 98 in the Visual Studio naming sequence) versions of Visual C++
- tom_ 4mo agoI'm also pretty certain it did, and actually that VC++5 (that I'd used as a student) didn't. I'm less confident about go to definition and stuff, but I think that was all part and parcel of the same thing, so VC++6 had it and VC++5 didn't. (Just like today, it would sometimes fail to work, for no obvious reason, and it was impossible to figure out why, so perhaps for this article it had got itself into one of those situations...)
- tosti 4mo agoThe problem wasn't the IDE, but win32 API documentation was very poorly written back then and lots of programs suffered because of it.
- NuclearPM 4mo agoThat’s what this was for: https://www.thriftbooks.com/w/programming-windows-95-microsoft-programming-series_charles-petzold/501230/item/1863103/?utm_source=google&utm_medium=cpc&utm_campaign=pmax_canada_high_17770447165&utm_adgroup=&utm_term=&utm_content=&gad_source=1&gad_campaignid=17425663805&gbraid=0AAAAADwY45g5EXATjM4ywoYi9Q__lrIOV&gclid=EAIaIQobChMI1-mHjYXflAMVfSrUAR2BtSbaEAQYBiABEgKUbvD_BwE#idiq=1863103&edition=2302929 https://www.thriftbooks.com/w/programming-windows-95-microso...
- p0w3n3d 4mo agoStill young people who have perseverance to load up old windows and VC deserve kudos
- qingcharles 4mo agoI thought we used VC++ 6 to write Abomination[1] but I guess it was VC++ 4 as the dates don't align. The serial cable debugger feature was a godsend. Had the game running on one PC and stepping through it on the other. VSS would kill us, though. Crazy that I'm still using the same IDE in 2026. [1] https://youtu.be/ESGevBO4KKA?t=682 https://youtu.be/ESGevBO4KKA?t=682
- elpocko 4mo agoVC++ 6 was awesome, I wouldn't have a career if I didn't have pirated copies of VC++ 6 and Borland Delphi. And look at how clean and crisp it all looks. Every pixel has a purpose.
- kleiba2 4mo ago> Go back and run setupsp5.exe. This time it will work. By now it should feel like you are following the solution of Monkey Island. Nothing makes sense. We are definitely deeeep into the 90s. Gold.
- ggambetta 4mo agoThe whole thing compiles with 2 warnings. Incredible codebase. John Carmack definitely was/is on a different level. Back when I was making videogames I followed a similar philosophy. No warnings (but in an orders-of-magnitude smaller and less complex codebase). Crash on failed asserts, used liberally, in debug builds. Not sure why but it seems that gamedev doesn't do this kind of rigorous engineering in general (or at least it didn't back then -- and admittedly I never worked in a big studio).
- OskarS 4mo agoI would guess that the 1998 era Microsoft compiler didn't have nearly as many warnings as modern compilers do.
- jbverschoor 4mo agoMan, I love the Visual C++ and Visual J++ interface so much. It was so fast and super clear.
- jandrese 4mo ago> DO NOT get it from github or transfer the files via FTP. I bet the author doesn't know about FTP's ASCII mode, and especially doesn't know that it is the default. ASCII mode was a nifty feature, but it never should have been the default. Especially when you consider that most text files are small and easy to re-download if you forget, while binary files are often quite large and the damage done by the line ending conversion is close to impossible to repair. Also, if you forget to convert a text file you can trivially do it on the host afterward.
- nubinetwork 4mo agoIf it's not that, it's older Windows not having unicode support, or Unix vs Windows line feeds...
- kristianp 4mo ago> bet the author doesn't know about FTP's ASCII mode, I bet he does! Anyone coding before the web would know about that.
- Suppafly 4mo ago>I bet he does! Anyone coding before the web would know about that. It's easy to forget though, especially if the client or the server decides to change modes on it's own.
- johnnythunder 4mo agoThis drips of nostalgia. Quake being the first "lan party" title at college definitely makes me realize my age, but I credit this game for my interest in understanding LAN topologies, networking, latency and learning about multiplayer real-time interaction.
- ChrisArchitect 4mo agoArticle from February OP Some more discussion then: https://news.ycombinator.com/item?id=46936274 https://news.ycombinator.com/item?id=46936274
- bluedino 4mo ago> In June of 1996, having shipped their title but concerned with NeXT stagnation, id Software switched their development stack. id also decided no more DOS games around that time (well, maybe a year later) > For Id Software to develop a game, a dll will be most efficient. We have more cpu power, and we can debug it more easily. We are directing significant effort towards making Quake 2 a better GAME, as well as just a better mutliplayer virtual world. Quake 1 was pretty messed up from a game standpoint, and we don't plan on doing that again. > Speaking of portability, to remove the guesswork that goes on, here are my current opinions on the various platforms: > Win32 > Win32 rules the world. You are sticking your head in the sand if you think otherwise. The upside is that windows really doesn't suck nowdays. Win 95 / NT 4.0 are pretty decent systems for what they are targeted at. I currently develop mostly on NT, and Quake 2 will almost certainly be delivered on win32 first. Our games should run as well as possible in NT, we won't require any '95 only features. > DOS > We are not going to do another dos game. No amount of flaming hate mail is going to change my mind on this (PLEASE don't!). The advantages of good TCP/IP support, dynamic linking, powerfull virtual memory, device drivers, etc, are just too much to overcome. Yes, all of those can be provided under dos in various ways, but it just isn't worth it. > Linux > I consider linux the second most important platform after win32 for id. From a biz standpoint it would be ludicrous to place it even on par with mac or os/2, but for our types of games that are designed to be hacked, linux has a big plus: the highest hacker to user ratio of any os. I don't personally develop on linux, because I do my unixy things with NEXTSTEP, but I have a lot of technical respect for it. > NeXTStep > My favorite environment. NT and linux both have advantages in some areas, but if they were on equal footing I would choose NEXTSTEP hands down. It has all the power of unix (there are lots of things I miss in NT), the best UI (IMHO, of cource), and it just makes sense on so many more levels than windows. Yes, you can make windows do anything you want to if you have enough time to beat on it, but you can come out of it feeling like you just walked through a sewer. > In the real world, things aren't on equal footing, and I do most of my work on NT now. I hold out hope that it may not stay that way. If apple Does The Right Thing with rhapsody, I will be behind them as much as I can. NEXTSTEP needs a couple things to support games properly (video mode changing and low level sound access). If apple/next will provide them, I will personally port our current win32 products over. > If I can convince apple to do a good hardware accelerated OpenGL in rhapsody, I would be very likely to give my win NT machine the cold shoulder and do future development on rhapsody. (I really don't need Quickdraw3D evangelists preaching to me right now, thank you)
- justin66 4mo agoSean Barrett, author of the stb libraries [0] which are near-ubiquitous in game development, is known among other things for still using visual c++ 6. [1] [0] https://github.com/nothings/stb https://github.com/nothings/stb [1] https://m.youtube.com/watch?v=nQrzB5P5NPE https://m.youtube.com/watch?v=nQrzB5P5NPE
- fasterik 4mo agoI hope this means that Fabien is working on another Game Engine Black Book. I really love these deep dives and historical preservation of 1990's game tech. https://fabiensanglard.net/gebbwolf3d/ https://fabiensanglard.net/gebbwolf3d/ https://fabiensanglard.net/gebbdoom/ https://fabiensanglard.net/gebbdoom/
- Suppafly 4mo agoI'd feel a lot better if he'd update his pricing transparency at the bottom of those articles.
- nurettin 4mo agoAnd it was so much better/more stable than Borland C++6! Open/close 15-30 files or mistype a path and borland gave you the good old crash. You had to handle that IDE with extreme care. You'd develop a feeling for its quirks and sometimes it would work for hours without crashing.
- joeyguerra 4mo agoI love doing stuff like it's 1997.
- hashmap 4mo agoman what a great web site. the relevant stuff is right where you would look for it and it doesnt attack my attention with stupid internet mechanisms or otherwise do things i didnt tell it to do.