Ludum Dare 49 Post-Mortem - Unstable
Creating a game completely from scratch in 48 hours
06.10.2021 - 16:36This last weekend saw the 49th installment of Ludum Dare, the game development competition where you have 48 hours to create a game for a given theme completely from scratch. This event was my 10th time participating and once again, I wrote a post-mortem about the different steps in the development process and what went well and not so well.
Theme and Idea
The theme for this Ludum Dare was “Unstable”. I started with a quick brainstorming session about associations with the word. The first idea that comes to mind is construction and balancing objects, but there are a lot more things that can be unstable: unstable psyche, unstable ecosystems, unstable economy (i.e. our current economy), radioactivity, and even more that I cannot think of right now. This makes “Unstable” a great theme because there are a lot of different possibilities and there will be a wide variety of submissions.
The idea that sounded the most enticing to me was the unstable ecosystems and slowly narrowed it down to a marine ecosystem. I wanted to create a game about the instability and volatility of many ecosystems.
There is a lot of pollution and plastic trash that is washed into the oceans and slowly accumulates in the marine biomes. Some plants and animals like oysters can filter pollution, so I wanted the player to be able to place them to combat the pollution. At the same time, the player would need to focus constantly on picking up the trash so it doesn’t accumulate too much. I also added a money reward for picking up the trash so it’s also a way for the player to generate some income.
As other pollution sources, I went with oil platforms and nuclear tests, because many nuclear tests have been conducted in coral atolls. There is no way to pick up the nuclear fallout and prevent the oil platforms in the game because as a normal person without any influence in the real world, you wouldn't be able to do anything against these things either.
Programming
For this Ludum Dare, I went with JavaScript and HTML canvas again. It’s becoming my default toolset for game jams. Web games are a lot easier for others to play and judge and I don’t have to worry about the game not running on somebody’s computer because they don’t have the correct C++ runtime installed.
The programming part of the game development process went quite well. Most of the game mechanics were straightforward to implement and didn’t take a lot of time. The only time-consuming programming task was creating the hooking fishing ships because for a Ludum Dare game they had a fairly large number of different states.
The ship drives into the scene and stops somewhere. Then it shoots out a few hooks, which have a simple throwing animation, but as soon as they hit the water, they slowly sink until their predetermined depths. While in the water, they constantly check whether a fish collides with them and if it does, the hook along with the fish gets slowly reeled back to the ship. The ship stays for a while and keeps fishing before it starts to move again and leaves the scene. All of these different states had to be implemented, which took a bit of time. I probably could have forgone the hooking ships and only had the ships with the nets, but at least this way there is a bit more variety which cannot hurt.
While most other things were relatively easy to implement, the game has quite a lot of different mechanics and when you add all of them together I probably spent more time programming compared to previous Ludum Dares.
The colorful squares stage of the development process with most mechanics implemented but not art yet:
Graphics
After the previous Ludum Dare, where I made a 3D game with Babylon.js, I went back to 2D this time around. Because of the time constraints in a game jam, you can only create very simple art, so I went with a pixel art style again.
For the most part, I am happy with how the game looks. The individual art assets could be a lot better, but considering that they were created in a few minutes at most, they turned out alright, especially when combined into the complete scene of the game.
I haven’t done a lot of pixel art recently, so I was a bit out of practice, but I was never a great pixel artist, to begin with. I would like to improve my pixel art skills when I find some time, so I can create slightly better art in the future.
The overall look of the game:
Music and Sound Effects
In previous events, I have always used a music generator and I also wanted to use the website this time around. But after randomizing a few music pieces, I wasn’t happy with any of them, so I did a quick google search to find a different generator. I found one, where you can click the notes and beats yourself, and play them back in a few different styles. I just dragged my mouse across the track and even that completely random pattern sounded half-decent, so I spend a bit more time trying to create an actual piece of music. It’s still quite bad, but given the limited time and that it was my first ever piece created this way, it’s usable for the event.
For the sound effects, I also relied more heavily on a different method compared to previous events. Before I mostly used jfxr to generate sound effects, which are fine in some cases, but more often than not it cannot produce the sound you are looking for. This time, I only used jfxr to create the explosion sound effect, which I then heavily modified in Audacity. All other sound effects were recorded directly with my microphone and then edited in Audacity. The trash sounds were the easiest to create because we live in a world where plastic is ever-present, so I only had to look around on my desk and crumble a bag of nuts.
I’m very happy with the ambient water sound effect in the game. I placed my phone next to the sink and recorded the running water and me splashing it around in the sink. I found a way to make the sound loop almost seamlessly in Audacity and it works very well with the game. When you eventually mute the background music there are still the nice ambient water sounds. Maybe I should have disabled the not-great music altogether and only gone with the water sounds.
Balancing
As mentioned, the theme for this event was “Unstable”. Another word for unstable is unbalanced. So I basically had the task of balancing a game about imbalance.
I always struggle with balancing. It’s extremely difficult to get right on the first try and in a game jam, you don’t have the luxury of adding balance patches after the deadline.
In my game, I had to balance the 10 different pollution absorbers with the 4 different pollution sources and make sure that the prices and placing conditions of the items make sense. I tried to estimate some sensible values and then played the game multiple times to adjust them in the right direction. However, there is also the problem that I was getting better at playing my own game, which made it very difficult to judge how a new player would fare in the game.
Up until the end of the event, I also contemplated whether to include a win condition at all. The game is about the very real problem of pollution and trash in marine ecosystems and there is no easy solution for it in the real world either. If the pollution in my game would keep getting worse until the game is lost, it would be very realistic. However, I wanted to give players something to strive for so I added a win condition when the pollution is less than 5% after 5 minutes when the third oil platform spawns. This makes it possible to win, but it’s very difficult.
When the pollution level increases the screen gets brown and dirty:
Development Timelapse
During the event, I recorded the complete development process and turned it into a timelapse. I only noticed afterward that the dark theme of visual studio code combined with the light browser creates a bit of a flashing screen effect when switching between the two in the timelapse, which isn’t the best viewing experience and maybe even requires a slight flashing light warning. I have to remember to switch visual studio code to a lighter theme before the next event, but here is the development timelapse anyway:
Overall, I am happy with the final game. There are always more features you want to implement and improve, but there is only so much you can do in 48 hours. The game is very difficult and while playing you are constantly busy because you have to try to build up the coral reef and pollution absorbers while at the same time keep picking up the trash so it doesn’t get out of hand and produces too much pollution.
However, the game may not score very well in the event. Some of the early feedback I got already was that the game is depressing, stressful, and sad, which are words you can use when you want to describe the state of many ecosystems in the world. This makes the game very realistic but probably isn’t the best user experience. It's always nice when a game scores well, but Ludum Dare is even more so about improving your skills and actually finishing a game.
Play the game here: https://pingpoli.de/ld49/
Ludum Dare game page: https://ldjam.com/events/ludum-dare/49/volatile-waters
by Christian - 06.10.2021 - 16:36
Comments
Comments are disabled