Multiplayer AI movement replication rubberbanding and performance issue

What is causing all the rubberbanding?

Is it unrealistic to think each player can have at least 50 AI soldiers each and not see rubberbanding?

This is what is going on right now in my project:

(I don’t say anything in the video so you can mute sound, sorry about the sound, I had a twitch stream open in the background without knowing it because I don’t have my headset on)

Is it only possible to fix this problem by doing some c++ magic? I’ve been focused on only this problem for 2 weeks now, googling and testing, no luck.

What’s the grand idea to fixing this?

You don’t have to do all the work for me, just point me in the right direction.

I don’t care about cheat protection, I guess that with this in mind I can relieve the server from a bunch of work and that way eliminate both rubberbanding and performance issues?

I think this issue will be the death of my project.

Found this on the smooth sync plugin post, but I don’t know how to do it in my own project with blueprints:
Smooth Sync differs from Unreal’s Replicate Movement in two key ways:

  1. Using custom interpolation, as described in detail here, it can be set up to your game’s specific needs.

  2. Allow client owned objects to determine the position of Actors. This removes the need for client side prediction (or “player prediction”) for certain Actors.

Hi, 100 AI should work.

You could use the network profiler to look what uses up your network bandwidth Network Profiler | Unreal Engine Documentation. First I would take a look at how much performance those spears use up, since if they are replicating right now, then you can save some performance there by not making them replicate, but just spawn them locally on server and client.

So since Chrudimer’s post I’ve been reducing a lot of unnecessary replications and now I believe there is only the replicated movement left.
I will be revamping a lot of the spear throwing process once I’ve improved on the NPCs’ movement replication.

The NPCs only get move orders when I move, meaning there is no functions running for movement while I stand still. I have opted not to use Behavior Tree this time around because I am strapped on time and I didn’t know how to make it stop and start on command, I will have to look in to it later.

TLDR: Why is it still rubberbanding? I’ve included Network Profile statistics in the video.

What you can’t see in the video is that the NPCs’ overall waste is 14.66%

I checked ping from client while 100 NPCs’ follow and it says it is between 2-7.
I checked it with PlayerState->Ping

If I am not saturating bandwidth, and there is a very low latency, then what could the problem be?
Any ideas?