LD48 Post Mortem - Crisis Management

In this post I share my thoughts on what happened at Ludum Dare 48 and why I refer to it as “crisis management”.

game.png

LibGDX

LibGDX is a Java game development framework which is very close to me. First, it’s written in Java (my favorite language) and it’s not an engine, meaning you can customize the hell out of it.

But, I’ve never used it. I’ve started to experience it to create a game based on one of my ideas, but that’s all. My only goal for this game jam was to complete a game with LibGDX.

What could go wrong?

I’m a pro (haha) at Java, so could there be any problems? Naaaah. Well.

Saturday evening, half-way, I had nothing to present. I was loosely searching for A star solutions and almost gave up. The reason is: I wasn’t prepared enough. I didn’t know LibGDX enough.

I had my plan B: switch to Unity. After thinking about it, I always remembered myself that lots of games exist that are written in LibGDX. I can do it too! Maybe with smaller or different scope, but I can do it. Plus still, Unity is like the devil. It’s tempting, it’s shiny, but in the end, you are gonna sell your soul.

So I went for an hour break and decided: if I cannot solve it, I gave up. But only after I tried all of my backup plans. Fortunately I managed to solve it and in the end, I completed the game!

Let’s see what were the problems / issues.

LibGDX “Review”

  • LibGDX is not an engine. As mentioned, that’s one of the reasons why I love it, though I’ve never ever written a game with it or with a framework. And when you realize that creating an animation (while you even see it) in Unity takes 1–2 mins, in LibGDX you have to write it for yourself. Then rerun the game, check it, exit. Rerun, check it, exit. It’s not that hard, but takes like double or more time. Which is not that much, but if you sum these extra spent times, in the end you get a huge amount of extra time you would need. Yes, I can use tools like Spine, but I just didn’t prepared myself.
  • LibGDX documentation is a bit outdated. LibGDX had a minor downtime while there was not that much progress in the development, because the original author abandoned(?) the project. Since last year, the project became more vibrant again, which was the best tech news for me in 2020. But still, they could not revisit everything that the community postponed in the last few years. Example: I needed an A* algorithm. The gdx-ai package got its last commit 2 years ago. That’s already a red sign, but hey, if it works, it works. Then I thought, I quickly read the documentation and I use some sample and done. No way. They explain how A* works, but no example whatsoever.
  • Gradle just stopped working. I prepared everything Friday evening. And before I went to bed, I thought I would send a fresh sample of the empty project to a friend of mine to try it out if it works. And Gradle just didn’t work. It could not generate a package, just stuck at composing the bundled jre. I spent 2 hours, but nothing. Fortunately I found out what was the problem but it took a good amount of time. The problem was: my scripts downloads the JRE if it has not yet downloaded into its cache. Aaaand the internet connection was a bit slow at that time. As easy as you think.
  • Scene2D is a mess. LibGDX has its own answer to do UI. Which is Scene 2D. The way it works is almost identical to the old school HTML table-layout. Which is bad. We now have so many better ways to approach this problem, but possibly due to the lack of updates in the last few years LibGDX just stuck to this. When you think you now know how it works, you soon have to realize: NO. You still don’t know. And even when you really know it, it’s just really hard to code with and time flies.

Will I use it in the future?

Yes! Despite these issues, I still love it. I really hope the community will remain strong enough. Also, here I had to write like 4 times more code than in Unity, but I enjoyed it! And this is the thing that drives the jams. If you enjoy it, you already won.

So I still highly recommend to give LibGDX a try, it’s a really well organized project which has just got forgotten because of the new kids on the block.

And where is the crisis management?

I had a hard deadline and half-way I had nothing. I quickly came up with possible solutions (a lot), a possible plan B, plan C. Plus, if none of those work, then I change what I can deliver. Instead of stucking in a mud, crying in baby-pose in the bed, I just didn’t stop and procrastinate or stress.

A very good inspiration for me was The Martian book I read recently. The guy was left behind alone on a lonely planet and he was subjected to die in a few months when he runs out of food. He didn’t start stressing, because in 5 minutes, he would die if he didn’t fix his space suit. Even if he fixes it, he will first die, because of the small amount of water he has.

And what he did? He prioritized very quickly and started to work on the problems step by step, without stressing (but being aware of) what will happen months later.

And that is crisis management. You can always be in a crisis, later or sooner, but until you have a well organized plan you follow very accurately, you’re fine. You’ve done what you could do. And that’s what I did last weekend.

The game is available HERE.

GLHF everyone!