Skip to main content

Long read: How TikTok's most intriguing geolocator makes a story out of a game

Where in the world is Josemonkey?

If you click on a link and make a purchase we may receive a small commission. Read our editorial policy.

Developing Videogames with Linux

The open source phenomenon

Of all the gaming platforms out there today, consoles have the most unparalleled usability for gamers. After all you simply have to plug them into the TV, bung in a disc or cartridge and get going! Unlike developing a game for the PC though, those that choose to create console games use development tools that can interface with the console, a much more complex process than simply compiling and running the game on your PC.. Every console manufacturer has software development kits (SDK), which usually consist of software and a developmental version of the console hardware, either via a console itself or a interface card for the host development computer. The software comes in several parts; the compiler, the debugger and ideally games libraries and sample code to assist development and give the developer an idea of the hardware's capabilities. SDK's play an important part in the success or otherwise of a videogame console. Make it too hard to learn or too difficult to get results with and watch the developers flock to your competitor. SEGA learned this harsh lesson with the Saturn, a technically complex beast, with two processors at its heart running in a symmetric multi-processing configuration, something that the developers had trouble harnessing the abilities of. Despite its popularity with the general public, there is an increasing shift away from the industry's reliance on Microsoft Windows, and Sony illustrated this well with the news that it's PlayStation 2 development kits would be released for Linux. This relationship between the development community and Linux goes back further than the PS2. The original PlayStation kits use the "Cygnus C compiler" (a program indigenous to the *nix platform), as does a large proportion of the development community. Further back still is the relationship with the GNU and their various tools ("make", "GCC" etc.).

Tools for the Job

In order to develop on Linux, you need lots of programs, APIs (Application Program Interface) and toolkits, which help developers in their quest for ever more impressive games worlds. Probably the best known API is "OpenGL". It's an industry standard, available for PC (just about every operating system), Apple Mac, SGI, PlayStation 2 and a score of others, running in either software or hardware mode. It has been used successfully for years in the 3D and CAD imaging markets where precision and reliability are vital. Program's written with OpenGL are scalable and portable. Hybrid create tools for developing on both SEGA Dreamcast and Sony PlayStation 2 with their "SurRender 3D" product line. GL is a complete 3D rendering tool, handling geometry, textures and more. Umbra removes hidden objects and surfaces in 3D scenes and so improves game performance. Both work in Linux, and according to Harri Holopainen, CTO of Hybrid Holding, this is because it is the company's goal " to develop state of the art 3D rendering technology" and that " it should be able to be used with any hardware/OS platform that [..] customers need." This modern attitude is reflected in the company's software. " It should be up to our customers to decide whether they run on Windows 98 only, not up to us." One of the most prominent 3D imaging applications available is Side Effects Software's "Houdini". It's used extensively in movies, television and videogames. The big Japanese gaming developers (a list including such luminaries as Namco, SEGA and Sony) all use Houdini in the creation of their new game worlds and characters. Videogame artists will always have a need for 2D images, from creating and manipulating texture images to 2D bitmap work. "The GIMP" (please excuse the abbreviation!) is a 2D bitmap tool with hundreds of plug-ins covering every need most videogame developers could have. It has been rumoured (but so far unsubstantiated) that GIMP is even being used within Hollywood. A similar product, NaN's (Not a Number) "Blender", (a freeware, soon to be open source) 3D modeler and animation application has also been used in television production.

../configure ; make

Most games are coded in the C programming language, with some time critical parts in fast assembler. The GNU C Compiler (GCC) is as widely used as OpenGL. GCC takes the source code and builds the end program for the target platform. It's safe to say that GCC plays a very important role in videogame creation. There's more to it than that though, other languages (or even meta-languages, which are subsets of languages such as C or C++) are often employed for a particular need. "Lua" has been used in videogames by both Criterion Studios and LucasArts. Lua is a subset of C. For both developers it has been of use as a scripting tool for programmers and non-programmers alike. Needless to say, it is available for Linux and just about every system in existence. For programmers working on anything more complex than a simple 'Hello World' program, an IDE (Integrated Development Environment) will be top of their must-have list. Opinions on what makes a good IDE can be sharply divided and one of the most popular, Emacs, draws some of the most vitriolic attacks and gushing praise ever. " [It's] not necessarily lack of tools, but unfamiliarity of the tools," Harry Holopainen told us. " Visual Studio users may find it rather difficult to switch over to the world of Emacs, GCC and command-line debuggers." Newer environments such as KDevelop, build on The K Desktop Environment's success and are easing this learning curve. What of the Future? The future is looking brighter still, as Linux gains mainstream recognition for it's flexible and open source nature, more developers and tool authors are discovering the benefits of using Linux. For example, Alias/Wavefront have announced a port of their popular "Maya 3D" application for Linux.

Read this next