Release a libGDX based game on steam

Hey everyone,

with Timbertales I got greenlight in the beginning of the year. Unfortunately I was working on FlatFatCat the last weeks so I had to delay the release of Timbertales on Steam. This week I was able to finally start the implementation and would like to share my experience with a libGDX based game.

 

Steamworks

First of all you need to register on steamworks and your game need to be greenlit (for old games). The new system is steam direct with a fixed fee (but I haven’t made any experience there yet). As I said Timbertales was already greenlit so I just had to register an account on the steamworks page. After that is done you need to fill out a lot of stuff about yourself and your company for taxes and so on. As a foreign developer from Germany it was quite easy for me to go through all this stuff and in the end I just needed to send a passport copy to steam. Everything was processed very fast and I was able to fill out the informations about my game. There are actually two different game sections and I will give a short overview over both: Your shop entry and your game build.

 

Shop entry

The shop entry is quite easy you need to describe your game and upload a lot of different pictures for the store. I always have the problem, that I don’t know which pictures will be shown where. So looked through the store pages and inspect the pictures of others to make a matching. After that was done it was quite easy to provide all the needed assets. For Timbertales we had a lot of assets we could use, so there was no need to design anything from scratch. Then you can just click through the different sections and fill out all informations. The required informations are quite usual such as trailers, reviews, system requirements and so on.

 

Game build

The game build was bit more challenging, since I had absolutely no idea how the steam upload would work. Anyhow the documentation on the steam site is quite good and there is a lot of tutorials in the internet for uploading a game to steam. So I will focus now a bit more on the libGDX part of coding, which was actual needed.
So the requirements for me were quite simple: I just needed the steam Id of the user for my game. At the moment I did not use any other features provided by the steam api such as achievements or notifications. Since I just wanted to have the SteamId of the user the implementation was very easy:

  • First I created a new module in my project with the name steam. Essentially it is the same module as the desktop module from libGDX
  • Then I added the Steam related framework as a dependency to that module. You can find it here: Steamworks4j
  • Everything you have to do now is calling try {
    if (!SteamAPI.init()) {
    // Steamworks initialization error, e.g. Steam client not running
    }
    } catch (SteamException e) {
    // Error extracting or loading native libraries
    }
    somewhere to start the steam api
  • For local testing purposes I needed to add my appId, which could be found on the steamworks page, in a textfile called steam_appid.txt in my assets folder
  • The next step for me was to query the steamId from the api with that code: try {
    steamUser = new SteamUser(new SteamUserCallback() {
    @Override
    public void onValidateAuthTicket(SteamID steamID, SteamAuth.AuthSessionResponse authSessionResponse, SteamID ownerSteamID) {

    }

    @Override
    public void onMicroTxnAuthorization(int appID, long orderID, boolean authorized) {

    }
    });
    } catch (RuntimeException e) {
    // steam is not running
    }
    now I am able to get the steamId with String.valueOf(steamUser.getSteamID().getAccountID())

  • That was everything code related I needed for my game. As I said very, very basic and simple, if you would like to add more features like achievements or notifications it isn’t very hard either. You will just need to add the api calls, most of them are implemented within steamworks4j.

     

    Making executables and upload your game to steam

    Finally we can create our executables and upload them to steam. For creating executables I like to use packr. What you need to do is easy just create a jar file of your game. I normally use gradle for this task so on the commandline in my project folder I just type:

    ./gradlew steam:dist

    “steam” is my module name, so if you would like to create a jar of your desktop module just run ./gradlew desktop:dist. If the building is finished you can find the jar file in your modulefolder/build/libs. Now we can use packr to build our executable for the different platforms (osx, linux, win). I used the win32 and linux32 platforms, because they also work on the 64bit architecture normally. To generate the executable with packr just run the following

    java -jar packr.jar --platform linux32 --jdk https://bitbucket.org/alexkasko/openjdk-unofficial-builds/downloads/openjdk-1.7.0-u80-unofficial-linux-i586-image.zip --executable NameOfExecutable --classpath Generated.jar --mainclass YourMainClass --vmargs Xmx1G --minimizejre soft --output OutputDir

    Basically you call the packr.jar with your desired platform. You can read through the packr readme for all options. You can find the jdks you will need here. After that is done and you have your different executables for all your supported platforms you can follow the official documentation or this guide to upload your game to steam.

    Hope this helps you. For me it was much easier than expected. I had a lot of respect for implementing steam, but in the end with Steamworks4j it is super easy!

