Chickynoid, server authoritative character replacement

After tinkering around with the client command deltatime, I found out that on hybrid and uncapped you can almost freeze your character’s physics simulation. This happens when setting the command’s deltatime to 0 on the client.

I wonder if it would be possible to compare ping times, to make the client matches up with the server. If the client has fallen to far behind and the ping times are not aligned with the server, then force the server to wipe any unprocessed commands and simulate physics for the time gap of total client command deltatime vs server time.

Yes, that feature exists but is disabled, search for antiwarp. It’s unpleasant because it forces a mispredict.

1 Like

Two main Problems

1: server load. Running 60 players server authoritative and a terrain map is just too slow to keep the server running well right now. Start of the game server was dropping to like 20fps. This will improve once roblox provides us with better collision queries. Smaller servers or not using terrain avoids this issue, but not really an option for rift.

2: laggy players + lack of unreliable remotes: this is harder to work with. TCP streams/remotes tend to logjam up on packetloss heavy connections and they have a miserable time rubberbanding around.

7 Likes

This why I have a bad impression on Chickynoid, I remember playing Rift Royale and it was horrible.

@MrChickenRocket I can see that it was the game’s fault for misusing your creation

What? No! We worked together hard to get a good experience for most users.

13 Likes

Shame this didn’t turn out to perform well at scale. I figured there would be problems with Roblox’s ordered/reliable remotes considering these systems are mostly designed for fire-and-forget UDP. I know Roblox did an Exploit Prevention survey but that was all the way back in November 2021. I really hope they make a push towards combatting this nonsense because it severely restricts the types of games we can create. If they don’t want to implement this themselves they should at least un-blackbox the humanoid and give us unreliable/UDP remotes.

Unreliable/pure UDP remotes are a must, regardless. I’m deeply disappointed in Roblox for not having support for unreliable remotes which would improve chickynoid. Unfortunately, there is not much of a viable workaround.

3 Likes

Roblox really needs to provide better detection methods for anticheat developers.

I finally got a chance to improve UFPS:R but one problem is that i’m confused how am i able to get acceleration work with R6 since it provides Mobile support, besides making R6Rig ported but nothing happened instead. (still runs for R15)

No, this is not the problem. It’s something Roblox can improve on, but it is not the main problem. Better detection methods wouldn’t stop exploiters for long. Games like Valorant don’t have movement exploits because of server-authoritative movement like Chickynoid- this is impossible to do feasibly on Roblox due to the lack of unreliable and unordered remotes. We, as Roblox developers, are forced to use a system that sacrifices security for user experience on lower-end connections and devices. That would be solved if we were able to use unreliable and unordered networking systems.

That’s the real problem.

2 Likes

Just to be clear, Chickynoid works great for most players under reasonable network circumstances - even a small bit of packet-loss is usually not noticable.

But one of the problems Rift ran into is that for a small percentage of users (usually satellite internet) is their packet loss is more like major traffic congestion: the packets all arrive, but are super delayed and because its TCP/IP like, all traffic stops in the meantime. Small bits of packetloss end up presenting as major lag spikes, and the server has no choice but to rubber-band them.

Unreliable remotes will make that particular type of packetloss the same as it is in other shooters, a minor mostly unnoticed glitch.

4 Likes

I’d like to add to this- Roblox doesn’t use TCP, they use RakNet which is UDP with a reliability layer. I’m not 100% sure about this part, but I’m pretty sure that without a reliability/ordering layer, ping would be reduced.

Conclusion is the same though- unreliable remotes are a need.

1 Like

Satellite Internet is fine enough, with good latency (under 100 ms).
My cabled internet usually gives me about 150 - 280 ms

I just found this and im going to run tests on it, I wanna see how good it is, i have been trying to write my own netcode for character movement since trusting the client and writing checks for stuff like how fast a player is moving in a certain time seemed cheap to me, I always wanted to use valve’s structure for multiplayer networking and chickynoid might seem to be the way to go

Thank you so much for writing this, literally it must have taken ages to do so.

This seems like a very good system, but i have a few issues for some reason: (i downloaded the place rbxl from the github because i didnt wanna build it all together manually btw, hope that helps)
-Theres a duplicate character that spawns with every player, and that one actually works well, for example it gets teleported because a round started
-Equipping tools instantly crashes your client
-Holding space bar makes me fly up
-Pressing Q does a random gun sound and also makes the server go up to 9000 ping when doing that, and brings my client down to 2 fps
-Sometimes I float when spawning

My game doesn’t even use terrain either, but it does use mesh parts, unions and normal parts, and I didnt change anything at all to chickynoid (except for removing the 2 lines in the chickynoid script thats in server script service which were spawning bots), and also i changed the recreatecollisions call in the chickynoid script to instead recreate workspace and not gamearea

1 Like

You need to disable Players.CharacterAutoLoads

1 Like

That only fixes the duplicated character though

You need a gamearea due to a limitation in chickynoids collision systems atm.

2 Likes

Is there a way to make the character’s rotation replicate when using shift-lock or first person? Right now when using slock or fp to rotate the character it doesn’t show the rotation to other players. The only thing I changed about the system was I replaced the R6 rig for the R15 one.

Also just want to say that this is a really cool system and is perfect for my project. Thanks for releasing this!

1 Like

Chickynoid is really, really damn cool, thank you for releasing this. I have been working to understand every line of coding and the exact process of how everything works. And now I’m on my way to create my own server authoritative system.

2 Likes