pingpoli.de



Ludum Dare 46 Post Mortem

A short post mortem of my Ludum Dare 46 game

21.04.2020 - 18:13
Theme

The theme for Ludum Dare 46 was "Keep it alive". I participated in the theme voting this time and I think I downvoted this one, but I don't care about which theme is chosen that much anyway. In my opinion most types of games can be done for most themes, one of the reasons why Ludum Dare is great and there are always a lot of different genres in the results. When I did some thinking about what type of game I wanted to make before the start, I either wanted to make a platformer or some kind of card game. I have been watching Nothernlion play a few extremely difficult Super Mario Maker levels lately and really enjoyed watching. I don't really know why, the videos are long and he keeps dying to the same obsticles, but there is something really inspiring about someone persevering and beating a level eventually, especially in these difficult times. And even though I didn't want to create levels of such an extreme degree of difficulty for Ludum Dare, I chose to create a platformer. There are generally a lot of people creating platformers, but I had never made one for Ludum Dare and I always wanted to make one.

Technology

I went with HTML5/JavaScript for this Ludum Dare again. I've done a C++/OpenGL game last time and I like to mix it up. Also HTML5 runs everywhere and people do not need to download anything and that's always nice when judging games. I knew that I wanted to go HTML5 before the start and made a small template project for HTML5 games last week. I tend to copy paste a previous game and delete most of it as the starting point anyway, so I figured why not create a proper template and save a few minutes at the start of the event. It's basically a canvas, a main loop, event listeners for the mouse and keyboard, a sound effect/background music and sample code to render an image and text.

Working on the Game

Working on the game went pretty well, I was able to progress at a decent pace for most of the weekend. However, right at the beginning of the event, I seriously questioned my understanding of JavaScript. I had done the standard delta time code of: var now = Date.now(); var dt = (now - lasttime)/1000.0; lasttime = now;, but when I was using dt nothing worked and when I logged dt it was NaN. I took me a good 20 minutes or so until I found the problem. I had forgotten to do lasttime = Date.now(); in the init function and therefore the first dt was Date.now(), which is in milliseconds and therefor a huge number, minus 0, divided by 1000.0 and apparently that's outside of the bounds of a JavaScript float. Another thing that gave me a little bit of trouble was the character collision detection with the ground. I think I overcomplicated it and had to check a few more edge cases than I probably needed to. There's probably a better way to implement it. The rest of the code was straight forward, most elements in the game are very similar to eachother, so once I had implemented one, the others followed with minor adaptations.
When it came to creating the images in photoshop, most of them went well and I had something that I was happy within a few minutes. The only image that I am not happy with is the character animation, it looks very derpy and I would have liked to redo it, but I didn't have enough time at the end.


Creating the music for Ludum Dare games is always easy with Wolfram Music (link), just randomize a few times until you find a track that you are happy with. Sound effects are a little bit more difficult depending on the effect. For this game I only used jfxr (link), but it took me a decent amount of randomizing until I had all effects and I also altered a few in Audacity.
The most difficult thing about the whole game was creating the levels. I had so many ideas in my head of creating all these awesome levels, but in reality they are average at best. There are actually quite a few mechanics in the game that could be utilized for good levels: spikes, crumbling platforms, doors that can be controlled either via levers or pressure plates, boxes that can be carried, even thrown, the fact that both the player and the squirrel have to reach the goal, jumps that can only be made when not carrying anything and the meta level strategy of chosing whether to try and get a medkit to heal the squirrel or not. Unfortunately even without the time pressure of Ludum Dare I don't think that I am a good level designer, and given that I had only limited time to create the levels and my energy was running low towards the end of the event, the levels didn't turn out that great.

Result

Overall I am mostly happy with the result. I like all the different mechanics, the graphics are alright and the music and sound effects are decent. As mentioned above the main thing that I'm not happy with are the levels, there should be more levels and the existing ones could also be improved. But I think it's fun to play through and the positive side of not having a lot of levels is that you can realisticly finish the game within a normal judging timeframe ;)

Post Compo Updates

My sister and a friend played the level and I didn't communicate clearly enough that the squirrel should be healed with the medkits, so I added it in red text on the starting screen. There was also a bug, I forgot to reset the squirrel HP to the normal starting HP when the game is restarted, so I had to add 1 line of code to fix that.

Timelapse

With my recently created little screenshot timelapse tool I filmed the complete creation of my Ludum Dare game:



Play the game:
https://pingpoli.de/ld46/

Ludum Dare Game Page:
https://ldjam.com/events/ludum-dare/46/squirrel-saver




by Christian - 21.04.2020 - 18:13


Comments


Comments are disabled
Social Media:  © pingpoli.de 2020 All rights reservedCookiesImpressum generated in 16 ms