Timedog said:
What exactly is an input buffer and how does it work? I'm probably going to try to make a shitty fighting game a/o a PC arcade stick trainer sometime in the future after I take more programming classes.
Well, if I am not wrong, let us overview the concept very quickly.
Basically, if you have a game, for every update frame (which optimally means in a second, the code will cycle trough the Update function ~60 times), you will check the input device if there is an input.
What you are going to do is set either a dynamic or a static variable, which will state exactly how much time your inputbuffer window it should be. For that said duration, the movement/attack inputs will be stored, and whenever there is an available moveset AND your character is able to actually go into that animation, the code will automatically start executing the move by using the buffer.
So, in Street Fighter IV, for example, if you jump in with Ryu, then automatically when you are in the jump, you can start buffering motions. If you do forward, down, down/forward, these motions will be stored in your "buffer" (simply think of this as an array of inputs), and when you land, and hit the punch, the code will first check if there is any move available with adding the buffered inputs+the newly inputted punch. If there are, a shoryuken comes out. If there is none, a punch comes out.
If you are designing a new game, you can choose if input buffer's size (in our case duration in number of frames) would be either a static number like buffer the last 60 frames, or dynamic like for every move's recovery frames, you can buffer in that duration, and in that duration only.