[REP Problem] Basic mantle mechanic doesn't fully work on client

Hi,
New to multiplayer scripting I’m trying to make a very basic mantle, ejecting the character from the edge at the end. I hold space to stay on the edge, no movement here, and letting go ejects.
My edges have a component that tags them directly.

On server/client0 it works fine but my client1 have troubles. When I jump on the edge it does the jump to anim but my character goes straight back to ground and does not stay on the edge.

Can you help me?
I tried making these functions on runserver and/or multicast and it doesn’t change anything.




Do it on the client, Then RPC the server to do the same thing.

Like this?
I put the RunClient on Run on owning client & the other node Run server I tried Multicast & Run on server but nothing seems to work.

I did put a print to know if it works. It works on the client & server but it does not do what’s after the print :frowning:

My raycast debug seems to go from the server pawn even when it’s the client character that triggers it.

Sorry for the late response I didn’t see your msg mb.

Thank you for clarifying it for me. I did it but I still have some problems with the grabbing mechanic for the client side.

I made it like you did and made a vid to better show what’s happening. The “Grabbing” print is happening at the absolute end of the GrabEdge function.

Here’s the vid : https://youtu.be/3SJtnQBHFI0

I don’t understand why it’s falling down instantly like this, looks like the system refreshes it’s location the next frames because it’s not supposed to be here???

Show me the Input code that calls CE_GrabLedge.

(post deleted by author)




Is all this code in the controller? If so move it to the character class. Have the Controller input call Events on the character class.

Also I’d personally only have the client call the server when it has successfully grabbed the edge, versus spamming the network at every attempt.

So Trace, Attempt Grab, On Grab → CE_GrabLedge_RunServer

I mainly use the character class to add the basic stuff linked to character actions.
I’m using interfaces when it has something to do with world objects like interactions.

The code for the ledgegrab is located in the climbsystem component on the character class.
I did this to not bloat the main event graph with whole systems. Maybe it’s disrupting and making problems in a way idk though.

I think there may be something wrong about how I’m referencing the controlled character or maybe spawning it. Here is the code for these tasks.


If you wanna look into it more I’ve put my project on a drive for anyone to look through it, I’m using version 5.4.4.
I’m completely blocked so any help is appreciated!
Link : project

For character ref just pull off the component ref and set self.

If you absolutely want to do it in the component itself, then use Get Owner → Cast

1 Like

Now that I know you’re using a component…


edit… Repacked Version to reduce graph space usage.

Nested functions

Can take this further by moving the client/server condition into the FClimbLedge function and use the bool return directly in a branch.

1 Like

Thank you so much Rev, it works!!
You did so much to illustrate how to do it, it’s so much cleaner now.

Can you tell me why the nodes you crossed out can’t be used in multiplayer though?

The index represents a client based on his/her join time. Your code was always looking at 0 which is usually the host/server. This isn’t guaranteed though. Host/server could be 1 and joined player could be 0.

With single player you are always 0 and there are no other players to worry about.

1 Like