Cliff Coffee

Ludum Dare 56

First Ludum Dare for me!

Hi, will be contributing to the jam and am super excited!

I've been working with Unity for many years and have done a few small jams before, but never LD.

My last jam was a few years ago, minimalist side scroller space shooter called Tiny Cosmos: TinyCosmos_GP1.png

Looking forward to seeing all the entries and checking out some fun games!

Gettin Squirrely - A solo dev LD Game Jam Post Mortem

Participating in Ludum Dare 56 was a blast! Thanks to everyone who participated and those who took the time to review and leave feedback! I just wanted to share my experiences, what I learned and what went well and not along the way.

Results - What I Made

Gettin' Squirrely

A game about being a squirrel, climbing on trees, jumping around collecting nuts and delivering them to your nut stash.

Moving and Collecting nuts

GettinSquirrely1.gif

Climbing trees!

GettinSquirrely2.gif

Delivering nuts and a fun speedy jump move

GettinSquirrely4.gif

oh, and your cheeks fill up with nuts!

Cheeks.png

the game page: https://ldjam.com/events/ludum-dare/56/get-squirrelly/

The process

At the onset of the theme announcement I wasn't sure what I was going to do. Many of the ideas that came up during brainstorming felt very complex and difficult to implement. Eventually I realized I was overthinking it and I decided it was best to follow my initial gut intinct. Outside my office window on my neighbor's house a squirrel is usually hanging out on the roof, its cheeks stuffed with nuts. I thought it would be good fun to make a game with climbing and snappy jump mechanics, and a simple game loop of gathering nuts and stashing them to score. Climbing on trees was a key differentiating feature that I thought could be really fun if I could pull it off.

I specifically was interested in creating a Unity 3D game because I wanted to exercise new skills in rapid modeling, shaders, and animation techniques. I had never worked with animating quadrupeds previously, only humanoids, so LD was a great excuse to dive into it. This also meant that I had to have a very regimented project and time management strategy to limit the time investment into each mechanic, concept prototype, and asset.

I created Gettin' Squirrely solo, which has been how all game jams have been for me in the past. I know that I could improve in my networking skills as I've never been asked to join or had any luck with attracting others to join my project. I'll admit part of this could be my own apprehension of leading other people that have studio experience making me anxious about it. I seriously considered just being a "fly on the wall" for a team in the jam just to immerse myself in the experience of creating a game with others as I have only ever worked on games solo, never with other professional creators.

I didn't get sound completed in the game, even though I have a deep background in audio production. I have worked in recording studios in the past and have professional recording equipment at my home to use. It just didn't happen due to lack of sleep, and in that moment I decided to cut audio from the initial Jam release and add it in later.

Posting the game to the Ludum Dare site as an embedded web player highlighted a an oversight in my plan. When attempting to build the web version the shader variants for the trees were so generic that they had thousands of variants to compile which after 20+ minutes I realized would not complete by the deadline. I had to scramble to resolve that issue and modify shader code to reduce the variants. Building earlier in the prototyping phase would have exposed this issue much sooner.

Later I recorded "Foley" sounds for every sound effect using condenser microphones, including barks from my dog, nuts cracking and dropping, foliage moving, and sounds of squirrels screeching in my yard. I created and recorded a song that is now forever stuck in my head for better or worse. I added sound to the game in an update posted to Itch.io, not included in the LD jam version. Other bug fixes and improvements based on feedback were made and more improvements and enhancements are in the works.

What Worked

  • Building the game for Linux and getting it running on a Steam Deck made me about fall out of my seat in excitement. Nothing compared to that feeling - I was totally floored!
  • Taking care of myself - Having lots of good snacks and beverages available, taking breaks, walking the dog and sharing progress with friends. I still remember looking forward to the scheduled "Tasty Burger" lunch I planned on Saturday.
  • Trusting my development instincts and skills to create and learn what was needed to quickly complete a feature on the fly.
  • Rapid prototyping - specifically creating each prototype with a question to answer, cutting features by honest evaluation. Focusing on the core movement first, and informing design with each prototype
  • User Interface design felt easy and automatic, with very little time investment.
  • Gamepad support just worked, I never tested it until submission time. Using Unity's Input System and configuring the inputs generically it worked out of the box.
  • Simple and effective Visual Effects and Post-processing "juice". By adding camera shake, motion blur, trail effects during jumps, and impact effects when jumping and landing added a lot to the game feel.
  • Almost every bit of feedback I received was highly positive about the "fun" of the game, and many constructive comments which helped drive bug fixes and other improvements.
  • Vector and Rotational projections to calculate climbing and jumping were used liberally. I recently became much more comfortable with these concepts through learning shaders and this was a huge boost to creating the mechanics.
  • Custom collision and physics. I did not use Rigidbodies for movement or collision. The jump routines and movement all utilized custom collision and overlap checks. I had never done fully custom collision and physics this way before. This provided greater control of all the movement, and made jumping onto trees and immediately attaching to the surface possible. The only Rigid bodies used in the entire game were for the nuts that sometimes fall from the trees.
  • Focusing on simplicity and the core gameplay loop. Keeping things as simple as possible and "following the fun" without reservations or FOMO for more complexity (complexity does not mean depth).
  • Creating an itch.io page, rigging up all the analytics, screen shots, creating devlog updates. Still room for improvement but it was good practice.

What Needed Improvement

  • Need more connection and community involvement with other game developers. I am not an introvert but my entire game development experience has been in a vacuum - solo.
  • Build early and often - compiling the build early would have exposed many issues that could have been avoided.
  • Camera controls - despite being "Squirrely" the camera movement was jerky and sometimes called out as "tank controls". This was even more disorienting on trees, but this type of camera movement was a compromise as it helped with allowing the player to see their squirrel more easily when on the tree. The mistake was using the newest bleeding edge Unity which has the new Cinemachine package which changed the layout of all of the components, so time was spent familiarizing myself with the new system that could have been spent just creating with the system I already knew well.
  • Dog AI - the dog was intended to be the primary balance to make being on the ground dangerous. The dog's AI was not aggressive enough to locate the player, and was never a real threat. The dog had some animation issues related to basing the animation transitions on the Nav Mesh Agent's desired velocity instead of it's current velocity. This was patched later but was not in the LD jam version.
  • Collision - Many different raycasts are needed to make detecting the character orientation to achieve predictable climbing on the tree and avoid randomly dropping off of the tree during movement. One particularly difficult part of this was that the tree collision mesh included the leaves, and this caused some fighting between the raycasts. Learned that by separating the leaves to a non-collidable tree instance alleviated this issue, and some transition animations were needed to make sure that attachment to the tree would be reliable. This was improved in later version.
  • Indecision / Analysis paralysis - Not enough trust in my own ideas during ideation. Initially during brainstorming I solicited ideas from community and friends then became a bit loaded down feeling like my own ideas were not "good enough". This made me feel a bit deflated, so the first night of the jam I did not make much progress. Once I made an executive decision picking a theme, progress came quickly.

Plans for the future

I would like to bring the game to Steam, and hope to do so soon and will be looking to engage with others with more experience in doing that. I have many ideas including new game modes, characters, and stages to introduce. Primarily I want to get more familiar with the entire launch process and build my portfolio. I would really like to engage more with and explore community and feedback driven development, but it has become more clear that I need to network and build community first to be in a position to do that.