How it turned out...


How the plan came together!

My previous post laid out how I wanted to develop the main gameplay with storyboards for the 3 main views of the gameplay loop. I'm proud to say I stuck to the plan and basically built what I had planned. The only problem was that I had way less time than I had hoped so it took up the whole jam.  Because of this, I had to really shoehorn the narrative system in at the last minute and it caused a lot of headaches, but more on that later.

First, there's the "Throw Stage" screen 

where the player sets their throw angle and velocity of the throw. This stage took the longest time to develop because I had a big misconception going into it.  I thought that it would feel natural for the player to hold the "A" or "B" button with their left hand and control the character's arm with the Crank, swinging the crank and letting go of the button at the time they'd like the character to let go of the bag.  The problem was that even I, knowing the intended use case, wanted to stop swinging the crank at the exact moment that I let go of the button.  This resulted in a weird halting of the velocity before the throw, which ended up making the throw result a bit unpredictable in a game feel way.  I felt like I could never predict how fast I was throwing the bag and how far I think it would travel.

I ended up fixing this by having the player press the "A" or "B" button to set the angle of the throw first, and then returning the player's arm to the bottom and ramping up to that original position, where the game would then trigger the throw.  This way the two actions were separated.  It feels a bit more predictable this way, and it also mimics a real-world thing that people often do when playing Cornhole where they lift their arm and visualize where they'd like to throw the bag and then go through with the action.

I hand rotoscoped my partner miming throwing a bag, and this might be the most satisfying aspect of the gameplay in my opinion.  Directly controlling a character's animation with the Playdate crank is a nice feeling. 


The "Flight Stage" was implemented near the end of development 

as I felt it was a bit more of a polishing touch than anything and I wanted to make sure I had time to implement a story first.  This screen's duration and the bag's animated up-and-down motion is determined by math estimating the player's throw arc and the time it would take to land.  This sometimes feels a little bit too long and could use some more tweaking, but the result is nice enough. 

For the art, I hand rotoscoped a video of me flipping a pillow since it was the closest thing I had in my house to mimic the shape and behavior of a cornhole bag.


Finally, we transition to the "Board Stage" 

where the bag lands on the ground/board area depending on math that estimates the throw's distance and angle, which is controlled by the tilt of the Playdate at the time of the throw on the first screen.  I wanted to add slide and collision with other bags in the play area but since I realized that the story would take focus for this jam, these felt like unnecessary additions for the end experience.  In the future, this would be all fleshed out for a sports game.  The distance readout was added before I realized this, and in the final build it even gives you a point readout, 1 for landing on the board, or 3 for landing in the hole.  I kept this in for the final narrative game because it felt like a bit funny to me as it was pretty unnecessary information for the player's experience.  


The narrative...

Was a bit of a pain as I mentioned at the beginning of this.  I originally wanted to have an AI (computer controlled) character as your opponent that would take the roll as a family member that you had a conversation with back and forth while you played a game of Cornhole.  I realized that I had no time for this, so I decided to be less strict on the actual game of Cornhole and tell a narrative by giving the player a text card with narration/dialogue between every throw of the bag.  The bag throws weren't tallied up in any way like a real game of Cornhole.  This almost fed into a dream-logic that influenced the story.  I decided that it should be relatively short, so I decided to tell a bit of a stream of conscious story about family and severe weather that related to each other in poetic ways, all ending with a tornado approaching the player from the distance.  I then fleshed out the world art a bit to give a sense of place and built that narrative system.  

The problem was that I'm fairly new to Lua and since I was rushing to finish this new system in just a day or so I made a lot of sloppy code decisions.  I got mixed up with how communication between Classes in Lua works and variable scopes and I really started pulling my hair out a bit.  I finally landed on something that worked after making a few compromises but I'm absolutely not proud about how this system looks behind the scenes and will be the first one I rework from the ground up if I ever decide to flesh out this concept as a whole game.


Sound

I thought it was important to really nail the sounds of the bags hitting the board and bag, so I created different sets of sounds for each landing state and had the code randomly select one depending on the state.  I made these by stacking and editing open-source audio found on freesound.org 


In the end I'm happy with how it turned out, all things considered, and I even received feedback from one of the heads of the Playdate in their Discord that they hope I finish this as a full game.  That's REALLY energizing to hear, and I just might take them up on it!  I think a full Cornhole sports game with recurring opponents with unique looks and personalities that you also have conversations with during the game would be a fun way to go!

Thanks for reading and I hope you get to play the game!

Get Cornhole EX-W

Leave a comment

Log in with itch.io to leave a comment.