SefrZ

LD 44

First Official Game Jam

I've done personal 48 hour challenges before, but this is the first time I'll be doing an official game jam. Going to do the 48 hour version using Godot Game Engine and streaming the whole process. This weekend is going to be so fun!

Lessons from my first ever game jam and compo

cover_image.png

This was my first ever official Game Jam and I decided to do the compo. I am incredibly proud of what I made, especially since I've only been making games for a little over 9 months. With that said, some things I personally learned.

1) When in doubt, do art.

I am the worst at art, so from the very start I started making art. I used paint.net which is free and opensource. It's less advanced than Krita, but I'm more comfortable with it. If I didn't know what I was doing, I made art. The entire idea for the game came from the initial character and what I thought would look cool.

2) Keep it small.

I wanted to make a level editor so I could quickly put together levels and allow others to do so. I thought, originally, I could do this because I've made them a few times already so I'm comfortable with that process, but time is a major factor so it was out of scope for me. I wanted enemies, again, out of scope. I boiled the idea down to what I knew I could already do and then threw in a few things I didn't just to test myself. This kept me within the time limit pretty comfortably.

3) Balance around the lowest power level

I don't force upgrades - in fact they are somewhat hidden or a puzzle to get to and there were choices. I can't predict what players will choose, just what I like, thus, balance and playtest throughout the entire process on the default power level. If you can beat it like that, then those powerups feel fun rather than necessary. That said, my style of balance is to play through every small part of a level as I build them, not just the finished level. I find it makes it a lot more fun. You also catch bugs faster that way.

There's a bunch more things I learned, but these are definitely the biggest three takeaways for me.

I can't wait to play everyone else's games!

You can find "The Oarsman" here!

https://ldjam.com/events/ludum-dare/44/the-oarsman?fbclid=IwAR3zxZN8kvPfeY5oUcmPvtkCTCG2YJNtItJI86fsY-j4XwqJq83E7yhtlxs

Community is awesome

I've been sick the last two days due to the near constant streaming I was doing over the weekend during the compo, but getting the responses I've gotten to my own game as well as playing everyone else's game has been phenomenal and is making recovering a lot better. Thanks for being super awesome everyone. This was my first game jam, and I'll definitely be doing more of them thanks in part to the community!

Post Mortem on "The Oarsman" and my first Ludum Dare and Compo

cover_image.png

Now that I've had a few days to breathe and think about what I did for the compo, I wanted to share a more in depth look at how I approached making a game in 48 hours.

Game here: https://ldjam.com/events/ludum-dare/44/the-oarsman

Friday

I think this was the most important night for me. I actually didn't do any prep for this and had no prior ideas what I wanted to do with the theme (I did for the color and shelter themes, but that was it), so while I thought of a theme, I did art. Specifically the characters sprite and the animation for running, jumping, falling, and backward dashing. Those two mechanics were the only ones I knew I wanted in the game - dashing and jumping. So on to setting up controls.

Run animation.PNG

Playtesting vs Personal Preference, Accessibility vs Comfort

I play a lot of platformers with keyboards, so I know what I like. I like tight controls and fast movement. Therefore I balanced controls around that. Another thing was going for accessibility or comfort. For me, these are the same thing, but I know some don't feel the same. I wanted the whole game to be able to played with one hand so even if someone has problems using both hands, they can still play. I also thought it was intuitive to be able to dash in the direction you are moving, so combining movement with dash direction made the most sense to me. I intended to put controller support here, but it skipped my mind with all the other stuff. It's here I had the idea to put in a backdash when standing still, but because of time constraints, after the movement was further refined, it was left in because I didn't have the time to take it out.

Once I got the basic animations and controls down, I made the general use auto-tile template I use to speed things up. It was originally colored black and white as I hadn't settled on any kind of color theme let alone what this game was. At this point, I just knew I had this ghost like figure and wanted to save souls.

foreground_autotile.png

Adding shadow effects

Finally, before I went to bed on the first night, I wanted to get my shadow effects on the character (inspired by the Castlevania games I played as a child). I accomplished this by creating a brand new sprite every frame, adding it to a node which I had preset in the level template, and adding a script to it to force it to fade and delete itself after a set amount of time. This allowed me to constantly add the shadow but not add an endless pile of objects and create a memory leak. That was my biggest fear - creating memory leaks and bugs with this stuff. I'm happy to say I avoided that.

shadows.PNG shadows2.PNG

Saturday

This is where I got the bulk of my work done. I had thought of the color theme I wanted, a simple purple and blue background. That translated to night, therefore my game was now at night. I wanted it to be outside so I could use layered parallax backgrounds to make. So that was my first step. I created the night sky by simply coloring a large canvas a dark blue, adding a ton of noise, and then zooming into the noise to make the stars. The clouds and mountains are really just blobs with some layering. The trees are inspired by Shovel Knight's trees, but really it's just one tree layered and flipped. The moon is what I was most proud of, it was simple, but it's my favorite piece of art I did for this game.

ludum dare.PNG

