An Interview with Loki Games' Scott Draeker

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.