Carmack: Lord of the Games
seer writes: "This article on Red Herring is a nice look at the interworkings of id software, most specifically their famous employee John Carmack. It delves deeply into the fact that id has stayed a very small company and dabbles with other topics such as Carmack's tendency to stay away from Microsoft 'standards' and the whole DooM ]I[ debacle. An interesting read."
This is really an unfair comparison -- you're comparing oranges and apple pie.
From a compatibility perspective, Java is all about cross-platform-binary-compatibility. To do that, it essentially needs to emulate a consistent set of machine-interfaces -- that's where the Virtual Machine comes in. Beyond that, Java is also supposed to be a "next generation" "idiot-proof" language, and to that end it sacrificed speed for safety (of code).
Carmack's code is about source compatibility. So far as I know, the primary language for ID Software's 1st-person shooters is C/C++. That language, to the bane of novice programmers everywhere, has a tendency to make absolutely no assumptions for you, and as a result well-written code can be highly efficent [gaining an immediate speed advantage over comparably well-written Java code]. Of course, it does mandate some level of system-speficic code somewhere in there, but a good programmer (like, for example, Carkack) will encapsulate it behind an #IFDEF or two.
The only thing that really stops people from writing cross-platform code is system-specific libraries (Like DirectX). Once your code is built around something that tends to be as fundamental as DirectX, a transplant to another library for a different platform is no easy task.
Carmack's "common code," is therefore merely smart design. As the article says, he shies away from the system-specific libraries, so porting becomes a much easier task.
"Evil company X is threatening to restrict our rights! Let's all get together to stop--OOOH! SHINEY!!!" -- AC
I asked this very question when visiting MS 6 years ago... the answer from the guy showing me around (who had been working there since the early/mid 80s) was that no, he hadn't written any code in many, many years.
Having seen Shrek, I know there is more onscreen at any given moment than a single character.
Those apples are nowhere near the size of those oranges.
Those figures are completely inaccurate.
See:
http://www.shacknews.com/onearticle.x/15412/
http://www.shacknews.com/onearticle.x/15371/
he is saying sixfold from doom (250,000) to shrek (1,500,000).
but this is also inaccurate because they compare the full number of polygons per SCENE in quake3 and doom3, to a CHARACTER in shrek. a full scene in shrek i would imagine is a very very large number.
"Catacomb Abyss Released: Dec 1991 The first FPS."
;)
:)
Not really. The game Dark Side for the Commodore 64 was a fully polygonal, first person shooter, that was released in 1988, i think. The only problem was that it had a framerate of about 3 or 4 fps.
On a sidenote, the engine Catacomb Abyss used was written by John Carmack, and share alot of code with the younger Wolf3D.
Good point, but do you know who made Catacomb Abyss?
That's right, id Software. Seems it all keeps coming back to them. Sp00ky, eh?
[PowerPoint] is a tool for capitalist presentation
The last major code Gates wrote (so I've read) was the software for the Radio Shack portable Tandy TRS-100 (which had a rather long battery life, built-in modem, and was widely used by journalists in its day).
Gates' claim to being able to write tight code is not without support: he did, after all, write much of MicroSoft's original code, which were BASIC interpreters that ran on systems with very very little RAM.
Java, on the other hand, is a GENERAL PURPOSE PROGRAMMING LANGUAGE. You could use it to write ANY of the above kind of games, or a client-server application, or a spreadsheet, or pretty much anything else.
You also need to remember that the Java Programming Language and the Java Runtime Environment (JRE) are totally and completely different things. Java source code can be compiled into native machine code, which will run as fast or faster than comperable C++ code. Other languages ( like Python) can be compiled into Byte Codes and run under the JRE
Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
GeForce4 is set to be announced at the 5th of February by Nvidia.
Actually if I remember correctly it came from a sort of fight between the Win9x and WinNT teams. You're right that OpenGL was touted as a feature of NT. As a result Microsoft originally decided not to put it in 9x, as they believed at the time that by the time opengl was needed NT would be the standard. So the 9x team started making direct3d, targeting it at games, and because no game developer expected to be run on NT it started catching on. By the time NT had d3d and 9x had opengl (which wasn't too long afterwards) ms decided to use d3d as a tactical technology and proceeded to ram it down our throats.
Romero did not quit. He was fired.
I no longer have the url but John Carmack said Romeo would blow off the day by playing and not coding and would not listen to other employees about idea's for the games. He basically wanted a game with a story and intereactive plot while John Carmack did not. The split grew worse and worse and he eventually refused to work on the same assignments as Carmack and he would do his own thing anyway. Carmack got so pissed that he went to the CEO and made a case to fire him. The CEO who was behind John Carmack all long fired Romeo and another co-worker to set an example. John Carmack is a perfectionists and doesn't like other people getting in his way. But what made it worse was that the whole team went one way while Romeo refused to go with the flow. THis and not the hours is why is he left.
http://saveie6.com/
Why does Ultima: Underworld never pop up when a discusion of the first FPS's arises?
Uh, NO.
BattleZone in the arcade, and Stellar7 on the Apple ][. same thing.
Feed the need: Digitaladdiction.net
Microsoft is not a company to just go off and create new software from scratch if they can obtain it elsewhere for cheap.
i couldn't have said this better myself, except you should have left off the 'elsewhere for cheap' part.
here's microsoft's own homemade company plan:
1. obtain technology, using whatever means necessary (if it's an illegal way, request to speak with Bill in a private meeting, he might be interested).
2. once new technology is obtained, close it up and cloud it up with a bunch of bloaty code.
3. give millions to other companies to 'influence' them to adopt this technology for their products, further locking the technology into some sort of twisted 'standard'.
but wait, let me ask you a few questions:
does all this mean that the obtained technology is the the best solution to any problem?
NO
does this mean that if a better technology becomes available, then it has a chance to become the standard?
heheh, NO (isn't it beautiful?)
does this benefit the customer in any way, shape or form?
NO
i refuse to support corporations who practice bad business ethics.
where would science be today if Isaac Newton or Einstein failed to share their discoveries to other scientists?
open source mimics evolution in computing science. it's just a matter of time before Gates and his anti-customer business practices cease to exist.
Yep. Compile once, run anywhere =).
(well, it won't work if the mod is distributed as a
For my graphics class in college we had to write an Asteroids program in OpenGL. I decided that it was kind of lame to do all the work to render asteroids and ships in 3-D only to shoot them in a 2-D plane. So I implemented a 3-D space shooter involving asteroids. It soon became apparent that in order for there to be enough asteroids to hit you there had to be A LOT of asteroids. The number that sticks in my head is 400. Since shooting 400 asteroids was pretty dumb I added some Tie-Fighters to the mix and had the objective be to shoot the Tie-Fighters.
All the work in this class was done on Macintosh computers. I was the proud owner of a Mac Performa 6200. It ran at 66 MHz, with no 3-D graphics card. I actually got my little game to run at a reasonable speed on it. Everybody else in the class wrote games that were played in a 2-D plane and many of them didn't run fast even on the brand new G3s that were showing up around campus.
Now for the point of my story. After graduation I went to work for a certain company and they gave my a nice laptop. It ran Windows. I decided it would be nice to try to play my game on it. The port was EXTREMELY easy. I had to add a crappy Win32 main and I had to replace the keypress codes since I hadn't used GLUT for kepresses since it didn't work with multiple keypresses. I also yanked the sound code out since it was Mac specific. But it took only a few hours to have the game up and running.
If you want to see the result you can get it here. Source is there too.
I later loaded Linux on my laptop and ported the game to Linux. It took a bit longer to find working keypress calls. I ended up using SDL without porting the whole game to SDL. The result was a little ugly but the game worked just fine. I haven't invested the time needed to polish up the Linux version is all.
Looking back I know that it would be very easy to write this OpenGL based game in such a way that it would run on all three of these platforms with a simple recompile if I had used #IFDEFs. Being lazy and busy with other things I haven't done that. But it is impressive how portable a game written in OpenGL can be.
Lasers Controlled Games!