How Could You Make Rollback Netcode?

A while back I tried making a combat system. The type of combat I enjoy is very face-paced reaction heavy “Sekiro-like” combat. So that’s what I went for. Most things felt fine when testing in studio however if I tried to actually play the game with a Roblox server, due to states being handled on the server and the latency between switching states and all of that, things felt very off and clunky and bad. I recently learned about Delay and Rollback netcode for fighting games and I feel like that could be extremely useful for making in-game interactions feel a lot smoother.

My question is: Is it possible to implement something like this on Roblox, and if so where would I even start?

(The research I’ve done led me down a lot of fighting game talks, they seem to use an input system where inputs are logged and the characters play out different actions based on the inputs. Due to the games being made to be deterministic, this works. Would I have to do something like that?)

1 Like

Anything’s possible. I don’t recommend it though. RemoteEvents are a sort of crude abstraction for the low level sockets that games use for this sort of thing. You can’t even be sure when the task scheduler will decide to send your message. Every message has a data overhead of at least the remote’s ID.

You can certainly try to do this, and it might be possible with some workarounds and trade offs, but it won’t be easy and will always be less good than games where you control the actual engine.

Anyways, I had another discussion about this here: Custom Character Replication Research