Chickynoid, server authoritative character replacement

Not yet, but soon, max it can do is convexhulls on meshparts, I suggest you to put colliders on said unions to work arround the issue.

Chickynoid seems to be a great way to manage player movement, but what about fast paced games?
When character can teleport, dash, wall run and other stuff that makes it hard to handle

If they’re implemented correctly, fast paced player movement is what chickynoid does best :slight_smile:

1 Like

Can I change the CollisionSize for each player?

Not without updating the collision module to support variable sized queries. It’s not a big job, but not default supported.

1 Like

Can someone explain how are characters keep getting duplicated on the client when I set my custom character?
image

I lost :sob:

Does anyone knows a way to get player collisions?, In my game the hit registration feels horrible because players collide into each other causing hit regs to just miss them, and also its annoying fighting people and having them just walk through you.

I am aware that if player collisions were turned un running into people would cause rollbacks because the positions of other players are delayed, so if the client’s simulation just resolves the collision against a player, the server wont agree because that player was not there. As far as I know client prediction isn’t a thing in chickynoid so this is probably what would happen.

I don’t mind having these rollbacks as they would be 10 times better than having people clip through you.

I modified the MoveTypeWalk script to play 4 directional animations!

if anyone wants to do this, just use this logic on the part where the walk anim is played and change it to this:
– Play animation according to direction the player is facing and wish direction

			-- Convert data to CFrame
			local AngleCFrame = CFrame.fromEulerAngles(0, self.state.angle + math.rad(180), 0)
			local WishDirCFrame = CFrame.fromEulerAngles(0,MathUtils:PlayerVecToAngle(wishDir) + math.rad(180),0)
			-- Get dot products
			local LookDotProduct = AngleCFrame.LookVector:Dot(WishDirCFrame.LookVector)
			local RightDotProduct = AngleCFrame.RightVector:Dot(WishDirCFrame.LookVector)
			-- Pick Animation
			if LookDotProduct > 0.5 then
				self.characterData:PlayAnimation(Enums.Anims.FrontWalk, Enums.AnimChannel.Channel0, false)
			elseif RightDotProduct > 0.5 then
				self.characterData:PlayAnimation(Enums.Anims.RightWalk, Enums.AnimChannel.Channel0, false)
			elseif RightDotProduct < -0.5 then
				self.characterData:PlayAnimation(Enums.Anims.LeftWalk, Enums.AnimChannel.Channel0, false)
			elseif LookDotProduct < -0.5 then
				self.characterData:PlayAnimation(Enums.Anims.BackWalk, Enums.AnimChannel.Channel0, false)
			end

Obviously make sure to load these anims first and also write the Enums for the anims into the Enums module.

4 Likes

Check if hitboxes intersect, if so apply velocity in the opposite direction like how boids are separated, I used this for bots so I just updated their move command accordingly instead.

Hey, can someone tell me what should I do regarding this error?
: While I am trying to export chicynoid to my own place, there are two errors that occur:

I tried fixing them but I didn’t have enough time. Has anyone encountered a similar issue or has a solution to it?> Thanks in advance

@MrChickenRocket , it looks like the demo scene isn’t working anymore. Could you take a look please?

1 Like

I’ll get on that this weekend still traveling Atm

1 Like

All done, version online now loads again.

1 Like

It seems that the animate script on the visual humanoid doesn’t load mood animations properly? It loads the default mood regardless of which one is set.

Awesome resource, and I’m really glad this exists! I’ve been thinking about implementing rollback since 2020, but so many devforum threads thought it to be “impossible”. Boy you proved em wrong. On another note, do you think you could provide some more in depth tutorials on how to implement this into a game? I’ve been developing a 3d platform fighter for 2 years now and I’ve been really wanting a robust character replication system. For the past few months I’ve been using Roblox’s Beta Character Physics Controller (which is great), but still relies on delay based netcode (and is really buggy when switching the network owner). I really would like to use this system, but obviously it’s completely incompatible with Roblox Physics forces. Perhaps a more in depth documentation would help me achieve my goals and make implementation just a tad bit easier.

After finally understanding kinda how characterData works, I set a new dataType as vector3 for characterData which includes cmd.fa and set this data to be lerped via chickynoid’s lerp functions.

And now I just read this data on CharacterModel:Think() to make head movement!!!, ill probably publish this code to the Inmerse mod i did so people can implement it themselves.

2 Likes

Painfully difficult to change the standard character model when using the wally package, due to the rig being checked into the package. The override for :GetCharacterModel doesn’t work either, as the CharacterModel class has not been updated to support this. Makes the wally package unusable for any custom rojo project.

hey I’m having an issue with chickynoid,
I have an empty baseplate on which I have copied all the scripts and parts necessary for chickynoid to run. But when I playtest on that game for some reason roblox still spawns their own character, so I end up with the chickynoid charater, which is the one that I control, plus the roblox R15 character which stays idle on the spawn point and I cant really understand why, so if anyone can help me it would be great.

screenshot of the issue:

and also it seems that the ui gets doubled for some reason.

thank you in advance, and sorry for the essay

I’ll not sure but I think you have to disable character auto load

yeah you’re right, I was looking at the wrong property mb
edit: this also fixed the ui duplication problem

1 Like