0
\$\begingroup\$

We're creating a MMO and I wonder is RPC safe or not ? Isn't RPC easily hackable by injecting to client and what is the security layer of RPC on Unreal Engine ?

For example; a player is walking and sending that information (new position, rotation etc) to other players, can't that player change movement speed or position with injecting ? What is validating; is that movement is valid or it was a hack ?

I checked on Google but didn't get answer for my questions.

Thanks o/

\$\endgroup\$
  • 1
    \$\begingroup\$ It would be easier to explain a few things about RPC or at least give us a link. A quick google search has a plethora of different results about it. Also, a rule when doing anything in networking is, never trust the client.When a player is walking, the server handles where the player lands, and sends it to all clients. When a player clicks to move somewhere, it sends that information to the server, and the server decides if its a valid move and if the player should proceed. \$\endgroup\$ – TomTsagk Aug 24 '18 at 11:15
  • \$\begingroup\$ @TomTsagk; there is built-in networking system in Unreal Engine. I already done with socket but I wondered about RPC too.docs.unrealengine.com/en-us/Gameplay/Networking \$\endgroup\$ – ahmetertem Aug 24 '18 at 11:20
1
\$\begingroup\$

Unreals' RPCs are just another mechanism for communicating data between clients and the server. They're not specifically about providing any kind of secure channel: that's your job.

You can mark an RPC as WithValidation and then implement YourRPC_Validate. As explained in the documentation, this provides a mechanism for the server to check the RPC inputs. But all it can do is return true or false, and if it returns false the client is simply disconnected.

That behavior may be sufficient for some cases, but if you want really robust anti-cheat verification the onus is still on you to provide it in your server code yourself, whether you use RPCs or replication or bare sockets to communicate the data is largely orthogonal.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.