Chickynoid, server authoritative character replacement

Moved my combat system to a weapon module instead to develop easier, and also added a state machine to it, so now we can take advantage of the deffault state syncing on chickynoid and just set the state with the state machine.

Look at it, its beatifull!, only issues im having rn is self:SetPredictedState() being janky but thats prob bc i am an idiot and not using right,and I just gotta learn how to use antilag module to do the hit reg.

1 Like

Why does your netgraph look like that? That’s not right lol. Yellow bars mean the client and server disagree about where you are.

2 Likes

Hey @MrChickenRocket, fantastic framework! I am excited to see the future of Chickynoid.

Now, one thing that really is barring me and another from working on a game using this is support for non-convex hull collisions for complex meshparts, such as a tree with many branches for example. Is there any news on when there may be support for that?

1 Like

Yep! I’ll be switching over to shapecasts once the margins are in. ETA soonish.

4 Likes

It does that when you tab out of a studio tab, I was controlling a different client, so it looks like that.

I also fixed several bugs and vulnerabilities, and implemented :SetPredictedState() in a better way i think, it’s still janky but it works.

You could try manually creating colliders for the branches using convex hull meshparts or parts/wedges fir now.

Are there any guides out there on how to start using chickynoid?

For a full PVP game, how hard is it to use this and have projectile weapons?

Also does anyone have more links to games that are published that are using this live, that we can check out?

Thanks

@MrChickenRocket I need some advice on this

I want to write a mod for adding more features to chickynoid, one of these features is adding the Roblox default system where characters point to where they are looking on first person/shiftlock, I am aware chickynoid.simulation.state.angle Already provides the angle and :ServerProcessCommand() command.fa already gives the camera angle/mouse position which can be used for head rotation.

However, this data doesn’t seem to be replicated to other clients by default, should I just use :SendEventToClients() to replicate it every step? or add it somehow to the worldstate characters sent to clients?

I also want to know what’s more efficient for this since hit points are not replicated anywhere to clients and I want to find a way to replicate them.

Good question! There is already a system for replicating visual data about each player to each player.
Simulation writes to a structure called CharacterData.
Add a new field to characterdata, write to it from simulation, and use it for rendering inside the client.

I am not 100% sure you can do this with just a mod, but you might be able to!

1 Like

So I guess using the :Step() function from a server mod I grab all the characterDatas inside the playerRecords.chickynoid.simulation.characterData and then set it’s angle property to simulation.state.angle

Thanks for the quick response!

image

You should be able to do it directly in a characterMod on the server. CharacterData is meant to be written to from the server simulation.

1 Like

I see, I am just not too familiar with characterMods but ill use them then.

So for assistance for at least hitpoints, character mod or even a server mod work just fine.

If you go the server mod route, you can create a player handler module that handles the chickynoid record data:
image


You can sync the characterData through simulation or brute force it before it’s packed and sent out through ChickynoidServer:Think()

Make sure you have the default characterData structure updated beforehand(i.e packFunctions, lerpFunctions, and the metatable):
image

Player characterData is now shared between clients through ChickynoidClient.characters.

For updating humanoid health values, the Client>CharacterModel:Think() function reads the characterData via dataRecord by default. It can be used like this:

Player’s designated humanoids now have their health/max health sync.

I also recommend updating the resimulation handler within ClientChickynoid:HandleNewState() so that it accounts for moveState changes on top of just a position magnitude change(ActiveAnimation is how I deal with animations and motion interpolation, so ignore that):

1 Like

Ok but how do I even read otherplayer’s characterData from the client, all you can read is characterModel’s inside the Client.characters table. I literally just noticed the characterCreated event only provide the characterModel.

Unless there is something faulty on your end, this is what ChickynoidClient.characters should look like:
image

If another player/npc/bot is rendered, this is what my characterData of them looks like:
image

Oh yeah I just noticed that it was my issue, I also noticed angle is replicated already by default which is what I want, so ill only replicate the camera angle for the head movement then, thanks for the help!

Hello,

Any updates on docs? Even a Beta version of docs?

Also will there be some .rbxl files to check it out, perhaps a basic meele weapon and basic gun?

Thanks!

There are basic guns included, They are weapon mods, I believe if you download the default chickynoid placefile you spawn in with a sniper rifle, Press Q to fire, you can also give yourself a submachine gun.

Ah, ok I will check it out then, thanks!