Hello!
I am trying to make an effective system for making Movesets (like in battleground games, anime games, etc.). They all have these very nice looking and perfectly executed logic in parallel. Is there any way to achieve this parallel with the maximized security offered in the systems they use?
Here is my current Setup:
Player Does Keybind/Button > Remote Sent to Server > Recieved by the Service, profiles the move and validates execution > Execution is passed to each module which needs to be executed (Server) > A remote fired back fires the Client “Containers”, or their side of executing the move > Proceeds with the modules working in parallel.
Now the above setup is like 500 lines in total, and its pretty good and very reliable in many ways. But sadly, direct move execution isn’t really something which has been going smoothly for the past few weeks. I fought over two types of communication between server and clients, using:
- Remote Events
- Remote Functions
But both of them have downsides. I patched some of these like false firing from other players through the Service Module (Adding security) and that each remote is cloned for each specific player. The downsides are:
- Events: One-Time, sort-of parallel communication where the client executes one block and back to server in that fashion. This leads to where the server can be hanged immediately or if the server has an error and immediately returns (halts) execution, the client has no awareness. I have to repeat code for EACH module and its getting annoying. For ex: I execute a move, and I miss. I do it again, the move plays the cutscene, but then somehow it just halts because the previous “move” container isn’t even halted, and is still listening to the events.
- Functions: I can’t really wait for these types of events. They always go from Client-Server, which is pretty much lack of security and breaking server logic. I just need proper code-communication where the client and server are SYNCED, and no loss of logic/security.
If you want some more context, I have no problem providing it!
Please help