Dojo (HowTo)







  Easter Eggs




  Martial Arts

Carmack's Cracks
Responses to comments made by John Carmack of Id

By:David K. Every
©Copyright 1999

This article is NOT an attack. In fact, I hope that by me commenting, that people will mellow out an NOT attack Carmack. We (Mac Community) need his games -- so it is prudent to just smile and say, "Whatever you say John -- When's Quake3 going to be released?". Besides, I respect a little opinionated babble, even when I don't agree with it. Lastly, while looking through his writings, I realized that I'd finally found someone with worse spelling and grammar than me -- so there was as immediate bond of camaraderie.

John Carmack is a well known programmer and game designer for Id and is responsible for many hot 3D Games. He made some comments about the Mac at <>, as well as elsewhere, and many people have asked me to respond. Ask and ye shall receive.

I am very pleased that he is choosing to support the Mac more as a game platform. I look forward to Quake3 and think the simultaneous release strategy is a good one. I sincerely hope it works out well for him, his company, and certainly for Macs and Mac-Gamers.

Anatomy of Game Programmers

Many people think Game-hacks are the Gods of programming, because everything is time critical, and you're always down and dirty in the guts of Systems, and are always trying to "tune" for that little extra performance. Many others think that Game-hacks are nothing but ugly coders who hack around everything, can't follow directions, want to do everything their own ways, are creative-moody-egomaniacs, and write impossible to maintain and frankly poorly designed, but working and fast code. The answer is "yes" -- Game coders can be all of those things. I've certainly met some of all. Some of the best (tight fast) code comes from Game programmers, and some of the ugliest, most hardware specific "do it all yourself" code also comes from Game Programmers. Keep that in perspective. Games often have aggressive schedules (which means "slap it together, fix it later"), often ignore rules (rules would slow them or performance down), are look for speed, speed, speed -- and are not always engineering as much as they are hacking and pounding out results. They deserve respect for their results, and the enjoyability of their products, but they make tradeoffs that many others can't afford to make, or shouldn't.

Yet, because Game Programmers make Games, which millions of impressionable (idol worshipping) teens play -- they are often used to that sort of idolatry treatment. Many game programmers have huge ego's because of that -- and the fact is that they are programmers as well. Most programmers (myself included) have big ego's, at least partly because all through their life they've been doing things that others couldn't do, and doing things that they've been told couldn't be done (at least if they are any good).

So my broad-brushed over generalization stereotype of game programmers (until I get to know them individually), is to treat them like creative, opinionated, competent low-level, down-and-dirty coders, with big ego's. If you're nice to them, and treat them with respect (and a little butt-kissing), they will produce great games and maybe teach you a few things along the way.

Back to Carmack

