The following blog post, unless otherwise noted, was written by a member of Gamasutras community.

The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.

There are so many articles about how to do games using Windows with engines such as Unity and flipping art from assets stores. But really there are not many articles about alternative development processes such as building under Linux using a cheap and open-source approach.

For instance, I just finished my last game: Infinitrap, this game tooks me around 200 hours to complete including the code, artwork, music and level editing. With the proper tools I found the development process quite straight-forward.

Development environment

I developped the game using Ubuntu 15.04 as Operating System, I am a Ubuntu user since day one back in 2005, before that I used Slackware and Debian since 1997. This environment is stable and proper for game development.

With the arrival of Humble Bundles and Steam, gaming under Linux becomes a tangible thing. I read yesterday about Brandon Adler of Obsidian saying that it was not worthwhile developing for Linux in the specific case of their game "Pillars of Eternity". As one of those Linux player I am still very happy that they have done the port, I finished the game and really liked it.



About the code

I built the game with JAVA using a very good library called LibGDX. LibGDX like Unity, allows you to code once and release on several platforms (Linux, Windows, OSX, iOS and Android). LibGDX lacks in some fields such as it does not contain built-in tools comparable to what Unity offer when you build your levels and UI but having access to its source-code gave me a lot of freedom and understanding about how things worked underneath.

For IDE (Integrated Developement Interface) I settled with Intelli-J IDEA Community Edition, which is free. It seemingly integrates with libGDX through Gradle. I found IDEA to be a very clever IDE that was fun to use. Your mileage may vary. A lot of people prefer to use Eclipse for instance, from my point of view, both work.

In-house tools

I suggest that every developer should automate/facilitate things as much as they can, and do it early in development. For this game I developed a level editor very soon, like in the first week and iterated features into it over time. Since the game is all about levels I had to create something easy to use for players and testers. I developed the editor using Netbeans and not IDEA, because you can build graphical interfaces at a very fast pace by dragging controls into forms. I also created a tool to build and package my animations into texture atlases.

Artwork and assets

On Linux, you could use Adobe products such as Photoshop and Illustrator through Windows emulation (Wine) or Virtual machines (VirtualBox, VMWare, etc...) but over the years I have grown skilled with native tools such as GIMP and Inkscape. I could not argue against the fact that Adobe products are superior but for my own game developement purpose the open-source tools were more than adequate for the task.

For all of you who are programmers, you know how hard and boring it is to draw and do artwork. I had to be in the proper mindset but I could name a tool that saved my life and lot of time, it was Pyxel Edit. It is a pixel art editor designed to make tilesets, levels and animations. At 9.00$ I think it is very cheap. To use it under Linux you will have to run it through Windows emulation (Wine) but it works very well.

Doing animations with tools such as GIMP was a real pain in the ass, Pyxel Edit has a way better approach doing this. I was able to produce a great quantity of animations in a really short time.

Sound effects and music

I have to admit that doing the audio part of the game was a major headhache. I have ZERO talent in audible art. When I sing a song to my kids when they go to bed, it always ends with a strike until their mom replaces me. Since I had no budget to recruit a real artist, I had to find something else.

I settled with freesound.org, a very nice website that offers a good variety of re-usable sound samples and music loops that you can use in your game. I used the awkward Audacity program to do all my sound editing. Audacity is a very powerful program that does a lot of things but the interface is kind of medieval compared to what you can find on Windows' side. There are many irritating things like not being able to open two audio samples at the same time by clicking on them from the file manager. But still, I used it and I was able to do my basic operations such as cropping and fade efffects.

Packaging the game

I had to produce three packages (Windows, OSX, and Linux) that include the JAVA runtime along with the main application to prevent people having to install JAVA manually while keeping the whole package size not too big for download.

LibGDX provides a little tool called Packr that helped me in this task, but only for the Linux and OSX builds. Packr is kind of limited when you want to do things like using a 64 bit JRE under Windows or having an icon ready for your executable file. Because of that, I had to use Launch4j.

For Windows, an extra step was required. I had to put my package inside an installer. The best (and free) one I recommend you is NSIS (Nullsoft Scriptable Install System), it gets the job done and did I tell you it is free?

Conclusion

Doing your development under Linux is not as hard as it was several years back. I remember having to package my C++ game made with libSDL with statically linked libraries for the proper platform, because you know, they are several Linux distributions and "flavors". It was really time-consuming and error-prone. Java fixed this problem for me. Additionally, despite my lack of artistic talent, I was capable of creating the necessary assets for my game to be recognizable.

If you are doing game developement under Linux, I would like to hear from you, what are you doing, what tools are you using?

Infinitrap is currently on Steam Greenlight and Kickstarter, this is a first time for me. You could grab a demo and vote for it if you like it.

Yanick Bourbeau,

Shadebob Games