Ok while overhauling my ControllerSupport plugin I noticed something strange:
PlayerControl, create event
letsJump = false;
justJumped = false;
PlayerControl, step event
if(joystick_check_button(jSlot, 5)) {
letsJump = true;
}
else {
letsJump = false;
justJumped = false;
}
if (letsJump && !justJumped) {
keybyte |= $80;
justJumped = true;
}
Really complicated code, I know. It needs to make sure the jump button is released before I can double jump
The thing is: it didn't work. I tried running it in debug mode and it worked perfectly
Turns out that if you play the game at 30 fps it works, but if you even remotely think about playing at 60 fps you're going to have a bad time
Why? Idk, I optimised the hell out of that plugin so performance isn't an issue, my best guess is that joystick checks are glitchy in Game Maker
Edit: a simple if (global.run_virtual_ticks) fixed it. If anyone has an explanation I'd like to read it