So Many Bugs…!! (And, the Never-Ending Quest for Replays)

It’s that time of year again! Where I intend to give myself a vacation — it’s the freakin’ holidays, man — but end up working on replays instead (I REALLY want Bleed 2 to have them) which led to finding and fixing tons of bugs. I also gave my to-do list of features/polish one more look to see what big items were left to be done. Whee!

First: the to-do list. Other than bugs it’s basically all cut. The past few months I’ve been chipping away at the list, implementing bits of polish and features in-between big items like art and bugfixing, and all that’s left at this point are incredibly minor and superficial items. Maybe if I have time to sneak a few in I’ll add them, but most of them won’t have a tangible impact on the game’s quality and will carry the possibility of introducing bugs, so they just don’t seem worth it. An example of a simple addition I made recently was an indicator to highlight your entry on the leaderboards. It’s useful, and also removed from the core game enough that I feel more than comfortable putting it in.

With that done, I gave fixing replays one more shot. Since their breaking is so hard to reliably reproduce, the game had to be played a TON, which also gave me a chance to do lots of balancing/refining on the unlockable weapons and characters — and to find oodles of bugs.

A HUGE problem I found is that many things weren’t being properly reset when you started a game, including the camera and the player. So starting an Arcade Mode run while holding the jump button down (as shown above) could result in two different outcomes, depending on if the player was last in the air or on the ground. Likewise, the camera’s last position was affecting its position at the start of a new game. These things might seem minor but they really aren’t, because they cause a butterfly-effect that quickly breaks the random number generator and ruins replays. It also allowed for a divide-by-zero error under specific circumstances which messed all kinds of things up.

Similarly, if you quit the game while the boss death animation was playing, it lead to… interesting results. (This also breaks replays because time is slowed during the effect.) Shout-outs to Noobii as always for finding this and many others.

Plenty of bugs were also found that wouldn’t necessarily break replays (because they happen the same way every time — they’re just incorrect behaviour.) For example, if you taunted right after attacking, you could keep swinging the katana during the taunt! My apologies for removing what would surely have become a legendary advanced technique.

I also added some new behaviour for the menus. If you don’t touch the mouse or keyboard for 10sec (or something like that) the cursor fades out because you’re probably playing with the gamepad and don’t want the cursor on-screen. But if the mouse fades out over top of a menu item it keeps that item selected, and it feels like the gamepad has broken because you can’t use it to move off the highlighted item. Now if the mouse fades out and you’re using a gamepad, it positions the cursor at the screen’s top-left corner (it was the simplest fix available to me.)

Now after all that, are replays fixed!? Well… no. They’re much, MUCH harder to break, but they still occasionally do (a single replay has broken since these fixes.) Obviously they need to continue to be tested, but as it appears now a 99% success rate seems pretty good to me. It’s enough that I’m considering leaving them in the final game… it’s not like I’ve ever advertised the game as having them (except on this blog, I guess) so I think/hope they’d come off like a little bonus feature, and maybe people will understand if something like that is occasionally unsteady. I suspect the average user won’t even know or care if they exist.

Soooo, that was me this week! There are tons of bugs to fix and things to plan, and I’m going to have a big playtest of the game tomorrow, but after that I think I’ll try and take the rest of the week off. I mean… it’s the freakin’ holidays, man. The freakin’ holidays.