Chickynoid, server authoritative character replacement

I needed that confirmation as permission to do it - you don’t know until you try!

and try I did.


(just pretend for now that the character would fill up the size of that red box)

Here’s with debugging hull expanded visuals enabled.

It did take some trial and error though. I cut a lot of unused bits of code out from the CollisionModule to make it easier to work on. The unexpected twist was figuring out how the pattern for returning hulls from terrain cells was different from returning hulls from instances in workspace. I had to modify TerrainModule:FetchCell() to include expansionSize (aka playerSize) in its parameters.

For a short explanation, the hulls for instances, meshparts, and terrain exist in a spatial partitioning grid (implemented as a hash map). Instances and meshparts have a condition where they might exist in multiple cells of the grid and would be cached in the fatGrid. Depending on the position that :Sweep is called, the CollisionModule finds the appropriate cell and returns all hulls within that cell. From there, its as simple as multiplying the points of each hull by an expansionSize (Vector3 * number) and caching it.

Instances:

MeshParts:

Terrain:
image

For networking, I had to change the :SendCollisionData() parameters to include playerSize as well instantiate CharacterData with it. Big shoutout to @CCTVStudios for the mini-tutorial on how to work with the CharacterData module.

image
image
image

Most of the time was spent understanding what was really going on (as well as restoring code I shouldn’t have deleted :crazy_face:). It looks simple but there’s a lot going on that Chickynoid already handles.

That’s as far as I got today. I’ll return to this in a few days when I get the time. I still have to implement a way to update playerSize and clean up unused memory.

2 Likes

I’m glad you found my tutorial from like a year ago useful.

1 Like

I had no idea you moved to a different account! I would lurk this thread when I first discovered Chickynoid (about a year or two ago). You and amp’s work inspired me to pull the trigger late this year and work with the library.

The biggest hurdle is simply lack of documentation. I don’t have a lot of free time, so I try to get as much out of Roblox development when I can. Posts like yours make it easy to know what to look for to change something.

I don’t want it to go unappreciated in a project like this, so thank you again :smile:

1 Like

The chickynoid humanoid less rig is now out for the public!

Citrus R6 - R6 rigs without humanoids - Resources / Community Resources - Developer Forum | Roblox

Finally! get rid of humanoids from chickynoid once in for all!

1 Like