Chickynoid, server authoritative character replacement

The simple answer is: Most likely.

anything that you coded for default roblox humanoids, will not work here, itā€™s all custom, No tools, no player scripts, no server sided model replication, no roblox physics,no nothing!.

You must manually create a lot of systems yourself, and suffer!

3 Likes

Chickynoid V2, still for some reasons does not flags changes for other anim channels changing nor does it plays animations from other anim channels, despite characterData literally replicating records with other animChannel data included.

So I decided to update my CharacterModel script fork once again so people can utilize other animChannels once again on chickynoid V2.0

Enable other animChannel support for Chickynoid - Resources / Community Resources - Developer Forum | Roblox

1 Like

Iā€™m struggling to find out how the CharacterData.serialized is updated from the server.

The "event"s that are passed through the UnreliableRemoteEvents seem to mainly consist of frame numbers, syncing, and the direction that my character is facing, but no animation/serialized related stuff.

Is there a main way that all data is replicated to each client?

The whole state should just be there magically. The reason it seems minimal is that its doing a lot of work to only send deltas.

1 Like

Did it not work out in the end?

Yep.

We could barely get 64 players running well with this due to high server cpu demand when we shipped. Most of that time was spent managing packing buffers for clients, funnily enough.

So we went back to roblox with a list of things weā€™d like to get fixed and added to the engine before weā€™d try doing something like this again.

They were:

  1. UDP
  2. Shapecasts with margins
  3. Faster buffer packing operations
  4. Better actor performance for multithreading
  5. Ability to force players to render the world to a certain level of fidelity (graphics setting 1 players couldnā€™t see who were shooting them, even if their fps were high)

Since the closure, roblox have added 2 of those (udp and buffer), with shapecasts+margins coming soon.
Native Luau replaces the need for the better actor performance, actors in their current state are not usable.
Nothing is going to happen for #5, apparently.

So, once we had native luau, udp, and buffer, I went and updated chickynoid to 2.0, which was a significant rewrite that could probably handle 120 players pretty comfortably now.

But I donā€™t know if easy are going to release rift again.

7 Likes

Er, steady on there. They invested in this project so it wouldnā€™t have happened if they didnā€™t!

6 Likes

iā€™m currently having an issue where giant parts take an absurd amount of memory; i currently use a 1536x128x1536 part as a baseplate but it takes up roughly 13mb of vector data on both the server and client for some reason and even making it 1536x16x1536 or something still takes up about 3.4mb

edit: increasing fatGridSize in CollisionModule heavily reduced memory usage to a few kb but i feel like thisā€™ll have problems elsewhere

1 Like

Is there any way to make Chickynoid easier to integrate? The only thing keeping me, and various others from using it in our own games. The structure is too complex to work with. If it was more flexible and allowed different code structures, like a framework, it would be more widely used.

(I have followed this project very closely for years)

I think Chickynoid does allow for different code structures or a framework. You donā€™t have to do everything through Chickynoid. Yes, player movement, and weapons need to be handled partially or fully by Chickynoid, but pretty much anything else you can handle however you want to.

What are you specifically struggling with? Keep in mind that you donā€™t have to use a large chunk of the base project if it doesnā€™t suit your needs or isnā€™t implemented how you like.

1 Like

I did a little bit of research on what sweeping the player meant, And I discovered what a swept collision was, it basically prevents objects from clipping after calculating their new position, since it calculates their whole trajectory instead.

So as a cool experiment to showcase the coolness of chickynoid, I pushed myself with a velocity of 100,000 through a jump pad, into a ceiling thatā€™s 0.125 studs thin, and would you look at that, I did not clip through!
image

Very good physics engine.

3 Likes

The real answer to the question isnā€™t chickynoid sadly, authoritative framework must be done at the robloxā€™s engine side with just a single switch of a boolean value. What is done there is pretty good, rep to easy.gg team and to the author of the chickynoid, but honestly itā€™s just that what you can achieve without access to the engine side (not much, in terms of performance and compatibility, even though it seems not bad in the current state). I hope one day there will be possibility to have 500+ players with authoritative movement.

2 Likes

roblox humanoids run horribly on 100 player servers and their physics arenā€™t even calculated by the server, yet somehow chickynoids runs way faster with 100 players.

Humanoids are just horrible, and I donā€™t think I can ever go back to using them.

1 Like

Thatā€™s actually reassuring. Iā€™m yet to make ~200+ players game and I thought that humanoid can handle that. I suppose youā€™re pretty good at chickynoid (cus Iā€™ve seen your replies a lot of times in this thread), can you give me advice(s) how to minimize use of server resources? I only need x,y,z movement without jump / physics, so Iā€™ve thought thereā€™s a way to do that.

im not that good with chickynoid tbh, i still donā€™t understand it to itā€™s full extent, but regardless.

Use a MoveType to script your movement, you can ready the MoveTypeWalking script to read how the default chickynoid scripts work (on new version this code is found as method in the Simulation Class script)

esentially you just read the cmd and simulation and create your own character controller, you calculate the velocity your character gets pushed on, and use ProjectVelocity to step the simulation foward.

3 Likes

Do other players replicate to the local player when it is not able to see them through a wall or are behind it to prevent esp and save performance?

Is there a first person type of movement system for this?

1 Like

There is currently only a system which hides (stops replication) other players based on distance but you could change that to work with walls if you wanted to relatively easily

1 Like

I tried to break down the sample place to its basics, but I could not understand its structure, so it wasnā€™t of great help.

Iā€™m trying to add chickynoid to my game, but if someone could explain what code goes where, and what workflow is in place to add a movement/combat featureā€¦ I could work with it.

1 Like

Quick question @MrChickenRocket, what does the state.pushing property or flag on the simulation class do, I saw it being used by some MoveType scripts but couldnā€™t really understand itā€™s purpose.

I did noticed itā€™s apparently a server only flag?
image

1 Like