by Harald Radke
About the author:
Harry studies computer science at the University of Technology in Aachen, Germany since 1994. He came to Linux in 1995. Since then he plays around with it, always surprised about what a great piece of software it is. He programms a little under X, likes graphics and of course playing games. Other hobbies are: playing board games, reading SciFi, playing guitar (bad!), cooking, practicing Ju-Jutsu and spending his time with his girlfriend.
This is a short overview of the gaming scene under Linux. It tries to show that there is more to the Tux OS than simply Internet or data processing. Today there is a lot to discover about Linux and games.
We all know Tux, the cute little Linux penguin, as a hard working member of the Internet community. A lot of web sites, data bases, ISPs and more are carried on his shoulders. Programs like apache, sendmail, mySQL,..., running under Linux, prove every day that this operating system is reliable, fast and efficient. Recently Tux started to make his way to the desktops.KDE, GNOME or GIMP are examples of productivity software, the normal user needs to fulfill his daily duties. They finally provide features like attractive graphical interfaces most people have missed in the past. And now there is another aspect of Linux that is getting recognized gradually by users, the press and companies: games.
This article tries to give a short introduction to this aspect of Linux. At the end of it you will find a list of references you should check out for more detailed information about the games and programs mentioned here. Also, it is intended to start a new category at LinuxFocus, dealing with gaming aspects. Thus we need you readers to write reviews about games. If you tried out some games or are already an addicted player, please share your experiences and thoughts with others and write an article.
The first games under Linux were those you could find under almost any other Unix as porting them were relatively easy. Also the first Linux users knew them from those operating systems whether from work or college. Those programs were only simple games with no or just poor graphics, not comparable to the games people knew from DOS or Windows PCs. Those boxes on which Unix was running were expensive to equip with sufficient graphics hardware and simply were used in other areas than entertainment.
But coming to the PCs at home, Linux found a relatively powerful and affordable environment to display more than just text or primitive graphics. Development of Tux OS went on and today almost every graphics adapter is supported under the X Window System. Thus a graphical environment is provided for good looking applications and games. Of course there is also support for the console, not only text but graphics. But the vast majority of today's developed application deal with X.
The next problem for programmers was that X is a bit complex to program and it was a lot of work only to display a simple window. So things evolved only slowly. X itself used a lot of system resource which caused games to be slow and simple. But as hardware was getting more and more powerful and prices were at a tolerable level, nicer and more demanding software could be written. And as time went by the programmers got help by several coding libraries and development kits.
More and more of those hardware vendors realized the importance of Linux for a growing group of computer owners, their clients. One by one started to provide information drivers, whether as binaries or even as open source, for their products: graphic adapters, 3D accelerators and sound cards. Today Linux provides native support for a lot of multimedia components.
But not only the hardware companies recognized Linux, the gaming industry as well noticed this new operating system. Though most Linux games are for free (e.g. licensed under the GNU General Public License) there are a few commercial games. This way chances are good to get high quality entertainment to Linux faster. And though some may think the commercial distribution might not fit to the spirit of a free Linux, I personally think that good software is always worth being payed for a reasonable price. And people shouldn't forget that money is made with Linux, maybe less with selling software explicitly but by bundling it with hardware (net servers) or providing support. This can't be done with games. All you can do is sell them. And the pressure of free software could force those game companies to write not only a piece of code but really cool stuff in order to make people buy them.
As mentioned before, today's programmer can use a bunch of different toolkits, libraries, software development kits (SDKs) or even complete game engines. Of course one can use those X widgets sets like qt, gtk, athena, xforms and others. Those sets provide a comfortable way to create nice user interfaces. They also feature basic graphics handling. For a lot of games this is sufficient, programs which don't need to perform a lot of complex graphical operations can be written easily and come with the look and feel people know from their other X applications.
But while games like Minesweeper, Mahjong or even Tetris can be coded with these libs, things are getting worse if it comes to real-time strategy games (RTS) like Warcraft or Command & Conquer. 3D shooters deal with nice textures and must provide high framerates to tie the user to the screen (imagine Unreal or Descent displaying one or two frames per second). For these needs the general purpose widget libraries for X aren't sufficient. Luckily there are some libraries designed for fast and complex graphics stuff.
If it comes to 3D graphics, Mesa is the number one library for these tasks. Mesa is a free OpenGL implementation that was especially designed for creating 3D scenes from simple primitives like vertexes and polygons. One important aspect of OpenGL is that mainstream games are written for it. Thus it is possible to port them to Linux without completely rewriting them. A major drawback of Mesa was the lack of hardware support for 3D accelerators which is mandatory for high end games with texturing, fog, alpha blending and more. Over a long time 3dfx was the only hardware vendor who provided binaries which enabled hardware access under Mesa. A lot of boxes not using that hardware had to spend CPU power for calculations, which drastically reduced performance. But today, a lot of PC users can benefit from their 3D hardware since NVidia released sources for accessing their Riva128/ZX/TNT/TNT2 chipsets. And also the Matrox G200 is now supported by Mesa. A lot of applications (and games) using Mesa/OpenGL can be found on the Internet, most of their names start with GL.
There are more libraries and SDKs for graphical issues, providing input and event handling,
that were designed for gaming. One is SDL, written by Loki Entertainment. Loki
ports popular PC games to Linux. They released the libraries they use for
free, everybody can use them, there are mailing lists where Loki programmers and users talk
about using SDL. There are some games available now, using SDL and being released as open source.
Other libraries besides SDL are: PLib, ClanLib and PowerPakGame SDK.
But games need more that just graphics. There are also sound kits available for playing music and creating sound effects. They are easy to use. Some of above libraries that were especially designed for game development, combine those features, provide graphics and sound handling, even whole animations!
There is another group of helpers for game creators, called engines. These SDKs try to cover all aspects of a certain game genre and try to abstract the game creation process from low level coding. There are engines like Chrystal Space for 3D first person action games and adventures or those for creating role playing games (RPGs).
As you can see there is no standard library/API/toolkit as directX is under Windows. This forces the user to browse thru the games requirements list to pick up all pieces of software the game needs. And soon the own computer is filled with a dozed of libs for those cute little games. On the other hand the programmer can choose a certain SDK by the features it provides and his needs. And nowadays most Linux boxes should have hard disks big enough for all those different software.
You can find almost any kind of game you want under Linux. whether it is just some sort of quick entertainment during a break from work you are looking for (a game of minesweeper, tetris, go) or you feel like you need to free the planet from those ugly aliens or robots (doom,heretic, descent). You need something more sophisticated? ... like leading a tribe from the dawn of time to the top of the world ? No problem, try FreeCiv or Civilisation: Call To Power. No drivers license ? Ok, get into the cockpit with XRacer or GlRacer. You see, it's all out there. Most of the games provide, as they run under Linux, multilayer capabilities, which makes things even more exciting.
Maybe you already know some of the games, while others are totally new to you. There are clones and ports of existing PC games as well as new games of known genres. Clones are completely new developed games, with own graphics, sounds and data (though of course they are similar to those of the original program) with more or less new features, FreeCiv is a good example. Ports usually behave exactly as the original game. Though ports are mostly distributed completely (like Civilistion: Call To Power), there are also projects which only deal with those parts of the game that need to be rewritten. Descent, Doom , Heretic and ALE Clone (warcraft) are such ports. To run them you (currently) need the DOS versions as well to provide the game data. And of course there are those arcade and board games, adventures, simulators, 3D shooters, RTS games, and so on... They use existing (or sometimes even new) game principles, without some direct relation to existing PC games.
Well, at this point it's time to lower expectations a bit. There are a lot of game projects out there. They all differ if it comes to graphics and gaming quality. Some are complex, some are simple, they are all under constant development, maybe already playable, maybe not yet. So don't expect to be happy with all of them. But be fair, take into account that most programs are written in the author's free time and without being payed. Often those programmers are working on their own, without help of other users. Be patient with unfinished, buggy or even not directly installable games. You can support development by reporting bugs, sending suggestions, maybe even by creating graphics and sounds or actively helping to code. A game is still a Linux software project that needs feedback and help.
Wine allows to run Windows applications under X. Same is with your favorite games. There are several reports and success stories of running some of those mainstream games with wine. But you should be aware that wine is, though usable, still under construction and far away from being stable, especially if it comes to Win32 software. Nevertheless it is worth trying, and it is one more prove of the qualities Linux provides.
The behavior of the commercial world confronted with Linux ranges from total ignorance to porting games. There are even new companies founded especially to write games for Linux. A few companies release the source codes of their older stuff so they can be ported for free. Some companies let port their games while others plan to do it them self. Some are hesitating, porting only parts (e.g. gaming server software for multi player gaming). There are user petitions on the www, to convince companies to publish Linux versions of their games. This is a good way to show them that there is a market for Linux software.
All in all, the commercial branch is still very small, as most programmers are totally new to Linux and the potential of the Linux market is hard to estimate for them. Nevertheless some dare to spend time and money for those projects. Let's not only hope for a happy end. If you can choose between the mainstream and the Linux version, take the latter, even though installation may not run that smooth and it might be a little strange to pay for Linux software.
Well, just as the game development in general will go on, this will also happen to those games under Linux. I think the differences in quality between mainstream PC games and those Linux programs will get smaller step by step. Due to commercial companies we will be able to play the same games (well, not all of them) with the same quality also under Linux. Finally I personally believe that it will depend on the gaming scene (besides other areas) if Linux will regularly get onto our home PCs. Not only as a toy but as a real alternative operating system in any respective.
Talking about future projects, I plan to write some game reviews for the LinuxFocus. But of course everybody is invited to do the same. I think this topic is interesting enough to spend some time on it. To be honest, who doesn't really like to play ? (-:
Webpages maintained by the LinuxFocus Editor team
© Harald Radke
1999-11-05, generated by lfparser version 0.9