I'm pretty close to being ready to call my game done, since I'm going to be busy over the next two days. I absolutely can't work out what's wrong with the whole "player 2 can't jump left when player 1 is crouching" business, but I recall having a weird issue in Street Fighter IV as well where I couldn't use my keyboard arrow keys to down-diagonal kick with Chun-Li for some reason. I'm sure these aren't related at all but...I dunno. I should swap around some buttons maybe to see if that's where the issue lies. I'm also still not happy with how jumping and jumping attacks work, but I might just leave it as is. One play-tester specifically said they liked the feel of the jumping attack so maybe that's good enough after all.
Anyway, I spent most of the day working on the AI, which I'm quite happy with now. When I first implemented it as a proof-of-concept, it basically reacted to the player's actions in a frame-perfect manner and it basically destroyed me. I implemented a sort of randomness to the AI's actions to both increase its variety of actions and also to make it easier for the player to beat. What's happening under the hood is that the AI will periodically choose between one of two states, and depending on its current state, will make an action responding to the player. The states are weighted so that the option that is more passive/less optimal is more likely to occur. For example, in the neutral state when the player is far from the AI, the AI will choose to either throw a projectile, or simply move left or right. When the AI is under attack, it will either crouch and block the incoming attack...or again just move left/right which leaves it open.
Besides that, I've touched up the presentation of the game, adding an updated background image (it still doesn't animate, unfortunately), adding a splash screen with a short story blurb, and also display the controls on-screen at the beginning of the game. I've also recorded a few lines for the usual announcer stuff. I received some feedback from a few play-testers and also implemented the following changes based on this:
- characters will be pushed away from each other when they are overlapping, to prevent the issue where characters are punching past each other
- further to this, most hitboxes have been increased in size to allow players to hit targets closer to their body (i.e. a punch hitbox now covers the entire character's arm rather than just her fist)
- fixed some more bugs like the characters being able to launch projectiles while in mid-air and "stuck" in the idle pose in mid-air