Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

NEVER mess with Git blog post

Introduction

Hi, this blog post is part of the submission to the Learn You a Game Jam hosted by CaptainCoder for the first (and hopefully not for the last [wink-wink]) time (source code, assets and Obsidian notes are available, you can download them here). In case you didn't know it - 2 main concepts behind the jam are learning and pixel art. No matter what games you're making it's highly encouraged to try something new and use pixel art. Development team consists of me and 2 cats :)

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

I'm a Godot dev and not a 2D artist, so that's why I was always 100% dependent on free assets I was able to find online. During the jam I've decided to learn pixel art and make sure that more than 50% of the artwork in the final game is made by me (spoiler: I did it!). For example, this is how I was improving game's tileset during the jam:
  -->  -->  --> 

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:

  • Great shading tutorials by AdamCYounis and Pixel Pete
    Detailed and easy to follow explanation about how shading works in pixel art + tips you can use to improve your artwork. Highly reccomend
  • A quick tutorial by Pixel Overloard about color palettes. In 5 minutes you'll understand how certain colors are interpreted by people, how to pick colors to match specific feel/mood and what can be a good starting point. 

  • However even after learning more about colors, lospec.com was really helpful (even if you know how the colors work you still need to pick them). I've used this color pallete for a player and this pallete as a starting point for a drawing a tileset.

  • When I was drawing a round terminal icon tutorial by Brandon  James Greer really helped me out by explaining how to draw curved lines (+ I've never heard about pixel-perfect feature in Aseprite, which is great) 

  • Glow and lighting effects are really awesome, but performance of WorldEnvironment node in Godot 4.0.x isn't. Luckily it turns out that you can achieve good visuals using "fake lighting". You basically just overlay textures on top of game and done! It looks awesome with pixel graphics to me, so I think I'll use this effect in my next games as well. Good starting point here and more detailed series here. If you want even better results, you can try a little bit more complex technique by perfoon (I haven't used it in the final game, but added a link in case someone interested)

  • It's good that now I'm familiar with pixel art basics, but there are "tricks" that can be used no matter your skill level. For example, when I need a procedural effect, animation or a crazy particles simulation I usually use SpriteMancer. For an artist this is a great tool to their collection, for a programmer - easy way to use existing artwork more efficiently.

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)

Support this post

Did you like this post? Tell us

In this post

Hosted by Captain Coder
Ended 2023-07-04T06:59:59Z ago
244 joined
42 submissions
Ranked View results

Leave a comment

Log in with your itch.io account to leave a comment.

Mentioned in this post

BLASTRONAUT is a mining game in a procedural alien world. Explore, extract and profit.
Adventure
Play in browser
From Game Maker's Toolkit
Educational
Play in browser
Over 30 different font files for your games, videos, art and more!
Free Cyberpunk Backgrounds Pixel Art for your game projects
Free dark tileset (+character and enemies)
PS4, Xbox, Switch, KB/M. Alternative buttons + smaller buttons.