top of page

Story So Far: Project Break Development

  • Writer: Christopher Brown
    Christopher Brown
  • Feb 8
  • 3 min read
It all started with a question...

"Why haven't we made a fighting game?" For my friend and I, it made so much sense. We became good friends partially through fighting games and shared a passion for the community and the genre. I'm a game programmer and he's a game designer, it made a lot of sense! And so it began.


What is Project Break?

Project Break is a game inspired by a mixture of other fighting games, but primarily by one general concept: easy to learn, hard to master. Everyone has noticed how hard it is to get into fighting games. I won't get into that, so many others have hundreds of hours on the topic but we'd like to create a game that has a solution to that issue.


What does every modern fighting game need...?

From a technical standpoint, Project Break is a 2D game made in Unity, and I intend to add features that most fighting game players would expect, but what is the one thing a modern fighting game needs to be successful? My answer is netcode, but not just any netcode, rollback/deterministic netcode! Deterministic means that no matter what computer or console the game runs on, the math will be the same, especially physics math due to floating-point error. Here is a GREAT video by Core-A Gaming explaining rollback (only 8 minutes!): https://www.youtube.com/watch?v=0NLe4IpdS1w.

To accomplish this I'd have to design the systems around such netcode from the beginning. My first mistake was assuming I'd do so after putting together a quick "prototype".


12+ months and a few life events later, I had a playable local prototype written in Unity/C#, with custom shaders using HLSL and ShaderLab! It didn't have all mechanics implemented yet (i.e. grabs), but we had basic attacks, combos, parrying, blocking, winning, and losing, great! ...Except it was not designed with online multiplayer in mind. At that point, I decided it was now or never, and it had to be done, so I began my research.


Implementing Rollback, Considering Determinism

As I looked around, I found a few options. Someone made a Unity package for GGPO, there are a few forks as well. There's also a very designer-friendly fighting game engine built in Unity where you could create a fighting game with little code! After more research, I found that Unity ECS and Unity Netcode's API now allow for rollback netcode and can be deterministic! I thought that would be perfect, no need for any extra packages. And so I started another iteration of the project, converting the object-oriented project to a data-oriented one.


Unfortunately, as I continued I realized that although I could potentially write a system that used rollback, Unity is not deterministic, floating-point error still would exist on a game made in Unity. This would cause de-syncs during a match, which would essentially break the game. I went back to the drawing board again, and this time I went with Photon - Quantum 3. It's a recent version of Quantum that the networking company made, but since I've used Pun and Fusion in the past, I leaned more towards them over GGPO.


Using Quantum 3: Cool Stuff!

Quantum is great as of now! It turns Unity into a design tool and puts its own engine on top of it to handle the netcode and the math. This makes it so it can be deterministic, it works its way around real numbers and forces whole numbers with a new type: FP or Fixed Point. Not only that, but there are a few cool tools it provides, like spoofing online play, lag in connections, in-depth debugging of its system, good serialization within its own file type, .qtn, custom events, good community support, a manual/API references and more.


What I've Learned, Where I Am, Where I'm Headed

The number one thing I learned from the project so far is to not delay the inevitable! It was a big challenge to think of working on netcode for a fighting game as a solo dev, no doubt. But I knew it had to be done, so it's better to approach it first then to have to deal with it later when the consequences are higher.


Now, I am very close to where I was when I first started working on the netcode for the game. I'm excited to keep pushing forward and to be able to successfully test our game over Discord without using Parsec!


This post is less technical than I'd like; I want to cover interesting technical features and challenges as development continues. I am new to blogging, but I feel it will help keep me motivated towards my goals. See you around!


This is Sally, on the day we got her :) I'll be adding her to all future posts
This is Sally, on the day we got her :) I'll be adding her to all future posts

 
 
 

Comments


Commenting on this post isn't available anymore. Contact the site owner for more info.

©2025 by Chris B. Brown. Proudly created with Wix.com

bottom of page