Quake 3: Arena Source GPL'ed
inotocracy writes "At John Carmack's Quakecon 2005 keynote he promised that the Quake 3 Arena source code would soon be released-- turns out he wasn't just pulling our leg! Today it was released, weighing in at 5.45mb, it makes for a quick download and a whole lotta fun. Developers, start your compilers!"
Take a look at VALVe, at least they released the source of Half-Life 2 before the game was released...
Ohwait...
#define cdkey_correct 1
October 2, 2003, if I read my log... er, recall correctly.
If you don't want to register, but also don't want a capped download: Demon FTP.
I wonder what the most bizarre platform this can be ported to now is?
Follow me
Anyone fancy posting a link to the actual download, rather than yet another javascript-implemented, advert-laden bullshit fest, registration required download portal?
http://planetquake3.net/download.php?op=fileid&lid =2214 Mirror--
Remember, http://www.bugmenot.com/ to get the download at more than 50KBps without having to sign up.
every time something gets released for free i loved to gripe and complain about something totally ancillary, like the fact that i cant get it fast enough...
and then i entered the second grade.
I've been poking around the source since yesterday afternoon (late as usual slashdot) and it's generally MUCH cleaner than Q2. Things are well organized, categorized, and sensible. The id penchant for clumping a dozen header files into just one continues, but overall it's easy to find the code you're looking for. Hell, it took me 3 days to find the BSP code in Quake 2 because they had called it model_t or some such meaningless thing. I can see why Q3 was so popular for licensing, despite being in C. Indeed, it's some of the cleanest C code I've seen laid out to date. Naturally there are hacks here and there, and a few very weird design things...and the C versions of what would in C++ be inheritance and aggregation are hilarious. Overall though, I think this code is going to go a lot farther than Q1 or Q2 source ever did. Compared to everything else out of id, this source is really quite nice. No stretches of pages of uncommented assembly code. Most functions have documentation if it's not obvious what they do. All of the members of the major engine structs are well commented, for the most part.
In short, I like. 1 thumb up. (Hey, it's still C, and I'm a C++ guy in and out.)
I'd like to get it but don't shop online (I know, I know, I'm being a fool), and I haven't been able to find it anywhere, even second hand. It looks like it was never released on Sold Out or Xplosiv or anything like that. Anyone know if there are plans to do any sort of re-release?
I am trolling
In this day and age of everyone trying to patent this, litigate that, and everything in between, it's refreshing to see a company, that really doesn't have any motive to make any money off of this, AND in an industry where this concept seems somewhat unusual, release its source code, instead of letting this go off into some useless void. Actions like can only help the industry as a whole, as some burgeoning programmer will have many sleepless nights ahead spending his/her own time learning the tips and tricks employed in this source code. Thank you.
Mirror
So what can be done with this? Since it's the Q3 Arena code, are developers limited to similar games of running around shooting each other? Or, could someone use this code and remake some older game such as Ultima Underworld?
You know, AMD, P4, etc.
Also, will any builds made by us work with punkbuster?
WTF does D3 have to do with this, or UE3 for that matter? According to the timestamps in the source, the last time this code was touched by id (not counting preparations for GPL release) was 2002. And the number of games based on Q3 tech...it's a massive portion of the industry. If you play any FPSes, you've probably played a game based on the Q3 engine. Call of Duty, Jedi Academy, and Jedi Outcast, for example, are fairly well known examples.
One might assume that with the source being available, popular Q3 mods such as urbanterror could be released as standalone games. However, most mods depends on the PAK files from the game, which have not been open sourced.
It's 5MB after it's been compressed into a zip. As you may or may not know, zip compresses text really well.
The uncompressed size of the source is just over 35MB.
That's code we're talking about. There is no map, meshs or textures into this, just the code, no data. So it's basicly 5 megs of text into a zipped archive.
That's not tiny at all.
Chances that UE3 will be GPL'd: 0
Chances that Doom3 will eventually be open source (minus that code they had to license or something): 1
Carmack kics Sweeney's ass. By the way, doom3 etc was designed for - you guessed it - doom3, while UE3 is designed to be used as an engine for lots of games, so its not a fair comparision. But hey, if we're going to throw around numbers, how bout you take a guess at how many games have used the Quake engines? It's pretty damn high.
p.s. Ubisoft using your engine isn't exactly a selling point. Most of their games are shit tastical. Maybe if they're not coding the engine they'll be able to focus on not sucking, maybe.
No, id Software doesn't rule because they are open sourcing an outdated graphics engine. There will always be complainers...
They rule because they are open sourcing it to make room for cheap games based on that engine. Carmack and Co know that they don't have to give the engine out, but the people that follow their games religiously, this is kind of 'giving back to the community'. The fact this engine will be open sourced means that it can also be improved upon, free of charge. Indy developers (mind you, id Software is one of the FEW left) get a chance to develop a great game -- albeit one that lacks a bit graphically compared to the D3 and HL2 standards -- to cater to a niche crowd and make a name for themselves.
The sheer price to enter the market for game developing is HUGE. Especially when it costs more money to develop a reliable engine than to buy one from somebody else. Those engines can run into the hundreds of thousands of dollars, and for a small gaming firm, or even a lone developer, that entry fee is too high a price to pay.
id Software should be commended for their efforts to continue supporting open source, make room for solo developers, and help broaden the PC gaming genre as we know it by including those who previously had restraints on their investment into gaming.
And to those of you assholes who continually compare Doom3's engine to the Source engine, and say it sucks... just write an engine that's even half as good as the Q3 engine, and then maybe you can say what sucks, and what doesn't. Doom3 may not have been graphically spectacular in its own instance, but I have a feeling that the engine behind it will do much of what the Q3 engine did -- pave the way for amazing games, and challenge hardware AND software vendors to up their efforts to support the T&L and effects that the D3 engine is spectacular at.
The price is always right if someone else is paying.
Since carmack is choosing the Xbox 360 as his main developmentplatform (Direct3D) does this mean that he will be ditching OpenGL?
Seriously. The last version of Q3A (that I'm aware of, anyway) for OS X has a glitchy, game-crashing plasma gun.
Oh, and the screen dumps I've taken (multihead, radeon9600) are static, as opposed to game content. o.O
I already get my butt kicked every time, but won't this allow server operators to make special hacks for their own advantage?
try { do() || do_not(); } catch (JediException err) { yoda(err); }
Here's a link: http://www.filerush.com/download.php?target=quake3 -1.32b-source.zip
Well, it compiles and runs under OSX, but it's not pretty.
So far, there's three pretty major bugs that I've noticed in my limited trial.
1. Trying to ping multiplayer servers crashes the game
2. Several of the 3D models are really messed up, and some are missing. I was playing against a bunch of bodyless people... all that were present was legs.
3. The Quake 3 header on the setup screen is missing.
The odd thing, is that I assumed that since the last build to come out of iD worked great on my G4, that the source would just compile and run without problems... boy was I wrong.
Of course I compiled under 10.4.2, and I think the last time it was compiled under 10.2.x, so the difference in compilers could probably be the difference.
From q_math.c, Q_rsqrt(): // what the fuck?
i = 0x5f3759df - ( i >> 1 );
Always good to know that the engine coders don't know what is going on.
Quake 1 cleanly separated the graphics code from the game code. This means that any Quake 1 mod / total conversion (and there really is no difference between a total conversion and a different game based on the same engine) benefited from every advance made to the graphics code. If you take a look at some of the things being done with Quake 1, you will find that they are quite impressive - particularly when you bare in mind that they are basing it on 10 year old software.
I am TheRaven on Soylent News
find lcc/src | xargs dos2unix
that's all you need
*runs*
The really interesting thing is that its engine is derived from the "Dark Places" engine, which is (in turn) an enhanced Quake I engine. Over the years, the developers of Dark Places and Nexuiz have done an incredible job of bringing this engine up to date and adding high quality eye candy - it's closer to the Q3 engine's capabilities than its modest roots. Nexuiz is at 1.1 release and is one of those GPL games that really show that OSS gaming can work. It's eaten a lot of my time :-)
First off, a big thanks to John Carmack for opening doors for developers... again.
The most exciting thing about this release is the GPL'd version of QeRadiant included with it. Radiant is a tool that many professional level designers swear by. For the first time ever, it is now available for independents to use when creating content for their own games. Prior to this, you needed a license from Id Software in order to use it for commercial purposes.
Tested on a Debian Sarge:
3 2b-source.zip
./unix/cons
/usr/local/games/quake3/baseq3/* ~/.q3a/baseq3/
./linuxquake3
# Get the code
wget ftp://ftp.idsoftware.com/idstuff/source/quake3-1.
mkdir q3a
cd q3a
unzip quake3-1.32b-source.zip
cd quake3-1.32b
# Transformation for UNIX
find -type f -exec dos2unix {} \;
# Compiling
cd code
# Result
cd install
find -ls
# Install the packs
# You needs to original files!
# I do not find them in the source.
cp -a
# Playing
or just a little shorter
dos2unix `find lcc/src`
Results of `grep -ri fuck *':
//NOW close the fucking brush!! // what the fuck? // fuck, don't have a clean cut, we'll overflow // since the cmd formatting can fuckup (amount of spaces), using a dumb step by step parsing // fuck, don't have a clean cut, we'll overflow // vm fuckage // vm fuckage //FIXME: this is a fucking mess // dragged backwards or fucked up // FIXME: this code is a TOTAL clusterfuck // cleaning up after merging and thinks badly fucked up // FIXME: this bend painting code needs to be rolled up significantly as it is a cluster fuck right now
1.
2. i = 0x5f3759df - ( i >> 1 );
3.
4.
5.
6.
7.
8.
9. Note: Unix CR/LF in *.dsw/*.dsp fucks up MSVC++.
10. How the fuck did this happen?
11. some files, and between their revisions and ours we fuck this up.
12. break;
13.
14. {"rem", "Less than half a fucking man."},
15. {"rem", "You're fucking dumb! Suck it down."},
16.
17. this could fuck up if you have only part of a complex entity selected...
18.
I see quite a bit of BSD licensed code in there or usage thereof. Any BSD license with an advertising clausal is incompatible with the GPL (see http://www.gnu.org/licenses/license-list.html) still Quake3 is licensed under the GPL. Wouldn't this be a problem?
It would take a fair amount of writing (but less than writing your own engine from scratch), but you could potentially make just about any kind of game you wanted as long as the engine could handle what you wanted to render.
I could easily imagine someone making a isometric/topdown RPG like Freedom Force with the Q3 engine. Even though I doubt the Quake 3 engine could handle the wide-open spaces and poly counts, hell, someone could use it as the base engine for a MMORPG or something.
It's just the amount of additional coding and re-writing you want to do.
We'll probably just get a really bitchin' version of pong though. Having an engine is one thing, having artistic talent is another.
http://www.quake2evolved.com/news.htm Most advanced Quake II port at the monet. They are currently giving the game a full overhual with high res textures and new models plus full real time lighting.
I don't get this... id have their own tracker, why aren't they using it....
-ReK
md5sum -c reality.md5
reality: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
The build scripts are using -Werror when you do a debug build. Debug is also the default build. So those inline assembly constraint warnings cause the build to error out.
./unix/cons -- release
3 2b-source.zip
If you do a release build the -Werror is not used and it should compile. To do a release build the command is
Or you can get past the inline assembly constraint warnings by editing the Construct file in the code directory and removing the -Werror from $BASE_CFLAGS = $COMMON_CFLAGS . '-g -Wall -Werror -O ';
I've successfully compiled using both methods on my Fedora Core 3 box. The gcc -v output is:
gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)
So to recap jcdr's tips with my addition, you have:
wget ftp://ftp.idsoftware.com/idstuff/source/quake3-1.
unzip quake3-1.32b-source.zip
cd quake3-1.32b
find -type f -exec dos2unix {} \;
cd code
./unix/cons -- release
And from there you have the compiled binary in the install directory.
burnin
Emit4( (int )vm->dataBase );
but dataBase here is a pointer to a byte. It seems like he's probably trying to do something like this:
Emit4( *(int *)vm->dataBase );
Is the former line some sort of casting shortcut with the compiler that makes it do the right thing on x86 architecture, or am I missing something?
Can someone with more C-fu than I comment on this?
how much of the Q2 code was "reused" in Q3Arena.
Coderz 4 Life
The unzip -a looks to be the most elegant with this code from a post above being a close second. To the person who mentioned dos2unix, this is the preferred way of running it recursively.
# Transformation for UNIX
find -type f -exec dos2unix {} \;
The find -type f is finding all regular files (as opposed to symlinks, directories, ports, etc... in unix, everything is a file so you need to be specific)
The -exec dos2unix {} is executing dos2unix on each file found, inserting the name for the brackets. This method executes as each file is found, as opposed to queueing the job until all the files are found.
The \; terminates the command.. although the backslash is normally an escape code, I think the semicolon is the actual terminator.
Actually I've been working on the Q3 code for a number of years. I wrote this and this for example.
I wrote the Enemy Territory 2.60 Release for Id/Activision under contract with them.
I've also had the engine source for over a year under contract with Id/Activision so I could write this. You might have heard of this little get together called Quakecon. It was used to broadcast the qualifier and tournament matches.
Care to tell us what exactly is your experience with the q3 engine code?
I seem to have successfully commented out some checks from the source so it should be easy to play TCs, without owning the game.
// if ( FS_ReadFile( "default.cfg", NULL )
// Com_Error( ERR_FATAL, "Couldn't load default.cfg" );
.NET files to the old format: http://www.codeproject.com/tools/prjconverter.asp
1. Download the 1.32 Point Release
2. Download the Quake 3 Demo.
3. Download my executable (or compile your own) here
4. Install the Point Release and demo to separate directories.
5. Replace the quake3.exe in the Point Release directory with the one you downloaded / compiled.
6. Move pak0.pk3 from the demoq3 directory in your Demo install to the baseq3 directory in the Point Release install. (This may cause weird problems if you try to play online with the normal game.)
7. Quake 3 should now be able to play with TCs, or just the demo with custom maps, without complaining.
I can't guarantee any of this will work, but it seems to have worked for me. The reason for transferring the pak0.pk3 file is that most TCs are not true TCs, but rather use some basic files such as fonts, etc. that they load from the baseq3 directory.
If you don't have any luck with my executable, you could try producing your own. I only made a few simple changes to files.c. I commented out the following lines:
I also commented out the entire function FS_SetRestrictions and just made it return.
I have not made any changes to cd-key related code, so there may be some more work needed.
If anyone is having trouble with getting the project files to work on VC++ 6, download the following tool to convert the
Yes, there was a budget title (Paintball somthing or another) that was developed based on the Q1 source that purchased a commercial license.
We didn't charge much, but I still think they should have just saved the money and released their source.
John Carmack