pingpoli.de



Ludum Dare 52 Post Mortem - Harvest

Creating a game in 48 hours

11.01.2023 - 17:19
2023 started with a surprise Ludum Dare event last weekend. If you don't know Ludum Dare by now, it's a game jam where you have 48 hours to develop a game for a given theme completely from scratch. It was my 13th participation already and it's one of my most favorite events because I'm forced to actually finish a game and not start hundreds of unfinished projects like I normally do.

Theme & Idea


The theme for this Ludum Dare was Harvest. As far as themes go, it wasn't one of the better ones. A good theme is intentionally vague and leaves a lot of room for interpretation to allow for as many different game styles as possible. Harvest, however, is probably going to lead to a lot of farming games.

I would have liked to create a farming game - I love Stardew Valley after all -, but I didn't want to be one farming game out of many, so I tried to come up with different ideas for harvesting. Possibilities would have been harvesting organs or souls, but creating a game about organ harvesting didn't sound appealing, so I quickly discarded those ideas. Instead, I hopped on a call with my brother for some brainstorming, and after a while, he casually threw in "truffle pigs". I immediately liked the idea and I knew I wanted to do something with a truffle pig, but it took me a while to come up with the mechanics for the game.

In the past, pigs were used to locate the delicious underground mushrooms and harvest them. Nowadays, however, they have been mostly replaced by dogs, because pigs tended to eat the truffles themselves.

The game mechanics I ended up with are based on the pig's abilities: The player controls the pig and can use different skills to find and harvest the truffles. The most important ability is "smell", which shows an indicator in the direction of the closest truffle for a brief moment. You have to follow the indicator and keep smelling until the direction changes, which means you probably went too far. At that point, you can use "dig" to unearth the hidden treasures and "collect" them.

To make the game a bit more interesting, I also introduced hunters that show up after a while. If the pig comes close to a hunter, the hunter shoots at the pig. If you get hit, you take damage and if you are out of health, you lose the game. However, I also added a new skill called "eat": The pig consumes one of the collected truffles, which heals it a bit and gives it a short speed boost. Because the truffles are also the score of the game, you have to sacrifice your score to use that skill.

Programming


A few days before the event, I started to work on a new HTML5/WebGL framework for small web games like Ludum Dare entries. While it's very far from even being remotely considered done, it probably would have been usable already. It has functions to draw images and text, which is pretty much everything you need for most 2D games. However, I decided against it, because I didn't want to hastily add something to the framework during the event that I would need to redo later. So I just went with my good old trusted vanilla JavaScript and HTML5.

This game didn't have any new and complicated mechanics, I had used similar features in previous games, so I knew how to do everything. However, I'm quite bad when it comes to accurately estimating the time it takes to implement something familiar. I keep thinking "this is easy and I can do it in a few minutes", which is true on an individual-feature scale, but I always underestimate the total number of small and easy things I need to do and it quickly adds up to a lot of time. However, I was able to create most of the features I wanted for the game. I have always more ideas and not enough time, but that's the nature of a 48-hour game jam like this.

An early, programmer-art stage of the game:


Art


Like most of my Ludum Dare games, I went with a pixel art style because that's what I'm most familiar with and I can create somewhat decent-looking assets quickly. However, unlike any other Ludum Dare event, this was the first time where I did not use Photoshop. For a long time, I wanted to move away from Photoshop because I don't like Adobe's subscription-based pricing. In the past, GIMP was the open-source alternative to Photoshop, but I never understood the user interface and never learned how to use it properly.

A while ago, I became aware of Krita, which is another free and open-source image editor. So when I got my new laptop and didn't want to install Photoshop, I decided to give it a try and I was immediately satisfied. Unlike GIMP's weird UI, Krita's user interface is heavily inspired by Photoshop, which means I was able to learn it a lot faster and found most features where I expected them. It's not perfect and lacks a few features I used regularly, but considering that it's open-source, I can live with a few flaws and I'm going to keep using it for the foreseeable future.

I had a few slowdowns during Ludum Dare because I didn't know how to do something in Krita, but overall it wasn't a big problem. In fact, some features I liked more than Photoshop. For example, the texturing brushes worked really well for creating the big ground texture and also for adding a bit of variation to flat colors.

The one art-related aspect I struggled with during this event, was creating a tree. I tried at least five times to create a good-looking pixel art tree, but they always looked like a non-talented three-year-old slipped with their crayons. Instead, I just used Krita's texturing brushes to create the leaves and it ended up looking decent.

By far the most important asset of this game is the pig because it's the player-controlled character and is always in the center of the screen. Therefore, I wanted to make it as good-looking as possible. Unlike many other Ludum Dares where I hardly created any animations, I made the pig fully animated with a different animation for every movement direction (left and right are the same, just mirrored). Even the fairly simple animations I created made a big difference and the game feels much more polished.

The final look of the game:


Sound Effects and Music


I always struggle with music and sound effects when creating games. However, this time, I had a bit of an easier time than normal. Mostly because it turns out, it's not that difficult to make some pig sounds and record them. Humans are like 90% identical to pigs after all, so we can make similar sounds. Additionally, I was able to create a very convincing shooting sound effect by maxing some sliders in the drum generator in Audacity. The only sound effect that's a bit lacking is the digging sound. For the music, I used the Google Music Lab Song Maker once again. I don't know how to make good music with it, but at least the game has some music and I always add an easy way to toggle the music off in case it's too annoying.

Highscores


I developed a Tetris app for my sister for Christmas. That game included an online leaderboard and the game quickly evolved into a family competition for the number one spot. I'm pretty sure the competition has increased the playtime of the game significantly. Because of this, I also added a leaderboard to my Ludum Dare game with the hope that players will try to compete for the highest score. I was able to use most of the code from the Tetris game, so it was a fairly quick feature to implement.

Balancing


Unlike some of my recent Ludum Dare games where balancing was a total nightmare, this one wasn't too bad to balance. The main question was how quickly should the hunters spawn and how strong should they be. I never wanted to add a way to win the game, it was always supposed to end with death by a hunter, so even if the final game balance isn't good, the worst thing that can happen is that the game either ends too quickly or drags on too long. Players of every skill level can still enjoy the game, some may die sooner than others, but everyone has a similar experience, unlike other games, where some people can beat the game while others cannot.

Feedback


I only received a few pieces of feedback so far. Even considering the general positivity of the Ludum Dare community, it looks like the game is generally liked. Somebody mentioned that the game is a bit too easy, which might be true. It takes a while until enough hunters spawn to pose a serious threat to a generally-skilled player. Somebody else proposed that the direction indicator of the pig's smell could include a distance indicator too. However, I don't think this should be the case. When somebody in the room farts, we can also only smell the direction it's coming from and not the exact distance. If we did, we would always know exactly we let one go. Trying to triangulate the location of the truffle from the direction markers alone is part of the difficulty of the game.



I'm very happy with my game for this Ludum Dare. I think it's a unique idea and the game starts quite relaxing and casual until the hunters accumulate and add difficulty. I'm glad that I went through the extra effort and created directional movement animations for the pig. It adds immersion and makes her much more fun to play. So go ahead and help Polly find even more truffles:

Play here: Pig Polly

Ludum Dare page: https://ldjam.com/events/ludum-dare/52/pig-polly

Source code: https://pingpoli.de/ld52/ld52_src.zip




by Christian - 11.01.2023 - 17:19


Comments

Social Media:  © pingpoli.de 2020 All rights reservedCookiesImpressum generated in 63 ms