I’ve decided to start making a fighting game as my first game using Godot 4.

History

I have worked most of my life in customer service and, more recently, as an IT support technician. My background in programming would be considered novice at best as I am entirely self taught and for the most part have only dabbled lightly in script writing for bits of work and working on GP2040-CE, primarily as a writer of documentation. I have little to no skill in the creative side of game development and those will be my biggest hurdles in this endeavor. My ability to make art and audio assets, along with every skill, will be tested and I hope I can rise to the challenge.

Game Details

END GOAL: A mech themed, high air mobility fighting game with sprite based pixel artwork

Genre: Fighting Game

I acknowledge that the choice to make a fighting game is definitely setting a high bar and increasing my likelihood for scope creep and ultimate failure, doubly so considering that this is my first game ever. It’s the only genre that I have any interest in making a video game for. I considered starting with a smaller game in order to get my feet wet, but I found that I just had little desire to think about and design other video game genres. This will be a hobby for me while I work on other academic efforts.

The primary impetus for this project was not seeing the particular combination of mechanics and theme in fighting games that I would like. I particularly dislike games that limit my movement to primarily ground based game play. I initially bought Street Fighter 6 because JP was described as an “anime character with anime projectiles”, but as I started playing him, I kept getting destroyed trying to air dash back and forth out of habit. I have a strong love for fighting games that have a lot of air mobility and making use of the vertical space of the screen.

So far, Cyberbots is probably the closest that I’ve seen yet for both, but it still does not quite make it. It has both mecha, flight mechanics, great sprite work. However, this flight is quite varied and is highly limited, making it significant, but not as present as I would like. It also has the arm mechanic and combo feel that I am not that big a fan of.

Cyberbots

Marvel vs Capcom is also a big inspiration for me as so much of that cast uses that vertical space where you and your opponent can duke it out after super jumping and fighting on the way down. Specifically Sentinel’s fly and unfly mechanic. The whole concept for the fighting game actually came to me in a dream where I was playing and Gundam themed fighting game in space so you had to use booster to move around. So I decided to write that into my journal for revisiting.

[Skip to 30:00]

Art Style: 2D Pixel Sprites

As an indie developer, I don’t think it will come as any surprise that I will be using pixel art sprites and will be striving for a medium detailed science fiction pixel art aesthetic. This choice was primarily motivated by a keen desire to not have to learn 3D modelling and because the decision to use Godot and the Rollback Netcode addon would severely limit my speed and ability to get something up and running quickly.

The art inspiration is definitely DieMango’s art. I really love they way they have done their mecha and how detailed the sprites are. The fact that they aren’t so industrial and plain military grey is so alluring. This will probably be the style that I will look to emulate with my sprites once I get around to making them.

DieMango - More

For the time being, I intend to use placeholder sprites as I do not want to allocate too many resources to it when I don’t even know if the game will be completed or fun, even if it is. For sprite work, I am thankful that Mugen Archive exists as there are many assets from Cyberbots I can use in the meantime.

Audio: Uncertain

Similar to the art assets, I will be using placeholder audio while I work on things just so I can keep working without the need to get bogged down by creating assets I don’t know I will even keep. Panda Beats has a number of audio tracks that I enjoyed listening to while I was writing up design documents while also being not too far off from what I can see being in the final product.

An ideal audio pick would be works from StriderTempxa since I’ve been a massive fan of the work they’ve posted in a mutual Discord. That will have to wait though until I have the resources to commission work from them or if they show interest in collaborating on the effort. This track has a lot of the vibes I’m looking for, but I still need to refine my vision of the specific audio I want before I can even approach anyone on making audio for the game.

I highly recommend people check out Strider’s Bandcamp and support a great artist.

Game Engine: Godot

Godot was a simply choice as it is free and open source game engine so the barrier to entry is almost nonexistent. Unity is not an option I would opt for without significant pressure to do so because of the kerfuffle with their naked greed being antithetical to my values and politics. Unreal, I don’t have as much a reason to not use them other than there seemingly not being as many resources on a recent implementation that I could follow. Especially when it comes to an implementation of deterministic physics and rollback netcode.

In Godot, I will be making everything but the rollback netcode implementation myself and that is certainly a daunting task. I’m looking forward to the challenge though.

Godot Rollback Netcode Addon

This project would likely never have been possible without the great work that David Snopek of Snopek Games has done with making the Rollback Netcode Addon for Godot. The fact that I did not have to implement rollback netcode on my own is a godsend and I am forever thankful that this already existed when I wanted to make a fighting game.

While this tutorial is a little out of date with Godot 4, it still has the majority of the bits that are required for implementation. You just need to substitute a number of function calls for the new High Level Multiplayer API for Godot 4. I’ve included a list of substitutions that are needed in the attachments.

Rollback Netcode - Godot 4 Substitutions

Castagne

Castagne is a fighting game engine created by Panthavma to make a number of different genre of games. It comes with an editor and is rollback ready

At first, I heavily considered using the Castagne Engine, but ultimately decided to make my own custom fighting game engine for a number of reasons. The primary reason is that Castagne is simply not ready for production and there is a lot that needs to be done as a developer of my game to make it work for my needs. As far as I am aware, one of the major features missing from Castagne is that Online Play is not ready with out significant effort on the part of the developer. For a fighting game, that makes choosing this fighting game engine a non-starter. Now, I could modify Castagne to better suit my needs, but I feel that learning the quirks of Castagne would be not significantly easier than leaning Godot myself. Also, the task of building all of my own systems and processes will teach me a lot about programming as well as the video game work pipeline.

Another strong deterrent is that, during my exploration phase, I found the developer’s aesthetic and visual choices made it very difficult for me to use Castagne and read documentation while using it. The site documentation is fairly incomplete (though it is available in the editor) and information on how to use CASP (Castagne’s scripting language) is not evident from either their limited tutorials nor the interface itself. Colors, fonts, and icons used everywhere from the engine to the documentation actually hurt my eyes to use or are unreadable to me as a person not already familiar with them. I hope that there is an overhaul in the future to make it more visually useable from my perspective, even if it is at the cost of the indie character and charm.

I don’t knock others from using Castagne to learn how to make fighting games, but I’ve realised that it is not for me.