I want to note that anyone thats has an IRC client can visit the development channel #fgdev on Efnet
I’m currently rewritting the input handling for my engine. Before I lay down any new code I would like your input first.
I was planning on people showing up to the IRC channel to discuss development, but since thats not working out I’ll just post technical information here.
I am going to start with a few assumptions to design the algorithm to handle normals, specials and supers.
The notation I will use is as follows:
- is used to indicate whether one or two buttons are held down for a tick. Example: A+B means either A or B or both can be held down for the statement to be true.
- is used to indicate logical AND. A * B, also can be written AB.
for the statement to be true, button A and button B must be held
for the tick.
! attached to a button means the button must not be pressed for the tick. Example: !AB means B must be pressed and A can’t be.
I will use the SRK icons for the directions, and letters to indicate buttons.
:u::d::l::r:
!:u:B
I will also use commas ‘,’ to indicate execution of specials and supers
Example: :d:,:d::r:,!:d::r:,A
Diagonal arrows are not used since most controllers only have 4 switches, and I want to indicate the digital state of the switches as precise as possible.
I’ll return a little later with the specific way in which I want to handle normals, specials and supers. Feel free to correct/improve my notation.
Edit: Continuing
Now I will explain how commands are detected.
Directions
As simple as when a direction by itself is pressed the program executes the designated action if nothing is preventing it to.
Normals
Normals consist of either just an attack button, say A, B, or C, or an attack button and a direction (:u:).
Examples: :r:A ; C; :l:AC
The program executes the normal when it first detects a normal input, if there is not some reason thats preventing its execution.