Today marks the day that two of the big bugs that have plagued me throughout the majority of development -- you know, those annoying vague ones that leave you scratching your head wondering how you'll ever solve them -- have been fixed. While it's not a giant step towards v0.04's completion, it both makes the game more stable, and makes me feel infinitely more relieved. I can sleep easy tonight, that's for sure. :)
Bug 1: The player's velocity is governed by two variables, an X velocity and a Y velocity. Rather simple, but since I checked for each velocity to be within a range seperately, it was possible to move diagonally faster than horizontally or vertically. That is, if the max X/Y velocity is, say, 10, then you could move horizontally (10,0), or diagonally (10,10). When you do the math you see that diagonally is considerably faster! This was solved just a couple of days after our unit on Vectors began in my Discrete Math/Geometry course. I realized, "Duh! This is a vector! I should judge overall speed by magnitude! Doh!".
Bug 2: This was the killer, which I actually just recently posted in the Math forum about. Essentially, my frame-independant motion code was fudged. One of my testers who ran the game at about 25FPS (rather than the ideal 60FPS) has been able to move faster than everyone else since nearly the beginning. It's been quite annoying as he was able to defeat all of us with ease. Now I update the game 60 times per second irregardless of the framerate. For example, at 60FPS I update logic, then draw. For 30FPS I'd update logic twice, then draw. This way the logic rate stays consistant with everyone else's.
Sure the fixes sound simple now that I've already implemented them, but darnit I know that the rest of you developers can empathize. :)
Next up on the Roadmap is Tools. Tools are items like grenades, mines, melee weapons, and the like. Explosions are definitely an area I'm going to have fun with!