PickyBurritos Post Jam DevLog


Godot GIF

Hello and welcome to my very first ever DevLog.  My team's entry for LD50 (https://ldjam.com/events/ludum-dare/50/somnipathy) marks the completion of my 4th game jam.  I have been lucky enough to do them with the Tearcell Studio team and each time I have not only had a blast but learned about game design and programming in the process.  The Mix and Jam 2020 was how I got into programming/game dev when @cyzaine (founder of The Tearcell Studio’s) asked if I wanted to help him.  I remember that weekend quite fondly as I sat down at my computer with nothing more than a vague notion of what we were doing, a group of friends, Zero programming knowledge, freshly downloaded versions of Godot and Aesprite, and about 100 open YT tutorials in my browser. 

Fast forward to this jam and now I am moderately proficient with Godot.  I told myself that I was going to figure out how to get whatever task I was given done without pestering @cyzaine with questions.  Thankfully our jam team has grown each time and he, Cyzaine, often is coding his own work and helping/troubleshooting others work at the same time.  When I was told: “We need 3-5 enemies that will not be too hard to beat but enough to help slow you down” I told myself that I could do this and away I went.

Now, in hindsight, I really should have taken 30 minutes or so to do some brainstorming of my own but I wanted to get working so I just leapt right in.  Starting with the Sleep Gremlin, the weird pasty one that is ‘shivering’, I focused on getting a functioning enemy so that we could plug it into the test levels.  Once I had them up and functioning I realized it would be best to use them as the template for the rest (I really should have made a base template: future me will be more prepared!).  As I reworked some of the code to set it up for being the template I realized I needed some design goals that each enemy should have to follow:

  1. An animation for the mob as they are standing or wandering.
  2. A unique attack pattern on how they display their attack symbols
  3. Unique idle/dying ‘dialog’.

@Zakahrum was the inspiration behind coming up with goals as he was clever enough to do his before starting the level design.  

Even with taking the time to rework the Gremlin’s script it was still somewhat sloppy work.  In the end I had to overwrite a few functions for the other mobs which I chalked up to lack of forethought (a simple state machine would have been handy and is planned for one of the patches).  But by the end of the day on Saturday I did have 3 functioning enemies, with the 4th enemy as well as the wandering animations left on the cutting room floor.  Sunday morning/afternoon was spent tweaking the animations and such not as the Art assets were finished.  All in all I managed to get them roughly 90% finished on Saturday.

Looking back I am pleased with what was accomplished.  I did still ask my fair share of questions, but they were more along the lines of “Hey what is the name of the thing that does x and y again?  I cannot remember enough to Google it.”  And once I had the name I went back to my tried and true technique of ‘open 100 YT tutorials in my browser.  The enemies do still need some work as they don’t release Aggy quite quick enough and I do plan on removing the text during attacks as it doesn’t add anything.  The idle text and outros I do enjoy, especially the lamp chirping “Lights out for me!” as it clicks off for the final time.

However the thing I am most proud of is that I forced myself to finally get somewhat comfortable using Tweens.  For those not familiar with Godot, Tweens are a data manipulation node used primarily for animations where you cannot or do not want to account for every frame.  You plug in where you want it to start, where you want it to end, what kind of transition, and the computer interpolates everything in-beTWEEN. They are incredibly powerful and can be super tricky to use correctly.  

As the attacks are all programmatically instanced copies of the same scene with randomized symbols using an animation player would have been incredibly unwieldy as I would have needed to key in a different animation for every possible movement pattern and then randomized the selection based on the enemy type.  Doable? Yes. Unwieldy and prone to error? Yes.  A tween could do precisely what I needed in just a few lines of code, if I could figure out how to code it that is. 

While reading the documentation I had quite a strong flash of “I can’t do this.” but thankfully I made the decision to just try.  Lo and Behold it worked!...sort of anyhow.  But it worked enough for me to begin to grasp what methods I was supposed to be passing into the Tween function so I tweaked it a little bit and tried again. After a bunch of tweaking, testing, and a quick fix by Cyzaine (turns out you really shouldn’t be assigning a node reference in your process function) I had the ‘self’ animating attacks you see when fighting the Stove and Lamps.  

I hope you all enjoy fighting them as much as I enjoyed the challenge of coding them and I hope to catch you all in the next Jam!

Keep your eyes out for future updates as we plan on continuing work on Somnipathy over the summer!

*pro-tip for those that read through the whole thing: if you click on the stove as it starts the attack you can knock-out every symbol before they have a chance to spit out! This is 100% going to be patched so take advantage while you can!


Get Somnipathy

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.