游戏要怎么才能防外挂,比方说枪战游戏,就以射速挂为例,假设游戏的枪械射速为100,对于不同的枪械射速肯定不同,然后在相应的项目文件代码结构内给射速设定一个上限,以100为正常游戏数据,PS:这里不考虑游戏道具加成属性,当外挂修改数据为>100时,代码内就能判断是否大于或小于,超过这个数值时,可以编写一个命令,比如自动收枪,不可拿枪等命令。
ps:我也只是好奇,并没有怎么去了解游戏的开发,只是厌恶外挂毁掉游戏,突发奇想的
这样行得通吗?懂游戏开发的能告诉我吗?
我们游戏的移动同步逻辑的基本原理是:单位在主控端(玩家自己的客户端)根据玩家输入执行移动逻辑,然后将位置点以及时间信息以一定的频率发送给从端,服务端以及其他客户端根据主控端发来的移动同步信息模拟、预测、纠正单位的位置。
基于以上同步机制,移动模块需要考虑三种外挂情况:
1.主控客户端伪造或篡改瞬移消息。
2.主控客户端修改本地内存中的移动速度。
3.主控客户端使用加速器
由于我们游戏所有的移动都是在主控客户端发起和执行,然后服务端跟随,所以瞬移也是客户端先执行,然后通知服务端。
为了保证客户端不能发送非法瞬移消息,我们将瞬移流程定义为:由服务端发起、客户端执行、服务端再验证。
1.服务端发起瞬移,但是并不将单位移动到对应位置,而是将瞬移信息发送给客户端。
2.客户端收到位移信息后,将单位移动到对应位置。
3.客户端发送一个瞬移消息给服务端,服务端收到后,将单位移动到对应位置。
基于以上瞬移流程,可以比较简单的实现瞬移防外挂功能。
服务端发送瞬移信息给客户端时,记录下来瞬移目标的位置。
服务端收到客户端的瞬移消息,进行以下验证:
若服务端没有发送瞬移消息给客户端,则瞬移非法。
若收到的瞬移位置与记录的瞬移位置不同,则瞬移非法。
基于以上流程,可以保证瞬移虽然是客户端执行的,但是仍然由服务端发起和验证。