Some thoughts about difficulty progression in Labrats
Please note: this post contains some light “spoilers” for my game. If you have some free time, you can try playing my game without spoiling it at https://ldjam.com/events/ludum-dare/43/labrats
Last Ludum Dare, I decided to include several difficulty modes in my game. I wrote a detailed post about the experience. In short, the decision to include an easy mode came about after I had my wife play-test my game and realized it might be too difficult for many players. The decision to include a hard mode was there because I wanted the players to feel rewarded for finishing the game and the put on a challenge that would attract players to try several times until they manage to beat the normal difficulty.
This time, I did not have anyone to play-test the game. Also, since I really like narrative-driven games, I wanted my game to be longer this time, to have some time to develop a story, so I wanted instead of having different difficulty modes, to have the difficulty progress through-out the game.
Since the game I designed this time was a puzzle game with very simple mechanics, I was actually afraid it would be too easy. I really tried to create levels that would pose a bit of a challenge, but after finishing the game I still suspected people would breeze through the entire thing in a few minutes. So, after publishing it, I dreadfully waited to see some streamers play through it, and made a record of exactly how much time it took them to solve each level.
How much time does it take to "solve" each level in my game.
Here are the stats I collected from 22 streamers:

To summarize the data:
- Level 1: Takes around a minute. It is completely trivial to solve, but it takes a while to navigate the maze.
- Level 2: Takes around a minute. It is small and completely trivial, but there is some dialog and story which takes most of the time.
- Level 3: This one had a pretty high variance, with some streamers taking around a minute, and some taking more than 5 minutes. The average was around 2.8 minutes. Most players thought the progression to this level was good, but some complained that it was too complicated as a follow up to the previous trivial levels.
- Level 4: This was the most surprising one for me. I wrote this level as a pure "story level" - it was supposed to show the story of how the rats manage to escape the maze, and to be a gentle introduction to the "sacrifice" mechanic. Apparently, I've made this level much more confusing then I thought. The variance is really high - one streamer finished this level in less than a minute, and two took more than 7 minutes. The average was 4.1 minutes for this level. I'm pretty sure this level would benefit from a few more hints given in the dialog, at least to clarify what the objective is. Especially in the context of a jam, I'm afraid I probably lost many players at this level because they assumed there's no solution and the level is buggy.
- Level 5: This was supposed to be the first actual challenge after the sacrifice mechanic was introduced, but I wanted it to be a pretty light challenge, and in this I was pretty successful. Playtime was around 2 minutes on average, with very few outliers.
- Level 6: Was supposed to be a bit trickier than the previous one. I think it is a bit trickier, but it is actually solved on average faster than level 5 - around 1.6 minutes. Watching streamers, I think it's mainly because levels 4 and 5 did a good job in teaching the players how the mechanics work, so I'm pretty happy with level 6 being easier.
- Level 7: This was the most difficult level I designed for my game. As I said, I was afraid my game would be too easy, and really tried hard to make a level that would not be trivial, but that could be solved by reasoning and logical thinking, and not by random tinkering. I think in that aspect I was successful - the level is apparently pretty difficult (it took on average 9 minutes for streamers, with the longest being 20 minutes, and the shortest being 4.7 minutes). Watching streamers solve the levels, all of them eventually did it by reasoning through the level and the mechanic. However, most felt the spike in difficulty between level 6 and 7 was too high. I should probably have included another level or two in-between to get the players more used to the mechanic before introducing this challenge.
- Level 8: I wanted to finish the game on a dramatic note, so wanted more of a fast paced level. The level is also a "trick" where most of the items in the level are actually not needed, and you eventually finish the level mostly with the power of sacrifice. I wanted this to reinforce the story - you need to sacrifice everyone in order to escape. I think given those goals I was successful - the level is much easier and takes around 1.7 minutes to solve. The response to this was mixed - some players liked the dramatic end and enjoyed the trick of the last level, while some were disappointed by how simple the solution was and wanted more of a challenge like level 7.
Conclusions
Obviously, the game would benefit from more levels. However, I was really stressed for time this jam, so I have no idea how I could find the time to build more levels. I guess the only way is to either team up instead of working individually, or just be more efficient in the rest of my work.
Given the time limitations, I'm actually pretty proud of what I accomplished. I managed to make a game that's pretty challenging. Difficulty progression is not perfect but it's not too bad. I also managed to integrate a little bit of a story into the game.
I started with a working prototype, using placeholder graphics and coding a very quick version of the game, so I already had the first level working on Friday night, and I had all 8 levels working by Saturday night. This worked great and allowed me to spend the last 1.5 days focusing on polishing the game. Here is how the prototype I had on Friday night looked:

and here's the same level in the final build of the game:

I should have implemented progress saving. It should have been trivial to implement, and would have prevented many players from dropping off my game. I even had two streamers who accidentally quit the game in the middle and had to give up because there was no progress saving.
Lesson learned from level 4 - I should be extra careful to make sure that the objective is always clear to the player. It's not fun to try to solve a puzzle if you don't know what your objective is. The level was apparently pretty challenging even when knowing that the objective is to escape the outer walls (I know this because many streamers still took some time to solve the level even after I've told them the objective), but at least then the players know what they're working towards.
I did not implement a level selection. I'm not sure if I should have - I sometimes feel a level selection screen really reduces the feeling that the player should work towards the challenge of completing the levels. I know for games that have a level selection I tend to be a bit too eager to skip levels, eventually missing out on the accomplishment of working through the challenge.
Would be interested to hear your thoughts about difficulty, in general in Ludum Dare games, or in my game specifically. If you want to try out my game, please do so (and I’d appreciate any comments or feedback) at: https://ldjam.com/events/ludum-dare/43/labrats
One last shout-out
Thank you to all the streamers who allowed me to watch them play my game! This has been invaluable for my learning experience. Here are the links to the twitch channels of all these streamers:
https://www.twitch.tv/muzzz29 https://www.twitch.tv/mikeinprinciple https://www.twitch.tv/erebuswolf https://www.twitch.tv/crefossus https://www.twitch.tv/morgstream https://www.twitch.tv/kindreddev https://www.twitch.tv/messinabrothers https://www.twitch.tv/anniehascoffee https://www.twitch.tv/ursagames https://www.twitch.tv/stovoy https://www.twitch.tv/mrjoshuamclean https://www.twitch.tv/yourbr0ther https://www.twitch.tv/syrapt0r https://www.twitch.tv/aggressivecombustion https://www.twitch.tv/bentglasstube https://www.twitch.tv/mknooihuisen https://www.twitch.tv/beanborg https://www.twitch.tv/saoigames https://www.twitch.tv/firesplashtv https://www.twitch.tv/casualgamesnu https://www.twitch.tv/miziziziz https://www.twitch.tv/tigerj