Back to Business – Review from Metal Frenzy

Hey everyone,

today I have something different for you: A short review from the Metal Frenzy 2017 combined with our experience in promoting FlatFatCat.

Metal music and game development does this fit?

As usual in the summer time we visited the Metal Frenzy festival. It is a metal festival in Germany Gardelegen. Of course vacation as an indie developer is always a problem as long as you don’t earn of money for it, so I thought about a way to promote FlatFatCat even on the festival and spend some hours. The result: We printed a lot of cool flyers and contacted the festival organisation. We got the ok that we could lay out our flyers at the entrance (Big thanks to Robert) and we were able to spread them on the camping ground. Unfortunately the Metal Frenzy isn’t the biggest festival, however we wanted to try it at least. Here you can see our flyer:

 

FlatFatCat

 

Feedback from Metal Frenzy 2017

I got a lot of very cool feedback from everyone. It was always the same sequence: You tried to offer someone a flyer or two and everyone was first skeptical. As soon as we could speak some words everyone changed their mind and were very kindly and willing to support us.

What this meant for me: As soon as you can tell your story mostly everyone is interested. If you just hand out the flyer no one will care about it. This is actual the same feeling I have with all of my marketing on going. When you try to just announce your game to the press or reviewers no one is giving a fuck. But if you have the chance to tell your story or why you would need support – you will have a lot better chances to get support. I have no idea why this is so – maybe everyone thinks you can develop games and you are already a rich guy or something. As an indie developer with a small budget: I just can say – No! We have the hardest time to promote or distribute our games.

As summary of course the festival is just some days ago, but we could see some increased downloads and we got a lot of cool questions and feedback. So I say it was a cool promoting attempt even if it was the most successful one. It took us just some hours to get to every camp and spread the flyers. I would do it again if I have the chance for it.

Metal Frenzy

Back to business

I have the feeling FlatFatCat is in an good state at the moment. With the update 1.4 we introduced all mandatory features to have a really cool game out there. However there is a lack of downloads and players. But at this point I don’t have any option to make more or better marketing, because I have no clue how? I tried most likely everything what I could read in Blogs and my results are really really devastating. I spend hours of hours in SEO / ASO / Twitter / Facebook / Blogging / Mailing the press and could generate 2 Reviews / 1 press announcement and in total maybe 50 Downloads for more than a week of work. I am not really sure what I do wrong or why I don’t get any audience, maybe at the end I don’t know my audience, the mobile market is too hard or I have a bad game. On the other hand that marketing stuff eats a lot of work time and I don’t get the results I hope for.

So whats the next attempt?

I try to spend my hours in thing I am good at or at least think I am good at 🙂 With my last budget I will introduce Timbertales, our first game, into steam. We got greenlight some time ago and I haven’t had the time yet to implement steam. I want to do this step for different reasons:

  • I want to make the experience with the steam API and libGDX
  • I think Timbertales is worth a bit more attention from my side
  • There are is a big audience on steam I can hope for

There will be some changes to the steam version of Timbertales. I decided to go with a fixed prize and delete all the in game purchase stuff for steam. I think a fixed price fits much better on steam than any free to play concept.

Can we expect another game?

After the steam integration of Timbertales is done, I will have to make some cash again. At the moment it not seems that Timbertales or FlatFatCat will help me surviving. I have some other options, but haven’t decided yet, which one will be the best for me. But I always want to make games and I don’t want to drop my independent state yet – So yes! there will be more games and there will be updates for the current games FlatFatCat and Timbertales. We also thinking about a reskinned version of FlatFatCat – Maybe FlatFatDog 🙂

If you have any questions or feedback don’t hesitate to comment below! 🙂