Jumping. It’s an intrinsic mechanic to ROBLOX games that involve the default character figure. Unfortunately, jumping is one of the most unhealthy mechanics to have in a game like Juggernaut 2 that involves projectile shooting. In this post, I discuss how I take control of this mechanic and make it healthy for Juggernaut 2.
If you are designing a game on ROBLOX where players are casting projectiles to one another, you have to take into account character jumps. The default mechanics of jumping on ROBLOX allows players to dodge other players’ projectiles far too easily. If you have ever watched two players in a one-versus-one battle where they are shooting arrows with less-than-infinite projectile speed, you will see how easy it is to “juke” opponents and have them miss consistently.
When creating Juggernaut 2, I noticed a common player behavior emerge when Prey flee the Juggernaut: constant jumping. It was simple; if you held down space, you were nearly impossible to hit from more than 20 studs away. This made ranged weapons extremely unreliable unless you had low ping or really good sharpshooting skills. I had several options to change this.
My first option was to change the actual nature of characters’ jumps. I could make them jump slower by reducing gravity on the player and the force by which Humanoids jump with. This would allow the shooter more time to land a shot mid-air, but this necessitates an weird “low gravity” effect for the player, plus make the world feel unresponsive. Additionally, if I were to put any movable objects in the map, the acceleration due to gravity would be different for the player and the objects. Inconsistent world mechanics meant this option was off the table.
Inconsistent rules are one of the many ways that a game can become frustrating, so my game should have consistent “world rules” like gravity. Changing characters’ gravity was not going to happen. The other option I had was to actually hard-limit the player’s choice in jumping by denying the option outright.
I wrote a script which gave the player a stock of jumps which only allowed the player to jump if they had at least one jump available in their stock. These jumps regenerated over time up to a cap. The rate of regeneration was different depending on the current state of the player (e.g., standing, running, sitting, taking damage). I fiddled with this script a lot and added/removed mechanics until it felt right. Here’s some of the rules and numbers I’m using as of this post:
- You can hold 8 jumps total.
- It takes a minimum of 1.5s after your last jump to regenerate another jump.
- If you are sitting, you regenerate a jump every 0.1s (super fast).
- If you are standing, you regenerate a jump every 0.4s.
- If you are running, you regenerate a jump every 0.8s.
- If you took damage in the last 2s, you regenerate a jump every 1.2s.
These mechanics directly combat the “jumping bean” strategy for dodging projectiles. You have to be smart about your jumps and save them for when they are necessary. Attackers are rewarded for landing their projectiles, and players can still climb staircases when not under pressure.
In order to communicate the number of jumps a player has, I used a spinner. Originally, I planned to use a bar like the health bar, but due to the low jump stock number (8 jumps versus 100 HP), a spinner was more appropriate. Also, adding a circular spinner makes this part of the HUD symmetrical.
This kind of feature adds greater emphasis to players’ choices about when they jump. I hope to see some positive feedback with these jump-limit mechanics in the coming testing sessions, and I imagine I will change the numbers a bit so they feel just right.
P.S. On a completely different note, I have redone the lobby area for Juggernaut 2. Take a look!