“Epic Programmer Ryan Gordon burst onto the Mac scene last year with the successful port of Unreal Tournament 2003 to the Mac. A man with many talents, Gordon then went on to port America’s Army to the Mac and has just completed work on the Mac version of Unreal Tournament 2004. IMG recently spoke with Gordon to get his thoughts on UT 2004, the Mac, Mac OS X, and more.
Good interview. What is more interesting is his views on Apple’s Macintosh APIs. He seems to abhor them.
Good to see more games being ported to OS X. I’ve never programmed for OS X yet (Xcode insisted on making hello world for me, the bastard), but I’m really curious to know what it is about development on osx that he doesn’t like, specifically I mean. I’ve heard nothing but good things about it up until this article.
I also find it weird that we haven’t seen a 64bit linux for the G5s yet, it’s not like linux can’t do 64bits, I’ve got a 64bit box running linux (in 64bit mode (Alphas don’t do 32bit)) back in my dorm room running happily.
Sounds like Apple needs to work on their APIs to make them more attractive to game programmers, especially considering the Mac’s marketshare and the time and cost investments that go into game development. A huge reason that people will buy a PC over a Mac is because of the games.
YDL runs on G5s, but you must either be a member or buy a G5 from them to get it at the moment.
I had to chuckle about his comments about Apple. Much as I hate to admit it, he’s right. Apple usually either gets things really really right or really really wrong. Like the Power Mac G5 for instance. Overall, it is really really unbelievably cool. But then the damn power supply beep problem is so wrong it’s not even funny. Why doesn’t Apple fix it? I dunno.
Anyway, I certainly know that a lot of other developers love Apple’s tools and APIs for OS X, so I’d take his comments as “opinion”, not fact. He’s probably right though about documentation. Last I looked, it was rather skimpy in some areas.
Regards,
Jared White
http://www.theideabasket.com
Actually, from talking to other people doing MacOS ports or working on the Mac (Gav State amongst others), I hear similar stories. Most of the internals of MacOS X are a bit of a mess – their Java support in particular is total garbage. Gav told me it was harder to port a game written in Java to MacOS X than it was a program written in Win32/DirectX simply because the Apple Java team kept breaking stuff so frequently.<p>
The ABI/kernel/performance issues are another frequent bitching fest….
The APIs are under-documented? Huh? Apple zealots claim that Mac APIs are well documented and open, while MS uses undocumented, hidden APIs.
Well, now I have an URL to respond, when this happens again.
But then the damn power supply beep problem is so wrong it’s not even funny.
What is it? Never heard of it.
Ryan Gordon, as well as the rest of the Ex-Loki guys are some of the greatest guys you’ll find in the world. I’m not just saying that, Ryan is an all around good guy, he once installed FreeBSD on his machine to help with a bug I found on SDL’s sound.
There are tons of cool projects that Ryan host/paricipates in you can find em down at icculus.org.
http://www.icculus.org/
Oh yeah and I agree that someone needs to steal back the public schools from Microsoft, GNU/Linux maybe .
There’s a difference between under-documented and undocumented. In apple’s case, you know they are there, you just don’t know how to use em. In the MS world, you don’t even know they are there (but apparently that’s to keep they’re internal development model top-notch, 🙄 ).
anyway, i agree with his comments about the carbon API. Why apple didn’t roll out a nice OO/C++ API set is beyond me. for now i’ll keep using QT and hopefully they’ll roll out a nicer API (or documentation set) in the near future.
I’ve done a little bit of development on apple, mainly java, and I couldn’t even find the API documentation, instead, I went to the java site and downloaded the java doc api. However, I haven’t done any development with carbon or cocoa, which I’m dying to go for.
I’m wondering though if ryan gordon perhaps is just a little win32 happy; I mean, if you developed on win32 from the beginning and then had to port to an entirely new platform, wouldn’t you find that new platform kludgy? Reading Aaron Hillegass’ book on Cocoa programming for Mac OS X, the cocoa learning curve is supposed to be steep, however, the rewards and benefits are that you create highly reusable and effiicient coding practice.
I also hear that you can create applications quickly, as in create entire graphical user interfaces in a matter of hours (using interface builder). i suppose you can do that with Visual Studio as well, I digress. They’re probably talking about the graphic libraries such as directx and sdl which is a whole other beast. I can agree with the interviewee in that perhaps apple should concentrate on games and gaming libraries. opengl is supposed to be a great standard for graphics.
personally, I’m quite happy with the games available on apple (blizzard games) and for anything else, I just go play on my consoles.
No offense to ray gordon, because I’ve had experience with porting applications (vax to alpha, alpha to itanium, win32 to dec c), but the process is usually not exactly that of development. They really just, as ray gordon says, “try to run make files”. Usually it’s a process of making sure all the pointers are aligned (32-64 bitness), endianess, library calls translated etc.
It’s not exactly what I would call development because many times you don’t know exactly how the application works, you just make sure it compiles and runs on other platforms.
anyway, long live UT2004!
I agree with GNU/Linux in public schools. My mom is a grant writer for a public school district, and I keep telling her to write grants to get GNU/Linux in schools, and the ability to give the same software they use at school to the kids to use at home (something you will never be able to do with software with nutso licenses).
but then she reminds me that most of the kids don’t have computers at home… catch 22.
I think Macs are a still a good alternative though. plus you can get GNU softwre to run easily enough (generally), plus you have a great OS to use to teach OS basics.
Well, the article says he used to work at Loki porting games to Linux, so I don’t know about him being Win32 happy. I think his main complaint is the OS X APIs aren’t designed for what he’s trying to do. He’s complaining that OS X doesn’t offer appropriate low-level APIs for the type of things he’s trying to do.
“I’m also genuinely shocked that a Linux port that drives the G5 in true 64-bit mode hasn’t shown up to fill this gap.”
You heard the man, now get to work!
“IMG: If you were Steve Jobs for a day, what would you do?
Gordon: Declare that all Mac mice will now ship with two buttons and a wheel. I’d buy the Napster brandname and incorporate their customers into iTMS. I’d aggressively take back the public schools from Microsoft, and I’d make gaming a real focus at Apple.”
This is a good example of how linux and mac are not really competing, and infact benifit each other. They both make great desktops, but they do not really compete in the same space. I do not see any linux laptops competing against apple’s line. I do not see apple with anything competing against linux in the price/diy market. Together ther offer they offer something for every market segment, and together their market share is increasing.
Apple should do more to encourage games targeting the greater desktop unix market. They should ship SDL with osx as an oppicially supported api. Even though there is nothing stopping game developers from using SDL to easily develop for win, linux and osx, it would really help its mindshare it apple started promoting it.
…he really does not have a clue when it comes to Cocoa, it seems. But I guess this guy does not have very much experience in software engineering anyway, being a game port writer and not a software designer.
BTW regarding API documention, what about this then:
http://developer.apple.com/referencelibrary/
…’nuff said!
um, that was just announced today, the article was posted two days ago and probaby written before that.
good timing by apple though.
This guy knows more about game porting and probably more about game design than almost everybody at Apple. They’d do well to heed good advice freely given.
I also find the OSX APIs to be unpleasant.
Hi, I’m curious, if Apple had bought Be rather than Next,
and used Be API rather than OPENSTEP, how hard would porting be?
re: Good software design follows the Rule of Least Surprise
We still wouldn’t be able to print
By PantherPPC (IP: —.asm.bellsouth.net) – Posted on 2004-03-20 07:43:21
“YDL runs on G5s, but you must either be a member or buy a G5 from them to get it at the moment.”
Actually thats not true, get on the G5 development mailing list and ask for access info, they’ll give it to you freely so long as you don’t share the FTP username and password, since their ftp server couldn’t handle a huge spike in load. Thats how I got access to the development ISO’s. Very nice folks, if you want to give it a test drive do that. Have fun with it. 🙂
he really does not have a clue when it comes to Cocoa, it seems. But I guess this guy does not have very much experience in software engineering anyway, being a game port writer and not a software designer.
You said it yourself, he’s a game porter not a software engineer. Who in their right mind would use Cocoa when porting a game that’s already written in C/C++? And God forbid the original game developers threw in some x86 Assembly code just to annoy the porters
BTW regarding API documention, what about this then:
You do realize that there was a time when browsing Apple’s online docs just lead to a “under construction” type of page? I’m speaking of the OSX 10.1 and beginning of 10.2 era. Even now when I browse the Carbon docs and look up a function, it’ll just say “Unsupported.” The functions that are documented don’t get into enough detail. But it’s no big secret that Apple is trying to sweep Carbon under the rug in favor of Cocoa and Obj-C.
I’ve done a little bit of development on apple, mainly java, and I couldn’t even find the API documentation, instead, I went to the java site and downloaded the java doc api.
Well since Java on Mac OS X is the Sun Hotspot JVM 1.4.2 I don’t know why apple would write their own docs for the APIs. You should use the Sun docs. Unless of course you are talking about the cocoa-java bridge stuff, which the docs are there in the same capacity the Obj-C docs are.
I keep telling her to write grants to get GNU/Linux in schools
Why? The main reason Apple is in schools isn’t just the OS, its the educational software (read Oregon Trail, etc…) that are on the platform, and all the work Apple puts into working with teachers and schools to develop curriculum bundles that actually put the computers to good use in the learning environment. Remember, its not just that kids get exposed to some soft of computer, its that the computer act to help enhance the learning experience (beyond just computer programming).
Additionally, the whole point of why Apple is better for schools is that you don’t need a BS CS and an army of IT guys to run the thing. A teacher can do it. And I speak from experience, I have a BS CS and it still takes me a whole day to get a good, stable, usable linux box set up.
“I’m also genuinely shocked that a Linux port that drives the G5 in true 64-bit mode hasn’t shown up to fill this gap.”
http://www.terrasoftsolutions.com/products/apple/g564bit.shtml
You said it yourself, he’s a game porter not a software engineer. Who in their right mind would use Cocoa when porting a game that’s already written in C/C++? And God forbid the original game developers threw in some x86 Assembly code just to annoy the porters
Well, it was him claiming that Cocoa is “…way too complex, and frequently way under-documented, …”. Both of this is just plain wrong, even if the link wrt the ref library is new, the documentation has been there for quite a while now. I hate it when people talk about stuff they don’t have a clue. He is just spreading FUD here, no matter how much he knows about game porting.
This is not FUD, just personal experience. If the ref library is new, then it is not his fault that he speaks from personal experience that he could not find the new doc. And remember he said in the article he did post in the mailing list to ask for help; if the docs were so obviously available, others in the mailing list could refer him to the appropriate docs right away.