• shane tupler

Bot Brawl Devlog #02 - Input Buffering & Data Types


As I mentioned in my previous devlog, while you are in a Recovery state in a fighting game you cannot take any actions. For example, after an attack you will be in recovery for a few frames. Any inputs made during this time are invalidated and will not do anything. But in most modern fighting games, there is a period of time when the input for an attack can be accepted, even while you are unable to act. This is known as a Buffer Window. Inputting an attack within this window ensures that it will come out on the first possible frame that you can act again and sometimes that means canceling the recovery of your previous attack.

One example of a buffer window is chaining an attack during hit stop. A Chain is when an attack’s recovery is canceled into another attack. Hit stop occurs when an attack connects, whether it is blocked or not. It freezes both players animations for a short period of time in order to sell the impact from the hit. I wanted to achieve this type of buffer window in my fighting game to make the combo a little easier.

Attached are two gifs in which the same attacks are inputted : Light, Medium, and then Heavy.

You’ll notice that in the first example, only two attacks come out, the light and the medium. This is because heavy was inputted too early. An attack can only be chained into (will explain this earlier in the devlog) while you are in hit stop. Since medium is pressed during hit stop, the recovery of the light attack is cancelled, and the medium attack comes out. However, heavy was also inputted during the hit stop from the light attack. Since medium was pressed first, the input for heavy was “eaten” and the move never came out. Even though, the player pressed an acceptable series of inputs, nothing happened, and this could result in the game feeling unresponsive to them. To avoid this, I implemented a system for queuing attacks.

In the second example, all three attacks come out. This is because of the attack queuing system. If an attack is inputted while in hit stop, that move is chained into. If another attack is inputted while still in hit stop, that attack will be held in a queue. Now, after the second attack comes out, the third attack will be chained into as soon as it possibly can.


  • NormalAttack.cs

  • In Directional Input, the forward slash in between the two numbers indicates that either of those inputs can be used

  • 4 = back on the stick

  • 5 = neutral

  • SpecialMove.cs

  • The directional input for a Dragon Punch motion is made up of a forward, down, and then down forward motion or 623

  • I am also allowing for down forward, down, down forward or 323 to make it more lenient

  • CharacterData.cs

  • Holds data for the character's movement such as jump height and number of jumps

  • Also has lists for all of the Normal Attacks and Specials Moves the character has access to

  • I will cover what Uniques are in a future devlog

To see any of these in more detail, check out my GitHub. Otherwise, that is all I have for this devlog. I hope you enjoyed!

4 views0 comments

Recent Posts

See All