Compiling Quake Using Visual C++ Express Edition
I don't have a lot of faith in newer Microsoft products. So any comments, concerns, whatever are rather welcome.
Compiling Quake on Visual C++ Express Edition
Most people are using Windows and Visual C++ Express Edition is free (download)... weighing in at a hefty 1.2 GB after install.
For someone who doesn't know, the Quake engine -- winquake.exe, glquake.exe, etc. --- is written in C. Vanilla C.
Not C++, not C# and not QuakeC -- QuakeC is what the external game logic source for a progs.dat is written in.
The Future
If there are to be any future engine coders, it would be rather helpful if they can compile Quake in Visual C++ Express Edition.
If you can't compile, that sort of is a deal breaker.
Issues I encountered ... and dealt with
You can skip reading this. Addresses the issues with trying to compile and how I addressed them.
The project file further down below doesn't have any of these issues -- I addressed them.
1. I ended up copying my existing gas2masm.exe over into the new project folder. I had some small issue with that, I don't recall it being insurmountable but I'm still having trouble finding some stuff in Visual C++ Express because everything is somewhere else.
2. winquake.rc has #include "afxres.h" which is Googling tells me is an MFC file header and not meant/supposed to be using with Visual C++ Express Edition (reference thread), I opened up DarkPlaces source version of winquake.rc and used that as a model.
3. We get this when we try to compile ...
And for whatever reason, changing the variable name from "errno" to "xerrno" solves the problem. (It appears errno is special global variable and such use makes compiler mad?) I remembered seeing the variable renamed in the Kurok source so I evaded the issue.
4. The linker complains about libc.lib. And Googling, it appears just going to project settings and telling the linker to ignore libc works. (Reference thread) (i.e. add "LIBC.lib" to Linker/Input/Ignore Specific Library)
5. After the above, everything compiles and runs.
The Downloads
Visual C++ Express Edition: download page
Entire project folder.zip: Quake Source Code - Visual C++ Express 2008 Project (compile ready)
example glquake.exe compiled with this: download
To compile:
1. Start Visual C++ Express Editor
2. Open the winquake.sln file by doing File->Open->Project/Solution
3. Press F7 to compile and it should compile as-is
4. The glquake.exe is in the "release_gl" folder.
Remember: there are several dozen things "wrong" with glquake, so if it runs funny like you get a white screen (add -no8bit to command line) or if it runs too fast or too slow (clock issue with dual core/quad core if you have one of those), it isn't the fault of the compiler.
Why isn't this in the tutorial section?
I'm going to improve and write a brief tutorial based on any feedback, post the quick and dirty downloads part with a link to this thread as a reference and add screenshots.
