index.htmlAsheborne is a dark fantasy PvP game currently in active development. I am the lead scripter for this project.
Theres many systems involved in this project, so feel free to read more details below.
It has a core system that features state machines, state priority, input buffering and an event-driven architecture. This core system is the foundation of all the actions the player can do, from sprinting to blocking and attacking to full on abilities. The system primarily focuses on when actions can be performed, so every action gets validated against the players current state and cooldowns before it runs and every rejected action return the reason why they failed so the input buffering system knows whether to process them or not. This system runs in the server so clients cant cheat and do stuff like attacking while being stunned.
On top of this, there is a projectile system that doesn't use default roblox physics. Projectiles are simulated in both in the server and client, but both do different jobs. The server is the one that ultimately decides the hit, while the client simply visualizes the part. Both server and client uses a shared projectile solver, and the equation I used is the SUVAT equation. The server is the one that initializes the projectile while the client receives the signal. To sync both positions, the client calculates the time it took for the server to reach it, and uses that accordingly.