An Interview with Loki Games' Scott Draekerby J. S. Kelly
Loki Games was the first company dedicated to commercially porting best-selling computer game titles to Linux (because "world domination should be fun").
The company was a pioneer in porting applications from Windows to Linux, and has been deeply involved in the Linux community. Most recently, it spearheaded the OpenAL project, which is devoted to the development of an open-source, cross-platform 3D-Audio library which hopes to become the equivalent, for sound, of what OpenGL is for video.
The O'Reilly Network talked to Loki founder and President Scott Draeker about porting Windows applications to Linux, the Linux market, and the importance of giving back to the Open Source development community.
J.S. Kelly: As far as I can tell, you founded Loki with the intention of porting the best games from the Windows and Mac world to Linux. That is, you founded the company first -- and then set about finding your first product to port. Is that correct?
Scott Draeker: That's right. I spent several months after leaving my previous job putting together the company, finding the people we needed, and negotiating licenses with publishers. We signed the CivCTP contract on December 31, 1998, and started coding January 4.
Kelly: When you did strike your first deal, with Activision, to port Civilization: Call to Power to Linux? What happened next? Had you already assembled a team that was experienced in porting applications across platforms, or was it a completely new kind of challenge?
Draeker: We had a great team, but no one anywhere had ever done this before. In fact the tools we use -- GCC, GDB, and others -- were in some cases inadequate and needed to be enhanced. A year later, we still spend a significant amount of time enhancing tools, as games tend to always push the state of the art.
GCC and GDB
When Richard Stallman founded GNU, which stands for GNU's Not Unix, the first thing that needed to be created was a compiler -- the software that translates the source code a programmer writes into the object code a computer understands. Stallman's free C compiler, (EGCS) was later renamed GCC (GNU Compiler Collection). Today, development of GCC is controlled neither by Stallman, nor -- as is commonly believed -- by Cygnus (now a part of Red Hat), but by an independent steering committee.
GDB is the GNU source-level debugger, which monitors a program at runtime to analyze what it was doing at the time of a crash, in order to narrow down the possible location of a bug.
It is not possible to overstate the importance of these and other free GNU tools to the history and development of free software.
To this day, proprietary compilers and debuggers are not standard components of proprietary Unix systems. They are usually licensed as expensive "developer" add-ons. These free tools which gave power to individual developers and small companies, and which made the rise of Linux -- and innumerable other open source projects -- possible at all.
One of the reasons we've been successful is that we have always believed in open source development. Once we started coding, we had questions and problems which needed to be addressed, and in each case we received the help we needed from the developer lists.
Kelly: Were you able to take advantage of tools which already existed, and if yes, which ones? Or did you have to write a lot of your own toolset?
Draeker: We strongly favor open source tools over proprietary alternatives. That cuts both ways. The downside is that sometimes the only way to get something fixed is to do it yourself. The good part is that you have the source so that fixing things is possible.
In the course of developing Heavy Gear II, we've added several significant functionalities to the GCC compiler. We contracted with Mark Mitchell's CodeSourcery to rectify code-generation problems present in g++ that prevent the proper destruction of static C++ objects in shared libraries at the library close time, rather than the program exit time. This functionality was also contributed back to the community.
Kelly: Have new tools emerged since then, that you wish you'd been able to use from the start?
Draeker: We're very much looking forward to GCC 3.0, particularly for the C++ enhancements. We're also looking forward to better debugging tools, an incremental linker and possible support of Visual C++ extensions.
Kelly: It seems to me that until recently, most Unix developers didn't know much (or care much) about Windows and most Windows developers didn't know much (or care much) about Unix ... Which kind of knowledge was most useful to you in different phases of the project to port a sophisticated Windows application to Linux: developers who had an intimate knowledge of Windows programming, those who had an intimate knowledge of Unix and Linux programming, or those who were familiar with the programming environments of both platforms at the same time?
Draeker: Knowledge of Windows is helpful, but not necessary. This seems counterintuitive as we're porting Windows code, but in fact, most of the Windows specific stuff just gets dumped anyway. Knowledge of Linux is absolutely necessary. A lot of the value we add is not in making a Windows product operate under Linux, but in creating a Linux application that takes full advantage of its new environment.
Kelly: In the Loki Games press release announcing the deal with Activision, you are quoted as saying that Loki Games was "committed to providing an identical port of the new release" of Civilization: Call to Power. Was the Linux version, in the end, an "identical port"? If yes, what were the biggest obstacles that you had to overcome to achieve that goal? And if no, what were the unforseen things that prevented it? Is it possible to overcome them these days, or are they easier to spot ahead of time, now that you know what they are?
Draeker: Civilization: Call to Power on Linux was virtually identical to the original. We even left bugs in that had to persist in order to preserve network game compatibility between the Linux and Windows versions.
The last frontier for 100-percent seamless transition from Windows to Linux games is DirectPlay, Microsoft's networking API. DirectPlay is closed and proprietary, which means there is currently no way to achieve network compatibility with Windows games that use it. [Civilization: Call to Power does not use DirectPlay.] We're looking at ways of surmounting this last barrier.
Pages: 1, 2