Sunday, April 24, 2016

Fixing exploits and fine-tuning controls

So, in my files, I have this as week 52 of Sunday is the Deadline, which I think must be taking into account all the times I've missed a week on this blog, since really, I started this blog on 3/15/2015, so I'm about 6 weeks over the 1 year marker here. So, 6 weeks missed, give or take, over a year. Not bad. I'll try to do better for next year, of course!

Pierce is looking better, though still needs a lot of work. This week I managed to reduce the ability to instantly kill enemies. The exploit was brought to my attention while I was watching a friend play. She moved really close to the enemy, to the point where she was almost touching it, and then charged forward. The shield was created, but the player was able to pass right through and kill the enemy anyway.

I tried several times to keep this from happening. I tried instantiating a trigger which would push the player away. No dice. I tried the same thing, but directly changing the player's position instead of applying force to the player. This also didn't work. In addition, the trigger was clumsy. It needed to hang around for a certain duration to be readable by the player, but needed to destroy itself quickly enough that it didn't interfere with the player if they were charging from an acceptable distance.

I eventually realized that the enemy already knew the position of the player at the time that the player began their charge. With that information, I was able to have the enemy see if the player was charging from too short a distance. In that event, the enemy repositions the player as subtly as it can, while instantiating the bounce wall just between the player and the enemy. You can still kill an enemy with a direct charge, but it is much, much more difficult now.

Briefly, I thought about having enemies kill the player upon contact, like the kill walls do. I decided that that would be a bad idea. First, it doesn't actually keep the player from using the exploit, just makes it slightly harder to pull off. Second, and more important, I really don't want players to be afraid to charge enemies. Having them die when they touch enemies, and then asking them to successfully charge through enemies seemed like an unintuitive thing to teach.

Finally, I fiddled a lot with the parameters on the player controller. It's been a long time since I've done that. I have a better understanding of how this game should work now, though, and I think it's in a much better spot. You should feel a lot less floaty now. The player should also feel slightly slower, which should actually make charging feel a lot better!

For next week, I plan to keep fixing stuff, and maybe add one more level.

And as always, the charging-up noise is by Javier Zumer. I am using and modifying that asset under this license.