I’ve previously written about the state of game development on Linux. While Unity, Unreal, Gamemaker, Godot, and a slew of other tools exist for Linux, it’s pretty rare to see someone actually completely developing a game using only open source tools. When I created Fasteroids, I used Gamemaker on Windows, but a lot of the other tools I used were free and open source tools that were available under Linux. I’ve had an itch to create a game entirely under Linux for awhile. So when a game jam came up at the end of August, I decided to throw my hat in the ring and try to create a game entirely using software under Xubuntu Linux.
Chaos Jam was the name of the itch.io game jam I entered. The theme of the jam was Mutation. The jam had a 48 hour deadline. I had a lot of ideas of what I might do, but I because of other commitments I knew I would not have even 24 hours to actually work on the jam. Whatever I created would have to be simple.
After brainstorming, I came up with the idea of having mutant vegetables in a garden patch. As I started fleshing out the game it ended up morphing into a slime-spewing frog being chased by mutated angler fishes. And voila, Squishy and the Fishes was born.
Initially I used Inkscape to flesh out a lot of the artwork. I looked at references, then used the Bezier curves tool to draw the outline of each piece of art. The angler fishes were relatively simple to draw, but the initial artwork for Squishy the frog (as seen on the title screen) was a bit more complicated. One annoying thing I find with Inkscape is that even if I set the document/image to a particular measurement (pixels), it never comes out to what I expect when I export to PNG. To fix this issue I imported the exported PNG into GIMP and resized the image to a size appropriate for the game sprites.
When I did explosions for Fasteroids, I used Aseprite to create the explosions. Aseprite costs money, but it’s not a lot. Several years ago I bought Aseprite as part of a Humble Bundle software deal. In that purchase was a Steam key for Aseprite. If you’re creating pixel art for games, Aseprite is an awesome program. It takes a little bit of getting used to, but, it has some really nice drawing and animation features. Initially, I used Aseprite for the splatter that happens when the fish are destroyed. Later I used Aseprite to create the redux swimming sprite of Squishy the frog. I used the “onion skinning” feature to help animate the legs of the new Squishy sprite. This was the first time I’ve used onion skinning, a nifty feature that lets you see a faded image of the previous sprite (so you can tell the difference between the next frame of your animation and the old one).
I used Audacity to create the “whisssh” sound, which was just me saying “whisssh” into the microphone and distorting it slightly. There was a big stink about “Audacity is now spyware” a couple of years back. This post on reddit talks a little about this issue:
What isn’t mentioned by the Reddit thread is the following excerpt from the Audacity web site:
Ubuntu software tends to always be a few steps behind. The version of Audacity in Xubuntu 22.04 is Audacity 2.4.2, much earlier than the versions of Audacity with networking “features.”
The most obvious game engine choice on Linux is the Godot game engine. Godot is free and open source, doesn’t charge to use the software or for “exports” (to other platforms), and is the lightest of any of the top 5 game engines. You can code in Godot’s scripting language, or use C# to develop games in Godot. I did a quick survey of indie games created for jams, and Godot appeared to be the 3rd most popular engine used, behind Unity and Unreal.
But I didn’t use Godot because I have very little experience with the engine. I wanted to focus most of my time creating my own sprites, instead of learning to code. Because I do have experience with Gamemaker, I decided to give the beta version of Gamemaker for Linux a try. The beta comes with the warning that the version may become unstable. During the coding process Gamemaker did become unstable at one point, but it also warned me that it was unstable, AND, most importantly, it let me save the project. In the few weeks I’ve been using Gamemaker under Xubuntu Linux this has happened a couple of times, both times Gamemaker let me save my project, and when I re-launched the engine everything was back to normal. I even tried to corrupt the project by shutting down my computer with Gamemaker still open, and when I restarted and launched Gamemaker again, everything was okay (but I don’t recommend trying this unless you have good backups – git).
The biggest downside to running Gamemaker under Xubuntu Linux is that the Linux version of Gamemaker cannot produce a Windows binary, even if you have a Windows export license. Windows versions of a game need to be compiled on a Windows machine. In order to do this I created a private repository for Squishy and the Fishes on Github, sent the code up to github from my Linux workstation, then pulled the code down on to my laptop, which I regrettably had to switch from Linux to Windows in order to produce a Windows version. It’s fine, I really should have at least 1 Windows machine around in order to test my games, but I don’t particularly like using Windows because I find it very time consuming (updates, advertisements, etc.).
Overall Squishy and the Fishes took 12th place out of 18 entries. I’m actually quite please with the result as I knew I’d left in several bugs. I submitted Squishy and the Fishes the Sunday morning of the jam, because at that point I was exhausted, and I knew I would be busy running around a good part of the day. Yes, I probably had time to fix the fishes spawning right on top of the player bug, but I wouldn’t get to it until the evening, and the deadline was 10pm. Part of me thought that morning that if I didn’t submit the game then, I probably wouldn’t have submitted it on time. I would have made an excuse, “oh, it’s not finished.”
Squishy and the Fishes placed 9th in both the Gaminess and Enjoyment categories, which I attribute to the splatter/explosions, and the cool-looking slime. The category it didn’t do well in was Mutability, the tendency to change. In the Mutability category it placed right near the bottom at 16th, about where it should be since once you play for about 5 minutes there are not really any surprises. I’m also happy with this result because it’s a simple way to improve the game, add some more twists and surprises.
Since the jam ended I’ve fixed the fish spawning issue, made changes to the Squishy sprite, added a wall around the pond, upped the amount of “pink bullet” ammunition you get when you grab the pink slime bullet, and fixed a few other issues.
I don’t plan on turning Squishy and the Fishes into a big project, like I tried to do with Fasteroids, but I’ll probably add some levels, weapons, and enemies in the near future. I’ve already moved on to a couple of other game projects: a short maze game (that I’m struggling with), and a longer effort side scrolling game. I have some ideas of how to fix the maze game thanks to a game I recently saw advertised that does something similar, but in a much more effective way. I might also add a MacOS version, but this is still something I’m looking into. Sadly, I never bought the HTML export license when Gamemaker was still offering standalone purchases. I regret it now, but I really HATE licensing software on a monthly basis. Despite how much I enjoy using Gamemaker, I’m probably finished with it after the side scrolling game. Godot looks like the way forward, even if it means relearning a bunch of concepts. I don’t regret using Gamemaker, the software is good, but the licensing isn’t my cup of tea… I have enough to track every month, and programming games isn’t my day job.