TransGaming puts DirectX in Wine


Author: JT Smith

By chromatic

As recently as November 2000, conventional wisdom said that Direct3D
would never work in Wine. Windows programs using Microsoft’s DirectX were
tied too tightly to Windows. TransGaming Technologies, Inc., a modestly quiet
company, has turned this maxim on its ear, releasing a patch to
support Direct3D on Linux.DirectX provides a set of interfaces to hardware, such as sound cards,
joysticks, and 3D video cards. This allows programmers to use a wide
range of capabilities on a diverse set of hardware, though still bound to a
Windows-centric driver model. While Wine has been successful in making
many Windows programs run on free operating systems, the amount of work
needed to use Direct3D was prohibitive. Much of the same hardware works
with Linux to some extent, but using the same features often requires OpenGL, a
similar but competing API. (Windows games that use OpenGL instead of Direct3D,
like Quake 3, are often easier to port to Linux and other systems.)

Headed by Gavriel State, TransGaming
has the ambitious plans of building a business based
on Open Source and improving the state of gaming on Linux. In addition to the
technical challenges posed by re-implementing and reverse-engineering an evolving
standard, the company has invented a new business model where subscribers help
determine development directions. All of the code produced will eventually enter
the standard Wine distribution.

TransGaming worked quietly for almost a year before announcing its
project. The company has recently opened its development, using
SourceForge to
a publicly-available CVS tree and mailing lists for its WineX project. Not only does this fit into
the Open Source development model, it provides an opportunity to attract other
programmers. By design, TransGaming hopes to train coders new to Wine
or WineX on the intricacies of the project, debugging, and writing new code.
It’s heady, technical work, but it can provide the immediate feedback needed
to motivate programmers.

TransGaming’s business model depends on the willingness of
subscribers to fund Wine’s Direct3D development. All other Wine enhancements are
immediately integrated into the standard Wine tree. To date, this includes 2D
graphics improvement and a restructured DirectX hardware abstraction layer. If
the company meets its subscription goals, it will release the Direct3D code
under the Wine license as well. For now, it’s distributed under the Aladdin
Public License, which makes the source code available for free download but
unavailable to commercial products.

A nominal monthly subscription fee buys users the right
to vote on the next project TransGaming’s developers will tackle, and access
to private support forums. While the dollars-as-votes scheme will focus
efforts on the most popular games, all customers should benefit. According to State, improvements to Wine and WineX tend to apply to similar
programs. Games, in particular, only use a few common APIs. Perfecting the
Diablo II initialization procedure may make several other games playable.

As it has done with the Wine project, TransGaming wants to help companies
port their games to Linux. Wine provides a compatibility layer known as
WineLib, mapping Windows APIs to Linux calls, and WineX fits into this. For
companies unwilling or unable to maintain multi-platform code or to use another
toolkit like SDL, something like WineLib can make porting possible very
quickly. In addition, if TransGaming can meet its goal of 20,000 active
subscribers, it will demonstrate a user base ready and able to purchase games on Linux.

Currently, subscriptions are not yet opened. Users are encouraged to
fill out a short survey of technical information. Recent posts on the
development list show some successes with newer games, and public awareness seems
to be increasing. Allowing users to subscribe to the development lists and
to access the central source code repository has improved things to the point
where the company has already received patches from outside coders.

TransGaming has several obstacles to overcome, many of which also
apply to the parent Wine project. It must prove the worth of its code in
the face of a task previously thought to be impossible. Going by recent
developer discussions, providing a compatibility API that exists in several
revisions requires a high level of knowledge both of Windows and Unix.
Attracting and training new developers should alleviate this somewhat. Successful
subprojects may improve the perception and the ability of WineX, though
it’s too early to tell where the critical mass of users and perception is.

There’s also the money issue; the company needs to become self-supporting. With nearly 200
games listed in the unofficial voting booth, the company has plenty of work
to do. It’s unclear how many votes will translate into monthly subscriptions,
but it’s hard to deny the demand. TransGaming’s unique approach of allowing
subscribers to vote on the direction of development (based on the Street Performer
Protocol) may be able to harness this demand. TransGaming’s State explains, “By
setting a line where subscription levels will allow us to continue to do our work
indefinitely, we also encourage our customers to think about the fact
that their financial contributions have a direct impact on the future of the

Given the uncertain economy in the United States, future profitability
may be a hard sell to funding partners. Recent cutbacks by Eazel and Loki
software and id’s announcement of disappointing Quake 3 sales on Linux
don’t necessarily signify a too-small market, but they do make TransGaming’s
job seem more difficult. The goal — 20,000 paying subscribers — is modest enough,
but can the company make enough money to deliver needed support as well as
producing new code? The wild card in all of this speculation is TransGaming’s
rumored negotiations with commercial game publishers. If the company does
what Corel wouldn’t — use Wine to port software very quickly — this could become
an important revenue stream.

Another potential pitfall is the state of Linux gaming support and
Wine itself. Though XFree86 4.0, kernel 2.4, and projects like DRI and GLX
have added sorely-needed support for devices and improved emerging features,
there’s still room for improvement. In addition, the underlying Wine server
can be a huge time sink for programs that rely on Windows multithreading. Given
the usually incremental, occasionally lightspeed nature of development and
the desire of developers to overcome these limitations, things may improve
very shortly. State points out an experimental kernel module that can
already beat the speed of Windows 2000 on identical hardware as evidence.

With non-3D code flowing immediately back to Wine in general and the
likelihood of improvements to one game affecting many others, WineX has
the potential to improve gaming on Linux dramatically in the next few
months. Though TransGaming has ambitious plans for the future, some of which
may result in games being made available to run on Linux, under Wine, at the same
time as the Windows release, the company is currently taking things slowly. It
remains to be seen if they can attract subscribers and developers in sufficient
quantity to garner commercial attention. It’s hard not to believe — this is a
company that’s already doing the impossible.

NewsForge editors read and respond to comments posted on our discussion page.