Mind The Gap Post Mortem (finally!)

Mind the gap is my first entry into a Ludum Dare. A few things went wrong over the weekend, but I am extremely happy with the result. Leading into the competition, I was getting nervous; worried I would not even be able to finish on time.

Check it out at: https://ldjam.com/events/ludum-dare/38/mind-the-gap

For the development of Mind the Gap I used Unity 5.6, Visual Studio 2017, and BFXR for audio. This was the first time using BFXR, it made simple sound assets easy. I plan to practice with it a bit more before the next Ludum Dare.

The Plan

The goal was that the first hour I was going to brainstorm ideas I wanted to see. I was planning on doing core gameplay done Friday and Saturday, then Sunday be left for making the game look pretty and sound great.

Unfortunately I had road bumps. I failed to keep up with my timeline, and I believe that comes from my lack of game development skills / knowledge. Every problem / game mechanic that I wanted to implement basically went through a phase of trial and error; this slowed the overall process down.

At the end of Friday night I had movement, a couple platforms, and the ability to grapple one enemy and pull them towards you. It wasn't until late Saturday afternoon I had the core player mechanics down. Come Saturday evening I had to scrap the original path find system and implement a new one. Then I spent Sunday on a few sounds, the UI, and the level layout. The aliens were last minute additions.

So let's talk about everything that went wrong.

The Bad

The biggest issue I had was the pathfinding system. Early on I decided to use Unity's Navmesh. The bake at runtime update sounded useful for my goals. I had intended was for the platforms on your side to slowly leave; forcing you to jump sides and refresh them.

Early on after implementing the use of Navmesh, I started getting SetDestination errors frequently. They popped up when I tried jumping to the other side while an enemy was spawning. They would try to path to you while not being in a navigate-able area. It seemed no matter what I did to prevent them from trying to follow you at in-appropriate times, it would still happen. This finally resulted in me scrapping all the Navmesh code, and move to pushing the rigid bodies around manually. This meant I could not easily remove platforms or the enemies would carelessly walk to their death. This resulted in a loss of about four hours of work.

Some of the small issues I had are as follows.

The current grapple aim I really do not like but it 'works'. The main issue with it is your camera 'bends' as you approach the edges of the board, so that you constantly have full view of the opposite side; the way I handled grapple firing results in it following the general direction of the cursor.

The way I implemented the camera bend, forced me to choose between the bend or a smooth rotation on jumps. Right now it just flips instantly, and I know it is a jolting experience. The camera was going to be the last thing I fixed on Sunday, but I spent more time on getting the FOV to zoom in and out than I would have liked.

Every now and then, the spawn platforms would get stuck midway up, it seemed to be caused by the enemies telling the platform it was good to go back up, which the platform was still trying to go down. Due to the nature of the way I implemented lerping, the platform slows to a grinding halt as it gets closer and closer to its destination; result in taking seconds to properly get where it is going. The 'Sunday Special' quick fix, as it were, was simply checking to see if both its descend and ascend bool were true, then setting one to false.

The enemy becoming stationary bug is still in the game, but I did figure out what causes it after release, if the grapple collider ends up hitting multiple enemies it, only sometimes, results in one getting its rigidbody and collider turned off, even though it was not the grappled target. Since it is not the actual target, it is never told to turn its rigidbody or collider back on, so it sits there. It will however re-enabled itself if you hop back over; just how thats handled in the code.

Initally I had planned on having giant alien figures moving around in the background, the camera would pan out when one would walk up and peer down into the arena; this quickly became something that was a stretch goal, and eventually completely removed; resulting in what we have now.

The Good

The game was very playable after 48 hours! This is the core thing that matters the most to me; if I had done everything I wanted to do, but not finished by the end of the 48 hours, I would not have been ok with that. I really believe the core benefit to a jam like Ludum Dare is actually finishing a project. I can make an unfinished project at any time; but the whole point was to finish something. Now to that end, with the core idea of finishing by Sunday evening I was able to overcome issues I normally have. Typically, and this even happened on this project, I'll look at my code and think to myself "Oh, this could be done better or more optimally" and I re-write, re-factor, and go no where. Several times I caught myself looking at the code in Mind The Gap, and starting to redo and rearrange stuff; I had to stop myself, and basically say "You do not have time for this, it works, move on." Even now, the grapple script gives me nightmares.

The other big things I like is, 85-90% of the code is basically straight from my head; there were only a couple times I had to look at other source code for tutorial projects, or Google ideas to progress cause I got stumped and did not know of some way to possibly fix an issue. If I recall those core issues I had to look up were looking towards the mouse, lots of info on Navmeshes(which for the project did not pan out but I know more than I did so win-win,) and I had some issues with animation that I needed to research. Many of the gameplay mechanics I needed to implement, I had previously done bits and pieces here and there in the standard unity tutorials; as well as just other general knowledge I learned from those, allowed me to really tackle most problems I tossed at myself.

I played around with particle systems more than ever in this application, and I learnt a lot more; I feel much more comfortable using custom particle systems going forward. Also, I had a ton of fun putting the alien heads / hands, it was such a silly idea and this implementation was a last minute thing, but it was really enjoyable to mess around with primitive spheres and reshape them; arranging them into what we have now.

Going Forward

Wow, you made it this far? Congratulations, I had to edit out a bunch of stuff to fit my draft within the character limit. Overall I really feel that this was a great experience, I would recommend it to anyone who enjoys game development. I am more than glad that I was able to partake in it; and now a week after the event, I cannot wait for the next one. I am making plans to be able available for the full weekend come the August one, and I hope to one up myself with a more complete, and equally fun game concept.

To summarize this post-mortem, I really enjoy playing the game I put out, and I hope you do as well. I am thinking about expanding the game and implementing some of the crazy ideas I've come up with; perhaps fleshed out this could be a different, solid experience, maybe even add some multiplayer. First things first though, going to crush some of the issues I have with the game i.e. aiming, so I can send it to more friends and family. A tutorial is probably a good idea.

Thank you all for reading, and have a great day.

~Izunah