Quake 3: Arena Source GPL'ed 485
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!"
Ha ! Bit late uh. (Score:5, Funny)
Take a look at VALVe, at least they released the source of Half-Life 2 before the game was released...
Ohwait...
Re:Ha ! Bit late uh. (Score:2, Informative)
A FreeBSD port can also be found here [freebsd.org], made by the guy who helped with the FreeBSD XBOX port.
My first hack (Score:5, Funny)
Mirror, sans registration... (Score:5, Informative)
Re:Mirror, sans registration... (Score:4, Informative)
Weird... (Score:3, Informative)
-ReK
porting (Score:5, Insightful)
Re:porting (Score:5, Funny)
Re:porting (Score:3, Funny)
Quad toastage!
first thing in the morning.
--Pat
Re:porting (Score:2)
Re:porting (Score:4, Interesting)
Re:porting (Score:3, Funny)
Re:porting (Score:3, Informative)
Re:porting (Score:2)
Real download link (Score:5, Insightful)
Re:Real download link (Score:5, Informative)
BugMeNot (Score:5, Informative)
hey can i complain too (Score:2, Insightful)
and then i entered the second grade.
Hmm (Score:5, Informative)
In short, I like. 1 thumb up. (Hey, it's still C, and I'm a C++ guy in and out.)
Re:Hmm (Score:4, Interesting)
Lollerskates.
Cleaner than q1 or q2 maybe, but it is not really a good example of clean / well written C code in general.
For example, take a look at CL_DemoFilename() for some real "OMGWTFBBQ".
I can't tell if that code is serious or a joke. But it's there.
As for stretches of pages of uncommented assembly code -- it's still there. See BoxOnPlaneSide() in game/q_math.c for example. Or S_WriteLinearBlastStereo16() in client/snd_mix.c.
I really wouldn't use quake3 source as an example of well formatted / readable code.
Re:Hmm (Score:5, Interesting)
Re:Hmm (Score:4, Interesting)
While most of the code in game/ cgame/ ui/ etc are ok, most of the code in unix/ and win32/ is really ugly.
As for ugly low level C math code (game/q_math.c) most of it is actually pretty clean -- its the gobs of uncommented asm that's ugly.
The doom3 sdk is much better -- the simd asm code is in general very well commented.
But there's really little reason to use asm anymore, since the autovectorization in gcc is very nice. It also allows the compiler to optimize much better -- inlined asm functions are hard for the compiler to optimize.
As for hack free... no.. there are plenty of ugly hacks in the quake3 code. It's the nature of the beast
Re:Hmm (Score:3, Funny)
float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * )
Re:Hmm (Score:5, Interesting)
Anyone working on the Q3 codebase today should just delete all the asm code and use the C implementations. Making a commercial game with fairly high end requirements go 10% faster is sometimes worth writing some asm code, but years later when the frame rate pressure is essentially gone, the asm code should just be dumped in the name of maintainability. All the comments in the world wouldn't change this decision a bit.
>But there's really little reason to use asm
>anymore, since the autovectorization in gcc is
>very nice.
I was pretty much with you until that point. I fully agree that there is little reason to use asm anymore (I haven't written any in years -- Jan Paul did all the SIMD work for Doom 3). Knowledge of asm is good to allow you to manipulate compiler output by changing your C++ code, but there isn't much call for writing it by hand.
However, autovectorization in gcc is a particularly bad argument against writing asm code. Scalar compiler code is much, much closer to hand codeed asm in performance than compiler generated SIMD code is. Optimized SIMD coding almost always requires significant transformations that compilers can't really do on their own.
The argument about inline asm hurting compiler optimizations is only true if you are trying to use short snippets of asm, which is generally a bad idea. Asm code that doesn't loop a lot isn't likely to contribute significantly to your performance, with the exception of things like ftol replacements.
John Carmack
Re:bullshit? (Score:3, Informative)
I wrote the Enemy Territory 2.60 Release [activision.com] 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 [anime.net]. You might have heard of this little get together called Quakecon [quakecon.org]. It was used to broadcast the qualifier and tournament matches.
Care to tell us what exactly is your experience with the q3 engine code?
Re:Hmm (Score:3, Interesting)
1) GNU Screen: k&r C, uncommented, undocumented mass of long functions and macros everywhere.
2) Nethack: k&r C, uncommented, undocumented mass of long functions and macros everywhere.
3) Vim: k&r C, uncommented, undocumented mass of long functions and macros everywher
Re:Hmm (Score:2)
Any examples? Sounds sort of like BS.
Re:Hmm (Score:2)
Re:Hmm (Score:2)
Re:Hmm (Score:2, Funny)
So in Communist North Korea, does that joke use old people?
Do stores still have the game? (Score:4, Interesting)
Re:Do stores still have the game? (Score:2, Informative)
Thank you (Score:5, Insightful)
Re:Thank you (Score:2, Insightful)
Mirror without the BS (Score:5, Informative)
What can be done with it? (Score:5, Interesting)
Re:What can be done with it? (Score:4, Funny)
Re:What can be done with it? (Score:5, Funny)
baaa-WHOOOM!
CLIPPY has been killed with a RAILGUN!
Re:What can be done with it? (Score:5, Interesting)
Re:What can be done with it? (Score:2)
Oh wait...
How about optimized builds? (Score:2, Interesting)
Also, will any builds made by us work with punkbuster?
Quake 3 Mods (Score:2, Interesting)
Re:Quake 3 Mods (Score:2)
And that's why id Software rocks. (Score:5, Insightful)
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.
Re:And that's why id Software rocks. (Score:2)
No, it really isn't.
http://www.garagegames.com/makegames/ [garagegames.com]
Re:And that's why id Software rocks. (Score:3, Informative)
Really now...
Compiler - GCC. Check.
Debugger - GDB/DDD Check.
Network Middleware - Q3:A engine network stack, or OpenPlay, or ADAPTIVE Communications Environment, or... Check.
Game Physics - Q3:A engine, or Crystal Space, or NeL, or... Check...
Game Rendering - Ditto...
Installer - Loki/LGP Installer, Autopackage, NSIS, etc. Check.
3D Modeler - Blender, etc. Check.
Sound - OpenAL, FMOD, etc. Check.
Gee
Re:And that's why id Software rocks. (Score:3, Interesting)
It's also really cool that id stayed independent. In a day and age when the normal lifecycle of a game developer looks something like "release, release, release HIT, get purchased by EA", it's refreshing.
Re:And that's why id Software rocks. (Score:2)
Re:And that's why id Software rocks. (Score:3, Informative)
These are just a few examples. There are very few "INDY" software shops that turn out a decent game, if any game at all.
Re:And that's why id Software rocks. (Score:5, Interesting)
John Carmack
Last OpenGL version ? (Score:2, Insightful)
Re:Last OpenGL version ? (Score:3, Insightful)
Maybe now the OS X version will be fixed? (Score:3, Insightful)
Oh, and the screen dumps I've taken (multihead, radeon9600) are static, as opposed to game content. o.O
Re:Maybe now the OS X version will be fixed? (Score:2)
Re:Maybe now the OS X version will be fixed? (Score:2)
1.31 is totally stable, and I haven't had any problems with it.
1.3.2 has the plasma gun problem, and I've had a few other issues with it.
Source ports listing (Score:2)
News oppt'y for cheating? (Score:2, Insightful)
Re:News oppt'y for cheating? (Score:2)
Re:News oppt'y for cheating? (Score:2)
The release of the q3 engine source doesn't enable server operators to cheat. They could already do that.
Filerush.com torrent (Score:5, Informative)
Tip for compiling on linux (Score:5, Informative)
Re:Tip for compiling on linux (Score:2, Informative)
eh... no need for perl here (Score:5, Informative)
that's all you need
MacOSX Version... (Score:5, Interesting)
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.
Slashdot late as usual :-/ (Score:2, Funny)
Reject submissions, only to post them later...
Sounds good, but... (Score:3, Funny)
*runs*
Radiant (Score:5, Interesting)
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.
How to compile this on Linux (Score:5, Informative)
# 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
How to compile with warnings (Score:3, Informative)
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 successf
Gotta love grep (Score:5, Funny)
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.
License problem, GPL/BSD mixed code? (Score:4, Insightful)
Re:License problem, GPL/BSD mixed code? (Score:4, Informative)
Compiling on x86_64 and pointer to int casts (Score:3, Interesting)
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?
What I'd like to see... (Score:3, Interesting)
Re:Source Source (Score:5, Funny)
Re:So... (Score:2, Informative)
Re:UT forever. (Score:5, Informative)
The uncompressed size of the source is just over 35MB.
Re:UT forever. (Score:2)
Re:UT forever. (Score:2, Informative)
That's not tiny at all.
Re:UT forever. (Score:2)
Re:UT forever. (Score:2)
It's the textures and models and sound that drive up the cost of the diskspace with 3D games like Quake 3. Even with texture and sound compression, and some kind of model compression, these are still huge files, and the more compressed they are, the worse your game will perform having to do decompression on the fly. Why else do you think game
Re:UT forever. (Score:2)
Re:UT forever. (Score:2)
Actually, it's a 5MB ZIP archive. Expanded, it yields about 23MB, including 10MB of .c sources. Like you said, definitely not "tiny".
Re:UT forever. (Score:2)
Re:UT forever. (Score:2)
Re:So we will see the GBA and PSP version (Score:2)
Re:So we will see the GBA and PSP version (Score:2)
Re:Unreal Engine 4 (Score:3, Informative)
Re:Unreal Engine 4 (Score:3, Insightful)
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 exac
Re:Unreal Engine 4 (Score:2)
Re:Unreal Engine 4 (Score:3, Interesting)
Re:Unreal Engine 4 (Score:5, Interesting)
We didn't charge much, but I still think they should have just saved the money and released their source.
John Carmack
Re:Docs? (Score:2)
For a true annotation of what's going on in the code, newsgroups will probably be buzzing about it in a short while.
From what I've seen, the
Re:I thought.... (Score:2)
the source is valuable to the community in three ways, firstly for porting to new operating systems/architectures, secondly for making changes to parts that aren't covered by the scripting system and thirdly because it allows true total conversions to be released as standalone downloads.
Re:Nice (Score:5, Informative)
It's the first guess for finding an inverse sqare root using Newtons method. We're still waiting for a mathamatitian to tell us if it's the best choice, but it works. That's one of Carmack's claims to fame in the CS world.
Re:Nice (Score:5, Informative)
This paper [google.ca] says that it was first found in the Quake 3 source. I guess it's in the SDK somewhere?
I wanted to add, too, that this is an example of why companies don't release code. They view things like this as secrets to be kept. Kudos to Carmack for having the confidence.
Re:Nice (Score:4, Interesting)
Re:Nice (Score:5, Informative)
there are several reasons why this code exists in quake3:
1) it was written back before modern FPUs and SSE etc. nowadays doing square roots in hardware is faster, especially if you vectorize. but back in 1999 it wasn't.
2) it was written for mods to use in the quake vm (quake's bytecode interpreter). an engine trap may have been slower.
Re:Nice (Score:3, Funny)
I've got an even faster one: x
[Note to
Nexuiz is similar... (Score:3, Informative)
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