At this point I added the dash animation you see in the picture above and with that, I started making traps and obstacles.

The theme

After this was all done, I finally decided on the mechanics for the theme - you must sacrifice your life to interact with objects and to save souls. With that, I went through and created the three basic interactions - souls, doors, and switches. I had added hearts to the UI at this point and had this all hooked up quickly by using groups and placing all the code within the player's script so I didn't have to do much if any scripting for objects.

Interact.PNG

Next, I needed to add danger.

Taking shortcuts

I don't know how to do AI that well, so creating enemies were out of the question because I didn't have time to teach myself that, so the solution? I'm making a platformer, let's use traps and spikes. The classics of the platformer genre. I took a few shortcuts with this. For example, instead of determining when they hit, all of that is done via collision within the player's script and placing all things that damage in a "danger" group. Next, I had built platforms at this point, so for moving traps, I simply attached the spike traps (a trap without any scripts) to a platform, and voila - I now have a moving trap that I can adjust to go horizontal or vertical, change distance, and change speed all from the ui thanks to exported variables.

I took he exported variable root with my range traps as well as you can see below where the direction Vector2 dictates not only the direction of firing but also the direction the sprite is rotated in.

Range Trap.PNG

Level Design

At this point, I started putting together a single level.

Level 1.PNG

I wanted to show off just about everything in the first level, but still make it extremely accessible. All balancing was done without any power ups, so if I couldn't beat a level without power ups, I didn't think it was a good level. Placing a switch outside a building with the wall and soul all in view was to show the player the interactions. A hidden room with a lantern was clearly visible underground to try and show that there are hidden rooms to upgrade. Once I had the basic level design, it was already 3 AM, so I ended my night there with less than a day left to complete this.

Sunday

All the small things

So I had a lot to do and not a lot of time to do it. I woke up at 8 AM and immediately started working on sound effects and music because those add the most atmosphere. I used Bfxr and BeepBox to make 8 bit sounding music. At this point, I also wanted to put in an effect from one of my first projects I ever did - lanterns that disappeared and had light intensity that goes with the music. Godot doesn't have a lot of tools for this, so I used 6 different music channels each with eq values set to only pick up one range of sounds within the music and then used range_lerp to change it to the within the range of values I actually needed.

Audio intensity.PNG

At that point, it was just playing with colors and lighting. I try and add some reference to either the bisexual or LGBTQ+ community in all my games, so I made 6 colored lanterns that I would use later all with the pride flag colors and mapped them to each of the 6 EQ busses I had set up with a white one for the music bus. From there it was creating victory music, creating level transitions, and various other small improvements to help the feel like shaders for the water and the bullets. Things that no one is going to stop and really notice unless they were missing.

The second and third levels

I originally wanted to do a level editor to make levels quicker, and if I had been doing the jam and had the extra day, I would have, but for the compo I didn't have time. So I reduced my scope from 8 levels to 3 and wanted to show off every feature I had put in within those three levels.

Level 2

Level 2.PNG

I put in 3 souls and only required 2. Because of how agile the player is, movement wasn't a problem for me and if you grabbed upgrades, you would be even more agile - so I balanced around base power until I found it fun. I wanted platforms to disappear on a timer, so I added that and then placed the warning sound in a global audio node rather than a 2D one to give the player warning. This one was supposed to be difficult, but not impossible.

Level 3

Level 3.PNG

I doubt many will notice, but it's actually just a big turtle with teeth. This was going to show off everything. I wanted it in the water as that was the original reason I wanted the water effect. I made this one - admittedly - very hard unless you had upgrades. Still beatable, but very hard.

Finishing up

The UI was the last thing I did. Adding sound options, credits, menus, and the theming were all done within about 2 hours total. This is the part I feel is the most rushed. I wanted to put more indications on what happened when you interacted with things and more indication what the coins did, etc. Mostly I ended up relying on sound design for that, but I don't think that was sufficient. I needed visual feedback, but I didn't have the time to put it in effectively. One of the nice things about how I design levels, is that playtesting was pretty much done at this point as I playtest as I create - section by section. There were still more things I wanted to add - options for various hearts, controller support, and better UI placement, but these were all lost due to the time crunch.

Post release feedback

This is where I think I've gotten the most value from this experience. It was my first ever compo and I've only been making games for about 9 months now, so this is the first thing I'll have published for more than friends or people who watch my streams get to see and give feedback. There have been extremely helpful feedback that's shown the faults of the game that I didn't even consider. All of it reinforcing the idea that player testing is not only important but necessary.

Overall, this was super enjoyable and something I'm going to do more of - though maybe next time I'll be able to improve thanks to the experiences from this one. This one was kind of a "let's wing it" experience, the next one - I hope - will be more planned on my part.

jump.png

Ludum Dare 45

Progress so far

This theme was one I didn't have anything prepared for, but I've come up with the idea. But for the last 3.5 hours, I've been doing artwork for a concept I never had.

Capture.PNG

Now I have the idea. Start without your identity and claim it piece by piece.