Skip to content

GMTK 2022 - Roll of the Dice

Posted in Programming, Game Development, Game Jam, 3D, Streaming, Godot

A classic Mexican stand-off. Yee-haw!
A classic Mexican stand-off. Yee-haw!

This is how I made a game in 48 hours for GMTK 2022

This past weekend saw the return of the GMTK Game Jam, the sixth one in the series. This time the theme was Roll of the Dice, which is quite open-ended if you ask me (almost every board game has a dice rolling mechanic in it somewhere. It is the easiest way to generate random numbers in a real world setting, after all.)

Rolling D20

My intial idea was a simple battle arena where each player throws their dice into a ring and the dice battle one another, dealing an amount of damage determined by the value of the roll. I liked this idea but I struggled to find a way to make it more interesting/engaging in my head. The core mechanic was a bit boring in my opinion. I went to bed with this idea still plaguing my thoughts, and I wasn't able to find any sleep for several hours. I think it was around 2am when I suddenly had a brain wave and came up with a new idea instead, which is eventually what I ended up making.

A group of cowboys stand in a circle in classic "Mexican stand-off" fashion. Their guns are tied to dice that are rolled in the center of the circle. The higher they roll, the faster they shoot. Guns can be upgraded to stronger dice with higher values to increase your chances of rolling higher. The aim is to be the last man standing.

Mexican Stand-off

I loved this idea, mostly because I could tie the Western theme to it and my first idea was lacking any kind of theming, but also because I had solved a lot of the things before that I would need for this game, so I could give myself a tiny head start. I had solved dice rolling before last year in a project for work and I had a character model from an unreleased game that I could use too. I even had a premade revolver model! Finally, I could sleep.

Day 1

I got a few hours of shut-eye (but not nearly as much as I would have liked) and then sat down at my computer to begin development. I also opened OBS to start streaming on Twitch for the first time in about 18 months. I thought this jam would be the perfect opportunity to brush the dust off my old Twitch channel and it didn't take me too long to refamiliarise myself with all the streaming controls I had set up for myself so long ago. It was just me for quite a while but every now and then someone would pop their head in to watch and ask questions, and it was kinda nice to have someone to chat to, especially in the first few hours which were mostly tedious tasks like modeling the dice that I would need in the game.

So, I already had the dice shapes from that previous project I mentioned, except they didn't have any faces on them, and though the game could have worked without them I guess, to me it just didn't feel right to not have numbers on my dice. So I must have spent 2 - 3 hours alone manually adding numbers to every face on every die (60 in total!). The end result looked pretty good, and I was happy that I spent the time doing it.

Modeling dice in Blender I think I spent 2 hours working on these dice alone

While I was doing that, someone asked in my stream chat if I'd like him to make some music for the game. This was totally unexpected! I said "sure", because let's face it, I was already 1/4 way into this jam and didn't even have dicing rolling yet. I was definitely not going to have time to make music. He returned an hour or two later with a track that fit my game perfectly, I was pretty impressed.

Once the dice were done and in the game, I got to work with fleshing out the mechanics for the game, adding cowboys (which were just placeholder cylinders for now), aiming and death. After a few hours of this I suddenly noticed that the sun had set outside and it was time for dinner. Where had the day gone?? As I ate my salad downstairs I slowly came to the realization, between forkfuls of lettuce, that I was not going to be able to fit in all the nice and wonderful things that I had planned. It was time to reduce scope.

That shop system that I planned where the user could sell their gun and buy different, stronger guns? Gone. I wasn't going to model 6 different weapons. Instead, I replaced it with a simple upgrade screen between rounds that would present the user with just 3 options. This would be waaay faster to implement.
Also, I found while playing that the game was not just not lasting long enough to get into any kind of strategic game play. Usually, every player would be dead by the second round. It was at this time that I decided it would be beneficial for the players to have several lives, so that's the first thing I did when I got back to my desk. And I was right! The games lasted longer and the overally experience was improved.

By now, it was well into the evening and, not having had much sleep the night before, I could feel myself starting to fade. I set myself a goal to have all the core mechanics in the game before I went to bed, and I am happy to report that at 11pm that evening I had the game in a playable state. I had finished dice rolling, aiming, upgrading weapons and even had AI players in there that randomly selected upgrades for themselves too!

Progress at the end of day 1 Some placeholder cowboys and lines to show who they're aiming at

I went to bed to get some rest, trying not to think too much about everything I still had to do tomorrow. The silver lining was that most of the hard work was out of the way now, and tomorrow I could focus on making the game look, sound and feel nice! I fell asleep with a positive outlook.

Day 2

