2 Jams in 2 Weeks

Hey everyone! I'd like to take this moment to share my reflections after participating in 2 game jams over 2 weeks. I submitted a "finished" game both times, and they were not only my first 2 jam games, but my first 2 games ever published. If you want to check them out, here they are:

https://slug-overdose.itch.io/life-is-full-of-inspiration

https://ldjam.com/events/ludum-dare/41/war-maker

First and foremost, above all else, I will say it has been super transformative to just publish a game, even if they are subpar jam games. Love of video games is what got me into programming when I was younger, and although I started out by making little text based games in high school, I never actually published anything. While in university, I kept experimenting with game engines as a side hobby, but my path really diverged away from game development, and I ended up getting my first job in enterprise software development. Still great, but I just didn't have the same passion for it as games. Returning to game development, this time for real, has made me realize just how wrong I was to not follow my passion, and how it will likely be years before I can make any money from games. Game development is super difficult and competitive. But it's also extremely rewarding, even as a side hobby. If you are a younger developer especially, I cannot urge you enough to take the plunge, enter a jam (any jam, doesn't have to be as big as Ludum Dare) and #FINISHIT. Following through with that commitment will get you out of the perfectionist loop of trying to make the ideal game / engine / whatever, and turn you into a finisher. It truly makes a world of difference.

With that out of the way, you might be wondering why I develop games without an engine, in Java, with JavaFX. Yeah, that's not a very common combination. So what's the deal? Well, at the risk of shocking the Java haters out there, imagine someone looking to implement their first simple 2D game from scratch, and they read a bunch of recommendations to use C++. They might start by playing around with an external library dependency, like SDL or SFML. Then they might have to refactor their code because a bunch of stuff that should be object-oriented isn't. They might eventually decide to add some kind of networking functionality, and either have to dig into platform-specific APIs, or add another external dependency. Then they might want to port their game to another platform, have trouble compiling dependencies, fix a ton of platform-specific bugs, and get it working on a single other platform, at which point they might decide to port to another. Now what if I told you there was a language and platform that had all that built in, but wasn't a game engine? That's right, Java with JavaFX provides a ton of graphics, sound, UI, networking, security, and other useful stuff, and in a completely cross-platform way on desktop. As an added bonus, it's relatively easy to port to Android. All without adding a single external dependency. And if your game is not particularly load-sensitive, you get the wonderful benefits of things like garbage collection and a more strictly OOP paradigm. Seriously, Java is super under-appreciated when it comes to game development. It may not make sense for cutting-edge AAA 3D graphics engines, but how many of us actually get that far? Many people are struggling to make their first game, and if they're a stronger programmer than artist, I honestly think JavaFX provides a good foundation so that you don't need to reinvent the low level wheel.

Now that I've made 2 games with JavaFX, I can confidently say I don't regret it. Yes, in many ways, it's harder than using a game engine. Commercial game engines today are free/cheap, and super capable. But I'm a programmer. This is what works for me. What I do regret is not reusing code from the 1st game in the 2nd. Much of the menu code ended up being nearly identical, yet I rewrote every single line from scratch, which cost me valuable time that could have been spent fixing bugs that ended up forcing me to cut core gameplay features. Seriously, if there's one thing the 2nd game taught me, it's that I need to make a point of extracting value out of each game for the next. There's just no excuse. I think that's true even when using a commercial game engine, but it's especially true when writing games from scratch.

When it comes to making games feel good, I've noticed that really nailing a single super microscopic mechanic and focusing on polish is better than trying to do everything. I have rated a ton of jam games, and it's impossible to overstate the importance of audio. This means music, voice, AND sound effects (NOT OR). All 3. No compromises. You don't have to be the industry's top audio engineer. Just record something simple with your webcam, and your players will love it. A single voiced line can make a crappy game feel thousands of times more polished. The right background music can literally make an unplayable game feel intense. I actually spent a lot of time polishing my 1st game, and it also worked quite well. It got decent reviews. For my 2nd game, I focused more on polish, but ended up cutting a ton of planned features, and the single mechanic that was left is extremely buggy. And yet it's getting better reviews overall, with people saying they had a ton of fun. Part of the reason is that I made fancier menus, did some voice over work, and used great sound assets. Players will overlook glaring flaws if they're having a blast.

Lastly, if anyone's thinking about just doing a long string of consecutive jams, I don't recommend it. Doing 2 jams in 2 weeks has really rekindled my passion for game development. But it's also been extremely hard to recover. I went into the 2nd jam really tired, lazy, and unmotivated, and only shifted into high gear because I was truly passionate about the game idea. Jams are intense experiences. If you don't pass out immediately after submission, you're doing it wrong. So give yourself adequate recovery time between jams. If you think about it, doing 1 per month would result in 12 under-developed jam games per year, which would realistically need to be developed quite a bit further to have any chance of making money. Where's the value in that? One per month might actually be fun and let you test ideas, but that's really pushing the limits of what you can get out of them, and I think you're better off spending more time developing fewer games further. I think quarterly might be the ideal frequency. Go figure.