How do I negate the "choppiness" of a server-side fighting game?

Edit: After some more coding, I found the solution to the problem by implementing fixes to known memory leaks. Roblox has yet to actually fix some of these… which is odd.

Hello,
I am currently working on a fighting game known as Revolture’s Trigger: Collider’s Curse and I only recently released paid early access to the game as people wanted to see what the game has come up to with its half-year development progress.

I immediately realise that players are dissatisfied with the fact that the game is not “smooth”. What they mean by this is that the combat in the game is sluggish, laggy, and for some reason has significant delay even with good ping.

I went further into this and conducted a quick analysis of the game when running normally - And everything seemed fine. The server was using 755mb average, which seemed completely normal. I felt like the game was running smoothly, My ping was averaging 50ms at the time, but others did not with that exact same ping-range.

Before you question it, I know I have no virus plugins, virus models, or anything of the sort, nor does my team. Everything imported into the game was made by hand by my team and me.

This brings me into a dilemma. I’ve currently tried to release updates that try to make the game “smoother”, like adding culling to the server and client along with other optimizations that help improve FPS and ping. Due to the game’s system of relying on the server for initiating attacks, I also added an animation that fires right before you actually attack to tell the player that they have indeed pressed the button corresponding to their attack.

The game also makes sure to use TSPlus, another module that is provided on the dev forum that allows for client-replicated tweening, among other things like replicating the majority of the “Heavily computational” effects to the client.

This did nothing and for some reason, people are still saying that the game isn’t smooth. I’m not sure what this means anymore - If it means the very slight delay in when you hit an attack vs when it actually registers, or what.

Seeing as the game’s codebase relies on the server through modules, I can’t really rewrite the game without spending the rest of the year painstakingly reconstructing the game AGAIN. (just so you know, this is the 3rd attempt at a framework remake.)

Are there any tips or tricks from other people who have been in the fighting game scene in the past that would help assist with a more lenient server-side fighting game? Anything would be greatly appreciated and be of utmost help.

P.S: The game isn’t FULLY server-side. There is alot of the game that is based on the client, but the main framework relies more on the server than the client for the purposes of both ease of use and the reduction of exploits.

Have you tried firing to the server to attack and then straight after playing the attack animation via the client?