Set my alarm for 7am so I could get a head start on everything I needed to do during these last 12 hours. Before I started streaming on the second day, I spent a couple hours working by myself on finding that character model from an old project and importing it into this game. I hit some snags where my new version of Blender didn't want to play nicely with my older .blend file, but I eventually did get the models in the game, and certainly in a shorter amount of time than if I had to make them all from scratch!

Child drinking coffee Me on the second morning

At 10am I walked down the road to grab myself a large, much-required cup of coffee ☕, then turned my camera on to being streaming on the second day. This day I had a bit more activity on my stream, I think. On average I had between 2 - 5 viewers throughout as people would come and go, but there were one or two folks that were along for the entire ride, watching progress and offering feedback and suggestions as I worked. It was really cool!

I spent a lot of time polishing today. I didn't really have a plan, just kinda adding things I thought would improve the player's experience as I went along. This worked out just fine for me. After adding sound effects around (high) noon, I tried my hand at modeling some scenery for the game. I made a cactus that wasn't too bad (in my opinion) but things went quickly downhill after that when I tried to model a simple rock. Unfortunately, although my skills with Blender have certainly expanded in the last 10 months, they are not at the point yet where I can just will things into existence. After a few failed attempts at making this (incredibly simple in my head) rock, I folded and ended up downloading an asset pack from Kenney, our game dev asset Lord and saviour.

I also tried making a cowboy hat for my characters (it was a Western, after all) and also had an incredibly difficult time achieving this. Eventually, I did settle on something resembling a cowboy hat, but it was not a fun or easy process at all. I will have to spend some time honing my modeling skills if I plan to make more 3D games in the future (and I do!). I wanted to add ponchos, bandanas and mustaches to my characters too, but after that cowboy hat fiasco I decided better of it. Besides, I had only a few hours left of the jam and I didn't have any menu screens yet!

Showdown My progress on the second day

So that's exactly what I set my focus to next. I added a very simple win/lose screen, a title screen and a very wordy instructions screen in an attempt to help the player understand exactly just what they were looking at when playing the game. This is one of the few parts of the game that I am not happy with. The menu screens were hastily thrown together at the end, they are completely static and lifeless and barely tie into the theme at all. There is only so much 1 person can achieve in 48 hours though, and I need to keep that in mind before being too hard on myself.

At this point in time, the deadline was merely minutes away and I was slapping on as many last, last touches as I could manage. This was also the most activity my stream had seen in all of the ~25 hours that I streamed. I even had some of my RL friends pop their head in and subscribe to my channel (my first ever!). The very last thing I did before calling the game done was adding some faux shadows under the dice. Such a simple effect, but it vastly affected the look and feel of the dice, so I am very happy I managed to stick that in at the end.

I packaged the game into neat little web build and uploaded that to itch.io so I could submit it to the jam. Their servers were taking quite a bit of strain though, so it took me a few attempts to upload images for my project. It was done! I could breathe!

Before I ended the stream, I spent about 30 mins trying the entries of people who had been following along with me in the chat. In fact, it was so fun to play other people's games that I decided to do a follow-up stream the next day to play more GMTK jam entries and give live feedback!

Godot

I used the Godot engine to develop this game. Oddly enough, it was this exact same game jam 2 years ago (GMTK 2020) where I decided to try the engine for the first time. It was tough figuring it out then, and my progress during that jam was incredibly slow. Having a couple years experience with it now under my belt, as I was able to work much faster and achieve way more than I could have otherwise. I am really enjoying working with it and I think it is perfect for game jams. I don't see the need use anything else ever again!

The jury is still out on whether or not it is dependable for larger projects, though. I think the upcoming release of Godot 4 will make it a more viable option for larger projects in the future. Also, a lot of devs are not thrilled with Unity right now and looking into alternatives, meaning Godot is seeing a lot more adoption lately. That can only mean good things for the engine. Excited to see where it goes!

Conclusion

I had a good bit of fun this jam, and I think that might be largely in part thanks to my decision to stream my progress. I may not have worked as quickly as I could have had I not taken the time to read chat and respond to comments, but I think engaging with people makes the development journey far less lonely and I am happy to do it. Sometimes chat would give me a great idea, help me solve a bug or even make something for my project, as seen this time by the generous stranger who made me a soundtrack for my game!

I will definitely continue to stream my game jam attempts, but as to whether or not I want to incorporate streaming into my normal dev work remains to be decided.

You can play my entry "Fistful of Dice" here on itch.io

Results

The results have been announced! The game placed #302 overall. Didn't quite make it into the top 100, but I'm still very pleased. Looking forward to participating in the next one!

Showdown I didn't make the top 100, but a 4.0 average is still really good!