Character can jump indefinitely if a client connected to another server (ACharacter)

You recently reworked ACharacter allowing multiple jumps. JumpMaxHoldTime allows you to repeat the jump input so long as JumpMaxHoldTime has not expired when you are the client on a server (Dedicated Server or Listen Server).

JumpKeyHoldTime is not available on the client, producing this behaviour.

Steps to reproduce:

  1. Make a project with a Character that can receive jump input.
  2. Set JumpMaxHoldTime to a value above 0
  3. Set it to Dedicated Server and PIE, you can spam the jump key until the JumpMaxHoldTime has passed, of course each subsequent jump resets the hold time.

Hey Vaei,

After testing this, I’ve noticed that the Jump Max count tooltip states

“Note that if JumpMaxHoldTime is non zero and StopJumping is not called, the player may be able to perform an unlimited number of jumps. It is usually best to call StopJumping when jump input has ceased.”

As a result, I do not believe that this is a bug, and I believe it is working as intended.

However, if you believe that I am misunderstanding your issue, feel free to let me know and I’ll be glad to continue to investigate.

Have a great day

I reproduced the problem from third person template, where StopJumping is called when space is released, but the client can still do infinite air jumps.

This is accurate and what I was discussing, I also call StopJumping. As mentioned the issue is the JumpKeyHoldTime is not available on the client.

Please do investigate, Sean :slight_smile: If you want to be amazing could it possibly be a 4.14 hotfix?

Thanks for the information.

I’ve reproduced the issue, and have entered a bug report which you can track using the link below:

Thanks for your reports and clarification.

Have a great day

I think the issue should be resolved primarily on server side, because server should not trust clients for jump management.

That can’t and won’t ever happen, movement is handled on the client AND server.

Yes, but at the moment jump contraints are not imposed correctly in movement code, otherwise there would not be this issue. Also the tooltip mentioned by Sean recommends to call StopJumping on the client to ensure correctness, but the client should not be able to affect the correctness of the server state.