主要想了解一些有关游戏架构方面的内容
游戏战斗计算放在客户端还是服务端
战斗放在客户端
优势:
1、对网络条件的依赖减小。如断网,掉线,延迟等。
2、更好的战斗表现与更佳的战斗体验,如降低延迟以及更流畅的节奏感。
劣势:1、防作弊开销增大。
外挂
外挂的基本概念:
一般是指在电脑运行中,一个程序通过某种事件触发而得以挂接到另外一个程序的空间里(常用的触发事件有键盘触发,鼠标触发,消息触发等),挂接的目的通常是想改变被挂接程序的运行方式。
我们都知道游戏分为单机游戏和网络游戏。单机游戏的外挂只是修改一些游戏数值,而网络游戏的外挂则涉及到网络数据的拆包与封包。
客户端作弊的四种途径:
1、反编译并修改源代码。
2、修改客户端运行内存。
3、修改客户端的配置表。
4、用抓包工具修改协议内容。
基本介绍——外挂是怎么写的?
防作弊途径:
1.服务端检测客户端发来的包的合法性,对收到的数据做有效性验证。
如ARPG手游,可以将本场战斗的关键数据按照时间节点打包,最后与服务器交互的时候发送给服务器。设置一系列指标并分配权重,计算阈值,偏离阈值太远的判定为作弊。
可能会因为需要保证安全性来增加数据校验的频率,这样会加重服务器的负担,如果校验频繁出错也许还会造成部分用户回档。
对于外挂的一些处理办法。
对于一些奖励可控的系统,例如刷一次副本这种。如果发现玩家使用了外挂,不一定需要去全部纠正他的数据。可以根据数据差异的严重级别给玩家 记录 一个 作弊值。 当作弊值达到一定程度的时候,封号就可以了。 当然,可能会导致误封,这个得自己考虑了。
2.客户端与服务器都进行战斗计算。一定时间间隔周期发消息验证。
如果是简单战斗,建议前后端都用lua跑同一套战斗逻辑代码,这样做校验起来正确率比较高,也比较省事。
3.客户端仅限于战斗计算,其他资源产出,属性养成等均与服务器交互。
4.增强战斗体验,让玩家主动放弃作弊想法。
(笑了笑)
客户端会有外挂、服务端网络要求高