Two Knights: A High-Effort S**tpost

Last weekend, I spent the majority of it working on a game called Two Knights. Two Knights is a very basic two player fighting game, where two knights throw their swords at one another. I’m going to keep talking about it and the process, but if you want to check it out, you can do that here.

The Making of Two Knights

Two Knights started as nothing more than a joke. A friend of mine is quite good at fighting games. Whether it’s Street Fighter, Rivals of Aether, or my personal favorite Divekick, the guy always beats the crap out of me. So I told him, “You know how I’m finally going to win? I make my own.”, and so I started doing just that.

We’re both big fans of Killer Queen, having spent many nights in Portland’s Ground Kontrol playing it. In Killer Queen, one of your attacks is a sword dive straight down, killing anything you hit, and for me, it’s the most satisfying way to get someone. After adding basic movement and platforming, I started with that attack, allowing the player to hit a button mid-air to lock their controls and dive straight down until they hit either the other player or the ground. On top of that, I added a charge attack, which would send you dashing in the direction you’re facing, also killing anyone you hit.

Recording a fast game in 30fps was a great idea.

Despite having a good time controlling this character, I thought to myself, “You know what would be way cooler? If you could just throw your sword around.”, and so I completely abandoned my current attacks and started working on that. I wanted to add a sword throw, and then an ability to dash to your sword after you’ve thrown it, further adding to this idea of a wicked fast fighter. As soon as I had something close enough working, it was immediately obvious to me that this was the superior gameplay.

Honestly, it's just fun for me to look at.

Now, this whole time, I’ve been playing entirely alone, but I of course need to make it so I can actually fight my friend. My friend still lives up in Oregon, so local multiplayer is out of the question, which means I had to do the totally very smart idea of adding online multiplayer to a game that was little more than a prototype.

I’m still very new to Godot, but thankfully I’ve played around with their networking a bit before, and I was only planning on adding peer-to-peer for this project. Given how simple the game is, the networking also turned out to be quite simple. I ended up making each client the network master of the knight and sword (clearly no concern whatsoever about cheating), and synced their positions to everyone. When a sword connected with the opposing knight, a signal would be bubbled up and sent across the network. With a very basic UI added, I was able to start connecting two synced clients together.

I came to learn it's very hard to test a fighting game when you're playing against yourself.

With the game mostly complete for a prototype, I cleaned up a bit of the game flow, added scoring UI and logic, and fixed a couple bugs I’d been ignoring for the day (including a very fun one that somehow left both knights in control of the host when a round ended).

The current version allows you to host a game, and your friend to join with your IP/port. The delay is incredibly noticeable (obviously should have just done rollback in a couple days too). Your knight can dive straight down, throw their sword, dash to their sword, and counter incoming swords (a fun little move that will send the sword flying in the opposite direction). It has its flaws, which we managed to find a lot of while playing, but it was a fun exercise just to make a joke.

Future Features?

I imagine the right move is to just leave this as it was meant to be, a joke game made in a weekend. However, there’s a certain magic when you’re playing your game with your friends and the ideas start flowing, things you’d never thought of yourself.

Some of the ideas that came out of the play session were:

  1. Allowing a countered sword to then hit its owner
  2. Add some sort of protection when dashing to your sword (you currently can’t stop dashing once you’ve started, and a strong strategy became waiting for a dash and just hitting them as they flew).
  3. Allow the knight to surf on their sword as it’s flying (this one just sounded incredibly rad). And with it, letting you kick the sword away when you’re not holding it.

Now, will I add these? Maybe, but I don’t really have a plan to right now. Even in its current state, I’m satisfied, though mostly because of the act of making the game instead of the game itself.

Some Thoughts on Motivation or Whatever

Initially when I started this post, it was just to talk about this section, though I felt like giving it some more meat with the whole process of the weekend.

Something that was permeating my brain the whole time I was working on it was that it felt like when I’d make games in high school. I was just goofing off, and still making something that I found to be fun. On top of that, it made the whole thing feel incredibly easy. I think, for a while now, I’ve placed far too much weight on what I make, thinking it all needs to be perfect. And I know this is something a lot of developers struggle with. Hell, it’s probably something a lot of creatives in general struggle with!

That pressure to make something “good” really messes with me when I’m working on a project, leading to a lot of second-guessing and completely changing designs, throwing away everything that came before (see: basically everything that happened with my Game In 2020 effort).

What I’m saying is, I think what started as a joke has helped to refresh me and remind me of what I actually love about making games. Here’s hoping I can capture the feeling and keep up the momentum.