I don't know him personally -- but I still use my stereotype to view him with (encouraged by his swagger, writing and the way he presents himself). Remember what he is, a highly technical low-level game programmer -- that is likely his bias (I mean that as in we are all biased by our experience. I haven't looked at Carmack's code personally -- but I've heard he is very sharp). That doesn't make him a bad guy, nor does it make a God of Engineering -- just a good game programmer with a lot of influence over some high quality games. I'm glad he has seen fit to grace us with his games (kissing butt helps guarantee more support in the future -- and I don't mean this at all sarcastically or snottily -- he will help the Mac industry and he has produced results. He deserves respect and tollerance for that). Hopefully you understand where I am coming from, and where I think he is coming from.

He said some things.

About Mac Software:

Carmack: I think Apple is doing a lot of things right. A lot of what they are doing now is catch-up to Wintel, but if they can keep it up for the next year, they may start making a really significant impact. I still can't give the mac an enthusiastic recommendation for sophisticated users right now because of the operating system issues, but they are working towards correcting that with MacOS X.

Windows has a mediocre lower-level and a sucky UI and high-level. Unix is better at the low-level, and an even MORE sucky high-level. Carmack is a low-level person, commenting on the lowest levels of development. So what does he think? The Mac's low-levels suck. Fine. In many ways he is right the Mac needs improvement, and it is getting it with Mac OS 9 and Mac OS X. Let's face it, the Mac is getting better, and if Carmack didn't think so, then he wouldn't be moving his games to the Mac.

Of course Windows sucks too -- but no need for warfare about who sucks more. At the low levels the Mac would lose (for now) -- over all it would be Windows (IMHO). But he wasn't comparing overall -- just on the things he cares about.

The truth is that it doesn't matter to many programmers (who are using frameworks and higher level development tools), and it certainly doesn't matter to users -- and the parts that matter to users more, UI and some higher levels and the Apps, I find are better on the Mac. So it isn't that I think Carmack is wrong -- he is just looking at things from a certain perspective. I could write the same series of comments from a high level perspective, and tell you how much Windows (even Win32) sucks, and how anachronistic C and Unix are. I would be just as right and valid, from that perspective.

About 3D:

Carmack: Apple has decent APIs for 2D graphics, input, sound, and networking, but they didn't have a solid 3D graphics strategy. Rave was sort of ok. Underspecified and with no growth path, but sort of ok. Pursuing a proprietary API that wasn't competitive with other offerings would have been a Very Bad Idea. They could have tried to make it better, or even invent a brand new API, but Apple doesn't have much credibility in 3D programming.

For a while, it was looking like Apple might do something stupid, like license DirectX from Microsoft and be put into a guaranteed trailing edge position behind Wintel. OpenGL was an obvious direction, but there were significant issues with the licensing and implementation that would need to be resolved.

Again, right mixed with selective viewing. Apple's QuickDraw 3D was a pretty good implementation of 3D. It added things that most 3D API's had ignored. It added basic things like a File Format so that Programmers can easily read and write objects from disk. It also tried to abstract things (hide by putting a layer between design and implementation) so that programmers didn't need to worry about the hardware that was between them and the rendering, and how the rendering was being accomplished. Great long term goals -- but short term it makes things slower -- low level gamers and geeks don't like slower (even if it is better long term). Besides, the programmers working with these things don't want to be "protected" for the future -- they want to get in and mess with things, and take advantage of the hardware they have today. Apple's 3D RAVE helped this a bit (down and dirty and faster) -- but not enough. Better doesn't always win -- and the customers (in this case game-coders) want fast.

OpenGL is a pretty mediocre implementation with lots of shortcoming, some strengths, and a lot that it can't do (that QuickDraw 3D can). But it is far better for games because you are dependent on certain implementation details (like Z-Buffering) and so you can use it to help you in many other little areas. Remember the hackers and low-level coders attitude -- use it now, fix it later. OpenGL is better for NOW, and that is what most gamers care about. Because it is the Standard, it is absolutely correct that Apple go with it -- I'm glad they are. And Carmack is right -- Apple doesn't have enough credibility in 3D, it would be a hard sell to do something better and get others to adopt it. So OpenGL is not significantly better -- but it is the right choice. (When Apple made QuickDraw 3D and RAVE, OpenGL was still pretty new as well).

NOTE: I am not a real 3D programmer. I only get the basics of the problems and issues and did some simple 3D stuff on my own (18 years ago). There are others, including Carmack, that are far more experienced on these issues. Fortunately, the same basic concepts of engineering apply to 3D as to the many other disciplines that I have more experience with.

About Mac OS:

Carmack: My first thought was "throw out MacOS", but they are already in the process of doing that, and its just not going to be completed overnight.
The low level operating systems SUCKS SO BAD it is hard to believe. The first order problem is lack of memory management / protection. It took me a while to figure out that the zen of mac development is "be at peace while rebooting". I rebooted my Mac system more times the first weekend than I have rebooted all the WinNT systems I have ever owned. True, it has gotten better now that I know my way around a bit more, and the code base is fully stable, but there is just no excuse for an operating system in this day and age to act like it doesn't have access to memory protection. The lack of memory protection is the worst aspect of mac development. You can just merrily write all over other programs, the development environment, and the operating system from any application. I remember that. From Dos 3.3 in 1990. Static Memory Allocation... and so on....

Remember, he's a low-level programmer. He's most familiar with Unix or WindowsNT, he did a lot wrong while learning the Mac, and the Mac is easier to crash. He probably wasn't using many tools that can help (bounds checkers like Spotlight, software MMU's like Jasik's 'The Debugger', and so on). So he is right that the Mac is too easy to crash if you are new to Mac developement and not using all the tools at your disposal. Even with those tools the Mac still needs work. I don't think it is quite as bad as he makes it out, but why quibble (give 'em the easy points). Fortunately Apple is fixing all this, and John is making software for Macs -- both of those are important.

Again, I could bitch about all the error ridden Windows documentation out there, the tons of bad and hacky API's on Windows, and so on. Unix doesn't even have any reasonable standard graphics libraries and so on (lots of extras and bolt-on solutions). But when you are a low-level game programmer you often have your own graphics libraries and higher level libraries that you are using -- so you don't care. The point is not to discount what Carmack is saying -- just to keep it in perspective. The parts that the Mac is good at don't really matter much to him (just to most programmers), and the parts he cares about most are things that most programmers shouldn't have to deal with that much (1).

(1) This gets really complex. There are parts of the Mac OS that are very low-level and versatile -- far more than Windows. There are parts that do suck, and some that a very elegant. There is a whole series of things the Macs do well, that Windows and Unix don't do at all, or don't do well. Engineering is about trade-offs. I like Apple's trade-offs, but I certainly understand why Game Developers and some low-level weenies would not.

I think Id has moved all their games to Win32 developement first -- Doom and some other games used to be DOS (Win16?), which had many more uglies with memory management and scheduling, and made the Mac OS look wildly mature and consistent. This has only changed in the last couple years. It is also almost humorously ironic to ignore the 3,000 ways that Windows followed the Mac, up to 10 years late, and note the 3 or 4 things that Apple implemented a few years after Windows and say that "Apple is playing Catch-up" -- but that's just me. That is all irrelevant platform warfare that no one can win.

he bigger point is "Who cares?".

Should a user care? No -- they care about programs, not 5% more grief to programmers. Stability is more a variable of your tools and your Quality Assurance teams and development techniques than memory protection.

Should programmers care? Yes and no. Certainly I am looking forward to many areas getting better -- which I what I think John's point was. I personally wouldn't make the tradeoffs that I'd have to make to use Windows -- but others will.

What I do care about is that id is making great games for the Mac, and the Mac OS keeps getting better.

About Mac Hardware:

Carmack: Basically, [New G3] is a great system, but Apple has oversold its performance relative to Intel systems. In terms of time demo scores, the new G3 systems should be near the head of the pack, but there will be Intel systems outperforming them to some degree. The mac has not instantly become a "better" platform for games than Wintel, it has just made a giant leap from the back of the pack to near the front.

I wish Apple would stop quoting "BYTEmarks". I need to actually look at the contents of that benchmark and see how it can be so misleading. It is pretty funny listening to mac evangelist types try to say that an iMac is faster than a pentium II-400. Nope. Not even close. From all of my tests and experiments, the new mac systems are basically as fast as the latest pentium II systems for general CPU and memory performance. This is plenty good, but it doesn't make the Intel processors look like slugs. Spec95 is a set of valid benchmarks in my opinion, and I doubt the PPC systems significantly (if at all) outperform the Intel systems.

He's pretty much right. The difference in performance between a 400 MHz G3 and a 450 MHz Pentium II is nominal for most things. The Mac will be faster, up to twice as fast for some things -- but there will be cases where the Pentium is faster. Claiming the processor is up to twice as fast is true in limited cases -- but that leads to expectations that aren't realistic.

For the record: I generally tell people that the PowerPC is about 50% faster than the desktop versions of the Pentium II's. This is more realistic, and a more moderate claim than Apple or BYTEmarks. However, if you compare portable versions of the processors, then the PowerPC is literally at least twice as fast. To get a big, hot, power-gobbling CISC monster chip like the Pentium into a low power budget, they have to strip it and take out things that make it go fast. So the "twice as fast" claims are more than true compared to a Portable-Pentium (whether you are using a Laptop or Desktop version of the PowerPC).

The Mac is a better architecture -- but the Pentiums implementation is great despite it's very hacky architecture. Apple measures the things they are good at, the PC types measure things they are good at. BYTEmarks is somewhat biased at tight processing and loops and algorithms the Mac does well. Spec is nearly as biased towards Intel because of tricks with Intel's specialized compiler (and still the Macs are on top). What matters to you is what you are doing -- not benchmarks.

But here's the catch. Stuff a Voodoo card in an iMac and compare it to a top-of-the-line PC costing twice as much (without a Voodoo card) -- the iMac will win. The stock iMac is also probably better than most PC's being sold today. MHz and processor performance is way over-rated in system performance. What matters is what you are doing, and how you configure your machines (and the entire system). Computers are still complex and people place way too much value on processing power, which is a left over from when all the low-level geeks ruled the world. Try out what you are doing to know for sure.

In general my view is that the worst new Macs are better than 80% of the PC's out there (and that are being sold). If you really, really know how to configure a PC, and waste a lot of time (a whole lot of time) learning everything that you need to know about them, then you can configure PC's up pretty well. But to do it well, you usually have to be buying name brand and high-quality components that also drives the costs up as well (30-40% over average). That's why most people don't do that -- and why Packard Bells (know as the proverbial PC's -- for Pieces of Crap) sell like hot cakes. The very top percent of PC's, what most people don't buy and don't know how to setup or maintain, are what most gamers compare the average Macs to. Then they ignore the cost of all the time and energy they spent to configure and maintain their systems and consider the Mac a big "rip-off". I've set up both, and find the Macs more economical, and better performing over all.

Overall I almost agree with him -- for gaming -- the Mac made a leap from the middle of the pack (not his back of the pack), to well above the average PC. In some very rare instances you will probably be able to configure a PC slightly better (or at least comprable). Of course the Mac brings many other advantages to the table like reliability, better preconfigured solutions, usability and so on -- but those things don't matter much to some low-level gamers who do know all the details of setting up a PC. If only all PC users were that savy, they could have machines as good as the Mac.

Carmack: The I/O system gets mixed marks. The 66 MHz video slot is a good step up from 33 MHz PCI in previous products, but that's still half the bandwidth of AGP 2X, and it can't texture from main memory. This will have a small effect on 3D gaming, but not enough to push it out of its class. The 64 bit PCI slots are a good thing for network and storage cards, but the memory controller doesn't come close to getting peak utilization out of it. Better than normal PCI, though.

Read the PC-hardware sites -- AGP isn't quite what it is cracked up to be. Local memory on PCI Graphics cards is like 10 times faster, and a far better idea. AGP doesn't seem to help much, yet. The latency on 66 MHz versus 133 MHz is nominal, so I don't personally buy into the ol' penis measuring "faster is always better" arguments.


There are many other areas that show the Mac is superior. The Mac has a superior RISC architecture of the PowerPC which enables better emulation (more registers, etc.) which is far harder to do successfully with the brain-dead 1970's architecture of the x86 ISA (Instruction Set Architecture) -- but for some reason, that type of issue isn't important enough to register on some people's RADAR. People care about different things -- that's life. That doesn't make them wrong, or right.

I think Carmack's comments typify a somewhat low-level view of things -- he's a gamer -- but it is not always what average people are actually using and what really matters. As he was up on stage at MacWorld he made a crack about the Mac's one-button mouse, basically saying that he hopes Apple finally loses the "brain dead" thing [and goes to a 2 or 3 button mouse] -- or that is how I took it. It is an interesting point, because it typifies where he comes from -- he doesn't care that for 90% of the people a single button mouse is easier, he cares that he can operate more buttons that one, and that 3 buttons are better for his game than one -- so those features are cool (for him).

It actually is getting close to the time when Apple should consider making the change to multibutton mice, just because everyone trained on the PC are used to them. Yet the reality is still that it is easier to teach someone a single button mouse rather than a dual. I don't want to get in that old tired battle again (one button mouse or more) -- there are valid points on both sides. I like that the Mac starts people off with the easier way, and then people can upgrade when ready. But people just have different reasons for their sides.

Id's games weren't dual release on the Mac, not because the Mac wasn't capable of running them (Doom, Wolfenstien, Quake are all testimony that they could be run), or because the Mac was too slow (the Mac versions ran great, Doom outperformed the PC version), the OS too primitive (he can port it anyways, and others did), etc. -- it wasn't there because it wasn't considered "Cool Enough" for some gamers. But the facts are that the Mac is getting so much cooler, and the market is doing so well that it is convincing more companies to make Mac versions -- that bodes well for Macs. That is getting attention with Mac OS 8.5 and G3's -- just wait until Mac OS 9 (Sonata) or Mac OS X and G4's. I'm glad John Carmack (and many others) have figured out that making Mac games is good business. I'll ignore egocentric rants for what they are, just someone's educated opinions (He'll probably do the same for me). I'll stick to focusing on the important stuff. Look at the meat of what Carmack says:

Carmack: So, I got a mac and started developing on it. My first weekend of effort had Quake Arena limping along while held together with duct tape, but weekend number two had it properly playable, and weekend number three had it brought up to full feature computability. I still need to do some platform specific things with odd configurations like multi monitor and add-on controllers, but basically now its just a matter of compiling on the Mac to bring it up to date.

Basically he said that in 40 - 80 hours of work he was able to port his product to the Mac, and keep it ported without much effort. Much of this is because they do what they should with nice, clean, cross-platform development -- but it shows what can be done if you do things right. This should result in 10s or 100s of thousands of sales, and likely millions of dollars (gross). With return on investment like that, how many other companies are going to see the light and "get a clue"? Who cares what they say, or why they didn't port to the Mac sooner -- as long as we have the games today, I'll gladly put up with it. If they can effect needed changes at Apple quicker, then more power to 'em.

Created: 01/11/98
Updated: 11/09/02

Top of page

Top of Section