Chickynoid, server authoritative character replacement

Hey, I joined the game and have found some issues:
If you press any movement key while jumping, then you will continue bouncing even after releasing the movement key:

The upper-torso collisions do not seem to be registering properly:

Additionally, some questions:

  • while not fully common, there seem to be some rollbacks here and there. Would the ideal case be for there to be no rollbacks, or are they more or less expected at times?
  • How would BodyMovers (BodyVelocity etc) function with this system? Would parenting them under a character’s collision box exhibit proper behavior, or is that TBD?
4 Likes

How would BodyMovers (BodyVelocity etc) function with this system? Would parenting them under a character’s collision box exhibit proper behavior, or is that TBD?

Attaching existing roblox physics to these characters is not part of the design at all. They’re not part of the roblox physics simulation.

while not fully common, there seem to be some rollbacks here and there. Would the ideal case be for there to be no rollbacks, or are they more or less expected at times?

It depends on what is causing the rollbacks. You shouldn’t be encountering as many as you are, I saw your netgraph and it seems you were having issues maintaining a smooth command stream to the server (vertical yellow security bar warnings) - were you having packet loss?

1 Like

The first (that I know of!) game using Chickynoid has been released:

8 Likes

This plays really nicely and as a regular player I would think it was just the normal humanoid! The only two things that I would need for this to be usable in my own game would be PreciseConvex mesh collision and moving platform support, both which are likely incredibly difficult to implement.

1 Like

For me the rollback is alot, I keep moving forward and my character (teleports) atleast 1-2 studs back. idk the cause,i have a good pc and a good internet.

but other than that, i do wonder
 this is optimal for 2v2 games in a smash bros ultimate style? just asking


Finally, I noticed that this thing really shines when there are more NPCs/Players. Because i only experience rollbacks when they are less than 20-ish players/NPCs. Now its all smooth when theres more than 20. Rn im testing 40 players and its going smoother than before.

There is a comprehensive netgraph for diagnosing connection problems. If you’re getting rollback on default chickynoid settings it should be very clear in the graph what is going wrong? Post a screenshot!

Here’s a video instead.

When someone has massive data drops like you’re seeing, there are server settings you can use to not trigger a rollback - eg: speedcheat tolerance. When the netgraph freezes like that, it means no data from the connection is arriving, and then arrives all at once. Your effective ping is spiking to over 1000.

To put it simply, your internet has a hole in the bottom and all of your data is falling out.

Are you on satellite?

Nope, Im using Bell internet, its fiber optics and its normal internet. I dont use Starlink or any Satellite based internet services.

I hadn’t the motivation to skim through the source code but can anyone give me a rundown on how they do their custom collision calculations?

I’d be happy to do so. IN SONG FORM! :crab:

:musical_note:Collision detection is done
By checking parts one by one
And producing a minkowski sumđŸŽ”

Really though, there is a few things going on:
The core of it is that players are a fixed size axial bounding box, and all the collidable objects are convex hulls. I can use that to do a trick that reduces collision checks for swept boxes to a ray vs convex hull check.

Terrain produces the same kind of convex hull for every 4x4x4 unit of terrain.

The speed comes from spatial grids making it so we only produce hulls when needed (a slightly expensive operation), and multiple levels of caching.

18 Likes

How would I be able to use this in a obby game?

(PS: I don’t understand a thing of this complex but excellent anticheat)

Clone the example place and make an obby :slight_smile:

Hmm yea but I already made the obby
 Is there any way I can put the anticheat in my already made obby

Yes, but it’s not an anticheat. It’s a whole big system. Copy the packages folders.

5 Likes

I wish Roblox added toggle to switch between server and client character. Server characters like this would be great for combat games where exploiting player movement would result in unfair advantage, while client characters could be used for games like tower defense simulator where exploiting character would give no real advantage.

Amazing resource.

4 Likes

Damn, so many updates! Have we gotten support for swimming and animations yet?

This is a great asset to any self respecting Developer! Although nearly all exploits can be patched by simply giving the Server network ownership of the character (which I assumed this module did) this provides a seamless, all sorts of ping friendly controller and is a powerful tool for the community.

I haven’t had the time to use it myself yet, but I want to pitch an idea to patch ESP - in the vein that FPS games do - by checking if the other players are in your Field of View (by e.g. raycasting) on the Server and rendering them in only when this is the case. I’ve done this for R15 rigs, but due to a lack of Server authority it was entirely client side.

1 Like

Yep! Chickynoid already supports most of this! Server mods (chickynoid has a modding system) can dictate if one player can see another player.

If one player is marked invisible to another player, they get completely removed from replication, nullifying anything client side like esp.

The problem is if you do these checks on the server players might pop as they appear around corners due to lag, but it might be fun to try?

3 Likes

Are you still not interested in supporting R6?

1 Like