Why I Think ChatGPT as an Indie SoloDev Is Next Level

It’s the sparring partner you’ve always wanted, the secretary that handles your company organization, or the mentor you’ve always needed. Every SoloDev knows how challenging, exhausting, and versatile the problems of game development projects can be. You end up merging a whole bunch of jobs into one person and have to be at least somewhat competent in a hundred different areas.

For all the weaknesses AI has in topics where we already have deep expertise, it becomes incredibly helpful in areas where we’re not so strong, where we need confirmation, or where we need to run analyses.

Personally, I rediscovered my passion for coding projects through ChatGPT – even outside of the gaming space. Why? Because I love the conversations about state-of-the-art technologies, infrastructure, or even creating marketing assets. As a freelance developer and indie game dev, I juggle a ton of areas, and as always, there are some that I honestly just hate dealing with.

Perfect example: market analysis for new projects or social media marketing. This is exactly where I find AI to be the strongest. You can use it to draft small roadmaps, generate ideas for projects, and later verify them. On these meta and organizational levels, ChatGPT has become a completely new tool for me – one that has actually motivated me to do more, because I can offload the “low-level” work or the stuff I simply don’t enjoy.

It’s a huge relief to have something at your side that can confirm your idea is solid, or that a market isn’t already saturated. These kinds of statements do something to you. They give you the push to put energy and joy back into your work. Over the last few years, I had a ton of ideas and concepts, but I lacked that someone to say: “Hey, this is a cool idea, keep working on it.” Instead, I started seeing everything as not worth it anymore – and along with that, I lost the fun in daily programming.

That has now completely changed. I also work a lot with ChatGPT while coding. If you bring enough knowledge to recognize when it’s talking nonsense (which happens often), you save yourself tons of time digging through documentation or searching for examples. You get solid code snippets and interesting approaches for your work.

But: this only works if you actually know what you’re doing. Just copying things over without understanding them won’t get you anywhere. Very often, ChatGPT’s answers are missing exactly that specific expertise or the context you really need. Generic code only helps if you know how to turn it into something useful.

What I want to say is this: For me as a SoloDev, it’s become one of the most insane tools out there for boosting productivity.

Downsides

  • You often get solutions without having gone through the process yourself. That means you might miss important things along the way.
  • Handing over project management completely can be frustrating, because it’s easy to lose track.

My final advice: AI is a tool – and it should be treated as such. If you don’t understand something, it’s on you to learn it.

In my next post, I’ll write more in detail about my new project.

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!