efroemling / ballistica

The BombSquad Game Engine
Other
533 stars 106 forks source link

Better quick-turning for maintaining momentum while running - feature proposal + Plugin #256

Open TheMikirog opened 3 years ago

TheMikirog commented 3 years ago

Description

Maintaining momentum while running feels cumbersome and not as fluid as it could be. Running has a mechanic which makes turning much harder, but sometimes you want a tighter turn, especially since most maps are really small. In order to achieve this, I often let go of the run button for a split second in order to benefit from tight turning, but then change direction and hold run shortly after in order to keep my momentum and start running as fast as possible, but in the other direction. It works, but it feels slow and disrupts the flow of the game. In short, this aspect could've been improved in order to make movement around the map much more fun and zippy.

Explanation of quick-turning

  1. Start running in one direction
  2. Quickly release the run button
  3. Quickly pick a new direction
  4. Hold the run button again This also works on touchscreen if you use punch or grab buttons for running. For more visual examples of how this works can be seen at the bottom.

Solution

One way I was thinking of addressing this is to apply a force in the new run direction without losing built-up momentum. My implementation of this idea can be found below in the form of a Plugin you can download. Hopefully it will get tested by other members of the community and on servers, so you can either support or contest this idea. I did do testing sessions with people, but that's not a big enough sample size for me to have complete confidence in it.

Alternatives

I was thinking of possibly altering the way a character moves by default in order to maintain both the physics-based gameplay of the original while making it less frustrating to move around and fall by accident. This is alleviated somewhat by fast respawn times, but dying like this is especially common in maps like Zig-Zag. Unfortunately I haven't had much experience with modifying the game's binary code and I certainly don't know how much control I had over the physics there, so I did the second best thing and implemented my idea with Python. This also makes it incredibly simple to play test.

Possible issues

Some issues I see with this idea is that it could make precision inputs too important for a party game like this, which could put mobile users at an automatic disadvantage. Although I did try using this Plugin without the run trigger and instead use my punch button, I didn't have much issues executing quick turns like this. Therefore it's important for mobile users to also play test this to get a full coverage on how impactful this implementation is for the enjoyment.

Another potential issue is that and it can make certain combat situations non-committal and ambiguous. If a player can turn 180° and still have powerful punches, this makes it hard to plan ahead of time, unless you resort to baiting and accounting for that. This in itself could make melee combat much more satisfying and fun, but it's clear this is a departure from how BombSquad melee combat is at the highest level of play - more about planning and committal attacks that are powerful, but can easily miss and recovery is longer. This is why I'm more of a proponent of the Plugin to be something that makes movement more fun instead of rewarding skillful play, although one directly influences the other to some degree.

All of that however is minor compared to the biggest issue I see, which basically buffs punch-grabbing to absurdity. Here's how this tactic works: if you're getting chased, simply change direction via quick turning, jump, punch and grab your enemy from the side at the same time. Strong punch stuns the opponent, which means they can't fight back. The power of the punch itself is also enough momentum for you to make your throw much stronger and possibly throw the victim off the map. Quick-turning improved by the Plugin makes the tactic even more powerful and even unfun to play against, since it's harder to react to. This tactic could be an issue in its own right, but whatever you shouldn't grab while punching or punch while grabbing is another discussion entirely.

Attachments

If you're interested in checking out how his system works and form your own opinion about it, I have made a Plugin as a proof of concept for people to try it out. Plugin download Videos below are some gameplay examples with my controller overlay to better explain execution of quick-turning and how the Plugin changes it. I encourage people to experiment with this quick turning with and without the Plugin. Video #1 - basic overview of the mechanic Video #2 - potential combat use example Video #3 - platforming

lemonyPRIDE commented 3 years ago

Understanding what you're saying you dont wanna loose the momentum whilst a quick turn is an interesting enhancement, but dont you think that players would really struggle especially the android players to make this quick turn with the max momentum they gained (normal gameplay already makes their fingers slip a lot, this speed is WHEW), but eventually to fall out of the map? Since you're talking about small maps, take Bridgit... I'm no genius at coding like you are MikiRog, but I've been playing this game a long time as you are, and I see on a regular basis players using and getting adapted to the collision edge of those small maps to make there momentum stable without losing it at all. Epic maps are one thing but Non-Epics are way faster and that additional FORCE is a lot to handle (am pointing out after I used your plugin)

It would be awesome if you could implement this on BombDash, especially after that energy meter by which the player gets tired after consecutive punches it was a good practice for me to make a single punch that would do a larger damage than multiple small ones.

Also could you make a plugin that would show the directional arrow for windows/mac/linux users those who play on keyboards?

TheMikirog commented 3 years ago

@lemonyPRIDE To clarify, in order to benefit from quick turns you need two things:

The faster you move, the faster the turn. The sharper the turn, the faster it is. I assume you don't run like a maniac on small maps all that much because falling is easier with or without quick turns by default. From my limited playtesting sessions (gamepad and touch screen users) we didn't notice any deaths due to falling because of quick turns. As the plugin improved the situations where people fell down due to the mechanic were less and less common until they stopped happening. In the early stages it happened much more often, because the plugin worked at full power all the time no matter how fast you were moving and how sharp the turns are. Now with all the safe guards implemented, you won't accidentally run off the edge unless you really meant to do that. At least that's the goal here.

Remember: quick turns weren't meant to give speed, but rather maintain speed. Because of that if you aren't already running, the push power you get from quick turns is much smaller. I did everything in my power to make it as natural as possible. However if still that's not enough, ask yourself if it's because the mechanic is poorly implemented or maybe because you didn't get used to it, because it's something new. Try experimenting with it in all sorts of situations with all sorts of input devices. I need all the info I can gather.

Quick turn obviously adds a learning curve, since it's not something that exists in regular BombSquad. With any new skill it has to be learned. My goal is to make quick turn learnable and intuitive. If you fall because of quick turn, the only reason I'll accept is when you're new and getting used to it or when you were not careful. Eventually I plan to patch out all unintended or glitchy behavior, so you always know what character will do when quick turning.

Also could you make a plugin that would show the directional arrow for windows/mac/linux users those who play on keyboards?

I'm not that knowledgeable on the engine side of the game - I'm mostly coding in Python exclusively and Plugins don't mess with binary code, so I'm not the best person to be implementing that.

TheMikirog commented 3 years ago

Recently I updated the plugin to apply an easing function that make wavedashes stronger above 90° and weaker below 90°. In addition the cooldown has been increased from 30ms to 100ms. All these changes ensure that building up ridiculous speed, especially in Epic mode is way harder or even impossible.