Creating Dynamic Spline Mesh Components in Multiplayer

I’m trying to make a beam projectile that is allowed to curve smoothly based on mouse movements. I have opted to use spline meshes to accomplish this as using beam particle systems didn’t look as good.

This is how it looks in-game:

http://puu.sh/jTcCR/722a78c0fb.jpg

Now it seems to be working perfectly so far. The problem is when I start playing with a dedicated server. The whole objective is to get this working over multiplayer. Unfortunately it didn’t look nearly as good as the one above:

http://puu.sh/jTcn7/f58457feec.jpg

I wanted to post my method here in hopes that someone could tell me what I’m doing wrong. I’m not even sure if using spline meshes is a good idea considering it will be played over the network due to performance cost.

Anyway, what I do is to have two spline points: 1st one set to the starting point of the beam and the 2nd one is always updated with the current location of the beam head. I store these two vectors in an array and update it on tick.

SplinePoints[0] = InitialLocation;
SplinePoints[1] = GetActorLocation();
Spline->SetSplineWorldPoints(SplinePoints);

After updating the spline I then proceed to creating the spline meshes every tick. I have a multicast function creating the spline meshes and storing each one into an array so I can destroy all of them should there be a collision.

USplineMeshComponent* Mesh = ConstructObject<USplineMeshComponent>(USplineMeshComponent::StaticClass(), this);
Mesh->CreationMethod = EComponentCreationMethod::UserConstructionScript;

const FVector StartPos = Spline->GetWorldLocationAtSplinePoint(0);
const FVector StartTangent = Spline->GetWorldTangentAtDistanceAlongSpline(Spline->GetDistanceAlongSplineAtSplinePoint(0));
const FVector EndPos = Spline->GetWorldLocationAtSplinePoint(1);
const FVector EndTangent = Spline->GetWorldTangentAtDistanceAlongSpline(Spline->GetDistanceAlongSplineAtSplinePoint(1));

Mesh->SetStartAndEnd(StartPos, StartTangent, EndPos, EndTangent);

RegisterAllComponents();
SplineMeshes.Add(Mesh);

Now this is all happening on tick. Though I try to limit the creation of the spline meshes by making sure I don’t call the function while a spline mesh is still being created. I just don’t understand why the spline meshes are sparse when it’s run over the network. Perhaps anyone can help or if someone has a better approach?