itch.io is community of indie game creators and players

NEVER mess with Git blog post

Introduction

Day -N

Long before the jam started I've done some basic planning that doesn't take longer than 10 minutes and can help you drastically. 3 main things to think about:

  1. Learn from your past mistakes. Repeating the same mistakes feels only worse over time, that's why I highly encorouge you to analyze your every failure or success. 
  2.  The world is revolving - experiment with whatever you can (just make sure nothing goes out of hand). It would be boring to make and play the same game every time, that's why it's important to always try something new: new genre, new style, new working evnironment, new game ideas, new approaches to game design and etc. Let your mind go wild on this one - Think/Analyze --> Try --> Fail/Succeed --> Repeat.
  3. Know your strenghts and weaknesses. No needs to completely avoid your weaknesses, just make sure that things you want to experiment with are approachable within the project/(game jam) constraints.

Day 0

At first glance there is nothing fancy here, day was spent on: Setting up a project file structure, creating an empty Godot project, configuring OBS, installing DavinciResolve, configuring an empty Obsidian vault that I've been using to organize some of the notes during the project (+ I'm using it right now to write this blog post). Later I've discovered that this step was really important because I've stumbled upon weird issues that could have cost me an entire day. For example, OBS wasn't splitting audio into 2 different tracks and Godot was crashing OBS sometimes. That doesn't sound like a big deal for a 10 days jam, but if time constraint was smaller (let's say 2-3 days) I would have been screwed.

Learned lessons/Summary:

  • Prepare basic stuff before hand.
  • Make sure that everything is working correctly to prevent wierd tech issues.
  • Time during the jam is the most precious. The more you can do to use this time more efficiently the better (just don't go wild and follow the jam rules)

Learned tech:

  • Git submodules. Imagine you have a global git repo for the whole project and you want to add a local git repo to a specific part within your file structure (let's say for a Godot project). Git submodules solve this problem easily 
  • OBS config micro optimizations + recording multiple audio tracks within one .mp4 file (one of the tutorials I've used)

Time to get some work done!

Mostly I'm gona ignore the timeline and focus more on the most interesting moments and things I've learned. Without further addo...

Pixel art

It was really fun to learn pixel art basics and have control over visual for your game (the only downside is that I've spent less time implementing and debugging async level switcher than drawing this damn tileset) . There were many useful resources I've found, here some of them:

Gameplay

I didn't learn a lot of new game design techniques (other than level design) because I've already knew how to make a great platformer experience thanks to Celeste, GMTK Platformer Toolkit (+ videos on the GMTK YouTube channel) and some other tutorials out there. Here's the list of main techniques and a brief explanation:

  • Jump buffering.  Allow jump even if player pressed jump button a few frames/pixels away from the ground.
  • Jump curve. Think of jump as a math graph with 3 main parts: ascending, time in air and descending. Highly reccomend this GDC talk and this Godot tutorial
  • Coyotee time. Well, this one is pretty well known. Allow player to jump a few frames after leaving the ground
  • Gravity assist. Sounds a bit silly, but slighlty controling the gravity depending on up/down keys adds up to the controls juice (the way controls feel)
  • Corner correction. When player touches a corner by a few (1-4) pixels and loses all momentum it doesn't feel right. In this case you can either make collider smaller (doesn't work always + can make other things worse) OR manually apply corner correction by checking if there are any collisions after moving player by a few pixels to the right/left. (Tutorial for Godot)

Audio

Just play the game and you'll see what I mean. 

Recording voicelines

From the tech side - I've never implemented a voice lines system with subtitles (that turned out to be easy). From the recording side - English is not my main language, so I was really nervous <-- It was really hard to deal with the feeling: "God damn it. This audio clip sounds so bad. Maybe I should try a text to speech..." However the jam is designed to try new things + I was curious to see other people reactions, so I've manage to overcome myself (it was an interesting experience). 

Sound effects

Surprisngly instead of searching for everything online I've implemented a lot of sound effects myself using Bfxr, Audacity and a little bit of me suffering (R.I.P. Chair and me laying on the floor just to reccord the intro cutscene). 

Jamming

I've joined 3 jams before and every time I particapate in a new one there is something new to learn.

Prototyping is important!

Who would have thought (it took me 3 jams to finally realise that...maybe I'm just stupid...). As soon as the theme is announced physical whiteboard (if any) and online platforms for brainstorming (I've decided to try this one) are your best friends:

Spoiler: A lot of things from here were scrapped :(


Don't go hard on yourself

Besides exercises and staying hydrated keep track of your working hours. Initially I have been working on game non-stop for 6 days, but later it hit me and I've lost an entire day just because of that. Luckily I was able to finish the project using new plan and as much will and motivation as I could. Much smarter thing to do is avoid situations like this in the fiirst place (hopefully lesson learned). Also thanks to the Discord community!!

Part of the dialogue

There is always something that can go wrong

Don't make huge plans and be ready to adjust your existing once. EVERYTHING can go wrong. Some issues are more likely than the others, but idea stays the same - be ready that in the worst moment possible anything can go wrong. Don't panic! Instead, stay focused and determined (try to come up with a new plan and maybe talk with you team members <-- if any)

Links, credits and assets:

Credits

A lot of people deserve to be credited, but I'll try my best at not getting carried away too much:

  • Thanks to Captain Coder and his team (if any? At the time of the wrtiing I don't know) for making this jam possible. I've never seen a concept like this before - keep up the good work! (Looking forward for the 2024 edition)
  • Thanks to insane amount of YouTubers/Musicians I'm subscribed to. Their content/passion/beliefs/presentation/events/etc. always feels me with joy, determination, hope, motivation and many other feelings. Some parts of me are highly influenced by their work (in a good way)
  • Thanks to Elalgo and Massering for showing me the beauty of MAKING games yourself and not WATCHING other people making them. Now I get to enjoy both of these activities :)
  • Thanks to you [whoever reading this] for spending your time on things I've made

Used assets

Many thanks to all of those who make free assets. Here are the assets I've used for the game:

  • A font pack by Pixel Overloard <-- awesome fonts and great pixel art tutorials
  • Multi-layer pack for backgrounds. Pretty self explanatory (<-- thanks to free-game-assets)
  • Industrial art pack from which I've only used an animated character sprite because there was simply no time, lol <-- thanks to 0x72 (ascii `r` char? I'm curious...)
  •  Step sound effect <-- This one was really helpful because I wasn't able to make it myself (at least with acceptable level of quality)
  • Keyboard and gamepad buttons icons by greatdocbrown <-- I initially wanted to draw them myself, but while searching I stumbled upon this asset pack and was sold immediately 

Funny counters I was keeping track of during development:

  • Tea counter = 8 cups
  • Water counter = 17 bottles + 6 cups (stay hydrated)
  • Lemonade counter = 4 cups + 1 bottle (delish!!)
  • OBS crashes counter = 6 (or maybe even more)
  • Deadline counter = 10 minutes left, I think I should submit this blog post now...

Future

You can follow me on itch and subscribe to my YouTube channel (I'll post some good stuff here soon)

Leave a comment