Several bug fixes have been implemented. Most were long known and well hidden, and so minor that I never bothered seeking them out. One small bug was born from my recent pushing animation and a much larger one from the 'improved' camera controls. It never should have made it into my previous release, and since I had to fix that, I decided to track down all the others too.
All known bugs have been fixed. I'm still somewhat unhappy with the quirky physics and controls when bounced from a springboard or jumping with boots, but I haven't altered it for fear of breaking levels.
Looking up narrow maps: the improved camera controls added with the last update included one MAJOR flaw. It didn't allow players to look up or down on maps with a width the size of the screen. This has been fixed.
The pushing animation would continue playing after an object moved or fell out of range of the player. This condition is now detected and the proper walking or standing animation plays.
Riding through floors:
After pushing a block or robot off an edge, players would often ride the object down through the floor. This would allow them to stay attached to the object until it landed and survive falls that would otherwise kill them. My first fix was to detect the terminal velocity and squish the player against the block, but then I figured out why the player was pulled through the floor and remedied that instead.
Shooting from ladders:
The blaster and wand animations would not play while players were climbing due to the animation's pause attribute being set from the player.Climbing() routine. Instead, the animation would play when the player reached the top or bottom of the ladder. With a bit of effort I added a player.Pause() method that handles the situation properly.
Jerking robot right:
When players pushed a roboTRAC to the right its movement was jerky. I have known about this for quite some time and was completely stumped. Neither pushing boxes nor pushing roboTRAC to the left exhibited this behavior. The problem related to mishandled offsets and didn't effect the box because it covers the full width of a grid square. Now all pushing is smooth and properly aligned.
Falling through plaforms:
There were a couple situations where players could fall through a moving platform. I ignored them because they only occured when players would die anyway. After several long looks at the logic in player.Falling() failed to discern the problem I finally found the real culprit.
The method that I use to determine which side of robot that the player is in collision with is inaccurate. It determines that a player is touching the left or the right side of a robot if he's falling near the speed of terminal velocity when he touches the top of it. Fixing this problem by implimenting the proper collision detection found in physics engines is impractical, so I instead wrote a workaround to handle the specific case of falling too fast onto a robot.
The input logic caused players to stay stuck in the teleporting animation at the destination of a teleport if they held switch button, unable to move until they released the button. This looked especially silly when the teleporter was airborne, and also allowed players to cheat death while waiting for a moving platform to come within range.
This happened because teleporting calls player.Freeze() to prevent player input from moving the character until he fully materializes. As a side effect, the game thought that the player released the switch button so player.Teleport() was called again. The teleport method reset the timer but didn't change the state variable that determines whether the player has reached his destination yet. Therefore the player would remain in the second(destination) phase of teleportation until the button was released instead of teleporting back to the teleport pad he came from.
Leave a comment
Log in with itch.io to leave a comment.