预防游戏外挂

我们游戏的移动同步逻辑的基本原理是:单位在主控端(玩家自己的客户端)根据玩家输入执行移动逻辑,然后将位置点以及时间信息以一定的频率发送给从端,服务端以及其他客户端根据主控端发来的移动同步信息模拟、预测、纠正单位的位置。

基于以上同步机制,移动模块需要考虑三种外挂情况:
1.主控客户端伪造或篡改瞬移消息。
2.主控客户端修改本地内存中的移动速度。
3.主控客户端使用加速器

由于我们游戏所有的移动都是在主控客户端发起和执行,然后服务端跟随,所以瞬移也是客户端先执行,然后通知服务端。

为了保证客户端不能发送非法瞬移消息,我们将瞬移流程定义为:由服务端发起、客户端执行、服务端再验证。
1.服务端发起瞬移,但是并不将单位移动到对应位置,而是将瞬移信息发送给客户端。
2.客户端收到位移信息后,将单位移动到对应位置。
3.客户端发送一个瞬移消息给服务端,服务端收到后,将单位移动到对应位置。

基于以上瞬移流程,可以比较简单的实现瞬移防外挂功能。

服务端发送瞬移信息给客户端时,记录下来瞬移目标的位置。
服务端收到客户端的瞬移消息,进行以下验证:
若服务端没有发送瞬移消息给客户端,则瞬移非法。
若收到的瞬移位置与记录的瞬移位置不同,则瞬移非法。
基于以上流程,可以保证瞬移虽然是客户端执行的,但是仍然由服务端发起和验证。

猜你喜欢

转载自blog.csdn.net/ZGR_YJJ/article/details/126512429