It’s St. Valentine’s day! Apart from delivering coffee and jam on toast to Mrs. Prince, I’ve been beavering away losing hair and sanity making our games work nicely on Linux through Steam. I now have about two handfuls less hair, but also for your perusal, delectation and delight, all of our Steam games working on Linux!
It also happens to be the case that Valve are celebrating the official release of Steam for Linux starting today, and so we’re doing a special sale of all our games on Steam at 50% off! Now there’s a reasonable chance you’ve already bought one of our games if you’re reading this blog, so if you fancy spreading the love a bit, why not buy the gift of a game for that special friend that you forgot to buy flowers for this morning? A copy of Titan Attacks for the object of your affections will surely go a long way to getting you past first base. You might even find out what first base is! I never got to find out myself, I just looked at Mrs. Prince funnily one day and bam! Pregnant. But that’s another story.
Don’t forget that all our games are also “Buy Once, Play Anywhere” – your games will run on any operating system even if you buy the Linux version. And all you existing Puppygames customers – you can still go here to get your FREE Steam keys (note that you have to register your game first though).
Java On Linux
For the technically inclined, you might be interested to know how our Java stuff works on Linux. Well, the Steam versions are actually fractionally less interesting in this regard, as they’re currently 32-bit only, but if you grab one of the downloads from Puppygames you can see how it works. We’ve got a hybrid 32/64 bit OpenJDK 7 server JVM. Both the 32 and 64 bit binaries are included in the same JVM, and I’ve hacked out the common part of the ginormous rt.jar and separated the two architecture specific parts into rt32.jar and rt64.jar (the arch. specific parts largely deal with integration with X). The appropriate rtxx.jar is prepended to the normal rt.jar classpath using the -Xbootclasspath/P option (see the shell script that executes the game).
One of the best bits about using Java on Linux is that the OpenJDK people have worked out all the compatibility problems, dependencies, etc. with Linux, which means that I am literally writing once and running everywhere, just like was almost hinted at by Sun back in the day. Obviously LWJGL has a big hand in the cross-platform aspect as well, providing trivial handling of graphics, audio and input handling.
We are the custodians of the Steampuppy library, which is our Java interface to the Steamworks APIs. Steampuppy is a very straightforward way to do all the fancy things in Steam such as leaderboards, achievements, DLC, DRM, or whatever. This release sees me lose my g++ virginity – I’ve actually gone and built a libsteampuppy.so library, which cost me only one handful of hair. I actually did it using the Eclipse C++ IDE, so I’m not quite as manly and bearded as a proper Linux beard. This one’s just 32 bit at the moment but I’ll do a 64 bit one when Steam gets a bit more 64 bit friendly.
It turns out that Java + LWJGL is a really awesome way of developing Steam games. If you’re developing a game in Java for Steam, you’ll be wanting to use Steampuppy too. Drop us a line.