IMG Archives
Archives  Features  A Chat With Epic's Ryan Gordon  

A Chat With Epic's Ryan Gordon
March 18, 2004 | Tuncer Deniz

IMG: After Glenda Adams went over to Aspyr, you decided to take over the port of Unreal Tournament to Mac OS X. Why did you do this and can you give us a progress update on the port?

Gordon: Mostly, I'm a glutton for punishment. :)

No, seriously, I started working with UTPG (Unreal Tournament Preservation Group) to update UT99's Linux support. The original Unreal Tournament is still hugely popular online for various reasons, and there were a lot of exploits, cheats, and DoS attacks in the wild that needed to be closed up, so Epic got some people, UTPG, to take care of it.

Since this was turning out to be more than a collection of small fixes, and would ultimately result in breaking network compatibility, we realized we'd have to update the Mac client or leave it in the dust.

Right around this time, Glenda was moving to Aspyr, and I was concerned that there would be conflicts of interest or exclusive rights or something like that which would make continuing Mac work impossible, so I dropped her a line. It turned out pretty well, and we're able to update the Mac support in line with the PC fixes.

Ultimately, the MacOS 9 codebase is going to be in life-support mode...that is, we'll patch it enough to keep it network compatible, but otherwise won't fix any issues in it. The MacOS X port is actually based on Loki's Linux codebase, and doesn't use the Westlake UTX code at all. It's really interesting that porting Linux software to MacOS X is orders of magnitude easier than Carbonizing an OS9 app. Figure that one out.

Right now, the game is totally playable on OSX, but I'm not thrilled with the performance...ut2004, with all its significantly more complex scenes, actually performs better right now. UT99's GL renderer, which was really the King of UT renderers at one point, isn't really optimized for modern hardware. We could probably get huge performance boosts from caching static geometry and using the vertex_array_range extension, etc.

Like everything else, UTPG keeps getting backburnered (several of the members are actually Epic employees/contractors working on other things full-time, too), but we're getting close to a new release, which makes the Mac port less of a moving target. Likely I'll just have to suck it up, carve out a weekend, and finish it.

IMG: You've also worked on ports of America's Army to the Mac and you're also heading up the port of Postal 2 to the Mac. Can you give us an update on those two games?

Gordon: ArmyOps is always marching onward; we're working on the Next Big Version right now.

Postal 2 got pushed to the back burner while I worked on ut2004 (hell, EVERYTHING got pushed to the back burner while I worked on ut2004), but I'm looking forward to wrapping this up, too. It's sorta in the same boat as runs, just needs some lovin' to get it out the door. When there's time to prepare it, there will be a free demo version for download. I'm not sure where the retail version stands in terms of how it will be published, but I'm sure there will be some mac-friendly option available when we get there.

IMG: After having worked on Mac OS X stuff, what do you think about Apple's operating system? What things can be improved upon?

Gordon: Rip out everything. :)

Good software design follows the Rule of Least Surprise...that is, if you use an interface, it'll do what you would expect it to without having to research it throughly. I really feel that most of the APIs in OSX, at both the Carbon and the Cocoa layer, are way too complex, and frequently way under-documented. You end up having to guess your way through it or beg for help on a mailing list. You find simple things are complicated, and complicated things are impossible. You find that there are unexpected corner cases everywhere, so you end up putting out the biggest fires and hope the rest are just okay. It really frustrates me, because damned near every important framework in OSX suffers from this.

This is the Universal Truth: if you aren't Windows, you have to go out of your way to court developers. You have to make it easy to develop for your platform so that the applications show up and the users show up.

Generally, on OSX, I bring my own abstractions with me to cover this. OpenAL hides CoreAudio, SDL hides Quartz, etc. It'd be nice if Apple would provide these things or at least something similar (i.e. - here's the easy way to do it, which is layered on the complicated way, which you can get at if you're either hardcore or desperate).

I'm speaking at the programming level here...if you mean the user level, there's a lot I like about MacOS X, but my gushing about that would be more embarrassing than interesting.

One thing Apple has totally nailed is their performance tools. Shark is the best thing Apple has ever produced, period. Windows developers come over to my desk all the time and go "what's THAT?!" ... I love that reaction.

Basic bottom line, and this goes for every thing that Apple produces, from hardware to UI to programmatic APIs to Pepsi promotions to online services: they either get it really really right, and it's a dream to use, or they get it really wrong and are too stubborn to ever change. There isn't a happy medium, ever, with the notable exception of the leap from OS9 to OSX.


Archives  Features  A Chat With Epic's Ryan Gordon