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! 🙂

FlatFatCat Version 1.4 – Peachy brings Highscores!

FlatFatCat

Click to download FlatFatCat

Highscores

  • Compete with your Facebook friends
  • Highscores are now tracked on the server

Improvements

  • Changed level times to increase the challenge
  • 4 new levels at the end of the map
  • Added a “work in progress” – tile at the end of the map

Bug fixes

  • Fixed a crash, which occurs if a friend already finished the game
  • Fixed the max width of the map

FlatFatCat Patch: 1.2.0 with more localization

FlatFatCat

Click to download FlatFatCat

1.3 only iOS

  • iPhone 4 support
  • Facebook improvements
  • Rate my game on AppStore

Improvements

  • New contact sound
  • Translations added for pl and ru
  • Drag instead of fling on the overview map
  • New game font to support other languages
  • Back key on phones won’t exit the game
  • Pause button in game with menu to restart level
  • Invite your friends with Facebook

Bug fixes

  • iOS language should now be system language
  • Facebook connect should now work as expected on iOS
  • Music should stop if you pause the game

FlatFatCat released! – Make sure to download it for free

[:de]Hey everyone,

its quite a while ago I wrote my last blog post. FlatFatCat was a very intensiv development time over the last 12 weeks. Anyhow FlatFatCat made it to the mobile Stores. Make sure you download your copy for free today!

KatzenspielClick the image to download FlatFatCat

 

FlatFatCat Development post mortem

Today I would like to talk a bit about the development process of FlatFatCat. We had a brave goal with developing a casual mobile title within 8 weeks. In the end we didn’t reach that goal of 8 weeks and it took us 12 weeks to finish the game. But I still think its a big success for us and we proved another time that we are able to deliver. I want to share some cool things we learned in the process and some things we could improve with another game title.

 

What went well this time?

Better planing
This time we took a more professionell approach and had created a game design document in the beginning with everything covered. So the whole project size and its features where set and everyone in the team had a good overview about the size of the project. Also if there were any questions during the development we a place to look for an answer. Of course sometimes the GDD was outdated or not covering everything in every detail, but it helped us a lot in the process.

Man power!
Before we started FlatFatCat (Project II) I decided to get more man power, since in every project there are a lot of tasks, which are very time consuming, but not always very complex. So we hired an intern as game designer for this project. This was a real good decision and it worked out very well for us. I could focus on development and my girlfriend was able to focus on the graphic assets. Our intern was able to create all levels with our self written level editor and create the GDD in general.

A much smaller project
With Timbertales I tried to create a really cool game with a lot of content a server infrastructure, multiplayer, singleplayer etc. This took me about a year and I had so much more in my mind I could add. In the end there was a lot missing. This time we set the whole project much smaller and adjust it to our given man power. With this approach we were able to deliver a second game in a much shorter time. I think this is key as indie developer. We don’t have any cash cow project for now, but we want to survive somehow. Since my expertise lies in development I should focus on developing games.

Stayed with libGDX
First I thought to switch from libGDX to UE4 and build FlatFatCat in UE4. Since I am not very experienced with UE4 right now it would have taken much longer to have a releasable version. Another point: FlatFatCat is completely 2D and libGDX with Box2D as physic engine fit much better than a beast like UE4 for this type of game. So I kept libGDX for development and made very good and fast progress!

 

What could we improve for the future?

Community
Every game needs a community, which will play the game if it is released. I missed out completely during the development to form a community. There was absolutely no time left for community management, but I think it is a very big part in game development. The bigger you could build up a community during development the better the release will be in terms of quality (player feedback) and downloads of course.

 

Schedule of our next tasks

I am happy with the release of FlatFatCat and I would love to maintain it even more. We have tons of new ideas to improve the game and we are very interested in updating the game with the first player feedback. Nevertheless in the meantime Timbertales got greenlit and I want to integrate the game to steam – for the experience and of course to make the game more visible to a larger audience.
After that one is finished the success or not success of FlatFatCat will decide about the future. Maybe we are able to create a third game or we have to create a third game 🙂

Thanks for reading and I hope you will have a lot of fun while playing FlatFatCat!
[:en]Hey everyone,

its quite a while ago I wrote my last blog post. FlatFatCat was a very intensiv development time over the last 12 weeks. Anyhow FlatFatCat made it to the mobile Stores. Make sure you download your copy for free today!

Cat gameClick the image to download FlatFatCat

 

FlatFatCat Development post mortem

Today I would like to talk a bit about the development process of FlatFatCat. We had a brave goal with developing a casual mobile title within 8 weeks. In the end we didn’t reach that goal of 8 weeks and it took us 12 weeks to finish the game. But I still think its a big success for us and we proved another time that we are able to deliver. I want to share some cool things we learned in the process and some things we could improve with another game title.

 

What went well this time?

Better planing
This time we took a more professionell approach and had created a game design document in the beginning with everything covered. So the whole project size and its features where set and everyone in the team had a good overview about the size of the project. Also if there were any questions during the development we a place to look for an answer. Of course sometimes the GDD was outdated or not covering everything in every detail, but it helped us a lot in the process.

Man power!
Before we started FlatFatCat (Project II) I decided to get more man power, since in every project there are a lot of tasks, which are very time consuming, but not always very complex. So we hired an intern as game designer for this project. This was a real good decision and it worked out very well for us. I could focus on development and my girlfriend was able to focus on the graphic assets. Our intern was able to create all levels with our self written level editor and create the GDD in general.

A much smaller project
With Timbertales I tried to create a really cool game with a lot of content a server infrastructure, multiplayer, singleplayer etc. This took me about a year and I had so much more in my mind I could add. In the end there was a lot missing. This time we set the whole project much smaller and adjust it to our given man power. With this approach we were able to deliver a second game in a much shorter time. I think this is key as indie developer. We don’t have any cash cow project for now, but we want to survive somehow. Since my expertise lies in development I should focus on developing games.

Stayed with libGDX
First I thought to switch from libGDX to UE4 and build FlatFatCat in UE4. Since I am not very experienced with UE4 right now it would have taken much longer to have a releasable version. Another point: FlatFatCat is completely 2D and libGDX with Box2D as physic engine fit much better than a beast like UE4 for this type of game. So I kept libGDX for development and made very good and fast progress!

 

What could we improve for the future?

Community
Every game needs a community, which will play the game if it is released. I missed out completely during the development to form a community. There was absolutely no time left for community management, but I think it is a very big part in game development. The bigger you could build up a community during development the better the release will be in terms of quality (player feedback) and downloads of course.

 

Schedule of our next tasks

I am happy with the release of FlatFatCat and I would love to maintain it even more. We have tons of new ideas to improve the game and we are very interested in updating the game with the first player feedback. Nevertheless in the meantime Timbertales got greenlit and I want to integrate the game to steam – for the experience and of course to make the game more visible to a larger audience.
After that one is finished the success or not success of FlatFatCat will decide about the future. Maybe we are able to create a third game or we have to create a third game 🙂

Thanks for reading and I hope you will have a lot of fun while playing FlatFatCat!
[:]