GMTK 2021 - Game Jam Postmortem


Planning

When starting the project, I had several ideas using a joining mechanic, I knew I wanted a game where I had a group of entities that would move together, and you can collect more entities to increase the size of the group. and I also want some type of mechanic where the individual units were used up as a resource, to give the player some meaningful choices.  I brainstormed several concepts like armies, or a flock of birds, but I always kept coming back to fish.

After I figured out the setting would be in the ocean, I thought through the different genres of games and how they can fit within the theme, and be of manageable scope so I would not give myself an impossible task. My jam time was limited because of real world obligations so I needed to plan my time accordingly and try and be as efficient as possible.

 After thinking about a few genres (rouge-lite, puzzle, platformer). I settled with an infinite runner game, this type of game is small in scope and I felt like I would be able to complete it, given the time frame 

Procedural generation

one thing I wanted to avoid what complete randomness in the level generation as that can lead to certain unfair situations, in order to reduce the randomness of the level generation I designed several small fragments of level and while the game is running, I would pick and arrange the random fragments to give the impression of a seamless endless system.  each fragment of level had children object to denotes enemy location and possible fish school spawns


As the game progress, I increase the speed at which the levels move, this made the game very challenging because I did not have enough time to identify certain level chunks that were problematic (i.e... too tall, when composed with other block would create no openings) when coupled with the sporadic movement of the fish, it became very difficult to control, but by the time I realized this the deadline was lurking and I could not find a reasonable solution with enough time to build the menu/add sound/ and export and publish the build) 

Boids (Flocking)

for the main joining mechanic, I used a 3rd party library to handle the Boid behavior. which worked surprising great out of the box, but I had to make some changes to account for the extra velocity of speeding up the level (spoiler it was not enough).   there was a lot of tweaking of the separation / alignment / cohesion properties to make it look like fish.  


there were some issues I could not fix before the deadline, with the movement, like making the fish more reactive when its target changes, this was a product of the max force being set to high, so the fish would speed up way too much + the velocity of the moving level (which I did not account for properly), made them over shoot the target by a high margin.  a lot of the trouble shooting came after the jam deadline when inspecting the libraries code. I could have limited that max force of max force fish, and increased the alignment priority to create tighter controls and more responsive fish.

 

Time Crunch & Testing

Close to the deadline I uncovered several issues stemming from how the procedural generation system worked. a lot of the fish were not being recycle when they went off screen which was causing some performance problems the further you survived. 

There was also a bug with the sharks, on their creation they were inadvertently attached as a child of the main scene fragment object, so when the scene fragment was disposed (a few secs after going off screen) the attached shark would also be disposed, so if you managed to avoid the shark he would just disappear after a few seconds while still chasing you. 

Final Thoughts

I think for the time frame and limited scope the game came out really good, there is still a lot more polish and tweaking that need to be done, going forward I will look to revamp the Boids behavior, and have some more granular control over the fish movement, when flocking they act very sporadic, so tightening up the controls will make the game a bit easier and fairer. 

one thing I want to explore when the jam finish is mobile controls? I feel like this game would work well for mobile, but need to figure out how to incorporate the shooting mechanic with touch. 

Adding more level fragments / enemies / and maybe a boss? 

 With all the great games that were submitted into the jam, I am just grateful I was able to submit my game on time.  Maybe next year I'll try and find a teammate to reduce all the stress of working alone. (If anyone wants to team up for jam, send me a message)!

Leave a comment

Log in with itch.io to leave a comment.