Chickynoid, server authoritative character replacement

Also, chickynoid already has both hitscan predicted weapons and projectile predicted weapons. You don’t have to code any of that logic.

1 Like

so you are telling me I should instead predict when a player will charge again?, but how thats just not possible I mean think about it, how can you tell a player is gonna start charging?, I dont get it, why not just use lag compensation to tell when he originaly pressed click and let go of it and get the accurrate time, Could I get an explanation because im just so confused about prediction now.

Also I should have been clear on what type of game I am trying to make to maybe clear things up, This game is based on Untitled Melee Game, The mechanics are simple:

  • You can click to do a light hit which is faster and does less dmg
  • You can hold click and after 0.1 seconds it will start charging your attack (it has a limit tho)
  • Let go of of click while charging to perform your hit
  • You can block by pressing right click which can be held, blocking will also cancel your charging
  • You can unblock at any point by letting go of right click
  • Press Q to shove.

Shoving a blocking player causes him to stun so you can hit him
Hitting someone while he is blocking causes you to get stunned

It was originally a project written because at the time it seemed simple and I was just starting on learning scripting, then I started making it better, and better, at V4 it was actualy functional but it had issues with the anti cheat systems I implemented, because cooldowns were trusted to the client, same with hitbox and charge mechanic, it only checked if you were doing a state already to prevent blocking while hitting for example

Then I found out about valve’s server authoritative movement, and then chickynoid, I became facinated with the whole concept and since I always tried to do everything super secured I ended up rewriting the game for a 5th time with chickynoid.

Have you considered looking into luau’s new parallel feature for Chickynoid? My apologies if you already use it but I couldn’t find any references (other than in the .toml) on the Github.

I doubt chickynoid could be written on paralel luau, from what I read module scripts do not work as data that can be accesed from any script there, because any thread has their own copy of the module which does not syncs with other threads, meaning data stored by a thread in a module is non existant to other threads and chickynoid seems to be relying on the global behavior of modules a lot.

I just made a mod for chickynoid that adds footsteps that change according to the material you step on, Im posting it here because I think its neat and maybe someone is looking to add something like this to their chickynoid game.

Also calculations are completely client sided so it doesnt relies on the server to play the SFX.

3 Likes

Since Chickynoids is being sponsored by Easy.gg, are there any plans to make it fluent with the Knit framework? The code architecture in both systems vary a lot, and it would be amazing if Chickynoids worked alongside Knit.

I ask this because right now, Chickynoids has a very ‘interconnected’ structure where removing one feature would require removing it’s references from all it’s ancestor scripts. There’s Chickynoid, then ServerMods, then Weapons, leaving out the intermediates.

It would be really beneficial I think, if features were more independent like how it is handled in the Knit framework, where each feature has it’s own controller, which can grab a service and function accordingly.

I’m pretty sure that’d require a complete rewrite.

True. But if it worked with Knit, games could be so clean and modular, along with server authoritative systems. Too good to be true.

Also If I can comprehend the antilag or how Chickynoids handles rollbacks of feature modules, I’m sure I could rewrite it.

Alright I’ve broken it down to it’s barebones, turns out it doesn’t take in input but rather takes client’s position for sanity checking. That’s interesting.

I have everything figured out except updating a player’s position from outside the chickynoid’s “ServerMods” modules.
I still have to experiment messing with the physics. Chickynoids might try to revolt and rubberband the player back.

1 Like

You’re allowed to set any of the chickynoid.simulation variables directly on the server and they’ll be authoritative, position included.

2 Likes

Do you know in what script the thing that makes chickynoids send requests from client to server is?, ive been trying to find it all day by inspecting how weapons send a command and I go from module to module, first I had to read how registering mods work, then a bunch of other things and I keep going arround in circles.

also thats odd why wouldnt it use inputs, it sounds much safer and framerate wouldnt affect it if you use delta time, not like i know much about server authoritative movement yet, so maybe im just being stupid by saying this.

It does use inputs for commands

1 Like

that was a quick reply, anyways happy new year hope everyone is having fun right now.

I’ll probably consider using this (if i get it and player choice rigs (user deciding r6/r15) working) on games where movement isn’t a major factor, I wouldn’t suggest using server-authorative physics things in any game with many players and/or intensive movement, or if you just expect players to have terrible connections regardless.

Oh dont worry about the connection issues it runs fine, in fact its so good at handling bad pings that intense “pull” rollbacks almost never happen.

Will this support terrain water?

Also following to this I finally understood what MrChickenRocket was trying to tell me.

He meant predicting if we were gonna keep charging not when we were gonna charge

I have taken a look more indepth into various things inside chickynoid I stumbled into Projectile Sniper module script and while im still extremely confused about commands I think ill eventually get the hang of it, So far I know you can use the bitbuffer module to compress the packets from what I saw and send them over via commands although while checking the generate command module I saw that you need to hardcode commands which is a bit inconvinient but it works I guess.

I also discovered another solution that could be implemented using the antilag module inside chickynoid for compensating charge mechanics based on these diagrams, I will keep reading more how chickynoid does its cooldowns and more to learn if this is the correct solution or not.

image

2 Likes

Following to this heres the thing im working on for chickynoid

So I was like trying to implement “Commands” for chickynoid for my game actions (Blocking,Jabing,Charging,Shoving, etc.)

So after like 1 week of trying my hardest to understand chickynoid’s innerworkings I found out how commands tick!

Commands are part of the “GenerateCommand” mod, these are by deffault sent every frame chickynoid takes to the server and will get the inputs on that momment.

Problem is they are hardcoded and hard to add as :GenerateCommand() function is responsable for generating the final command sent to the server which is later picked up by :Heartbeat() and passed to the server, So theres really not an easy way to add your own commands to be sent to the server witjout forking and tampering with chickynoid

So I made this modiffication which I think works fine, right now im focussing on constructing commands, ill later focuss on Processing commands on the client so they also run client actions before they are sent to the server just how the :ProcessCommand() function does.

The moddification goes inside Heartbeat and the reason for that is uhh I dont actually have a reason i think it would have been better inside :GenerateCommand() but I forgot why

Heres part of the module that makes the commands get attached to the main command and also handles OOP creation of commands

This is pretty barebones and its missing stuff like the ProcessServerCommand function which takes charge of receieving the commands on the server checking what they have and running the respected functions assigned to these commands so they can run the server code for whatever we need.

Anyways that was my cool uhh project that im working on, If anyone knows a better way to do what I am doing feel free to tell me im just a dumb person trying to make a game with chickynoid!

1 Like