在游戏中,合当地使用WPE可以减轻玩家的重复操作,但是利用WPE刷bug作弊,会影响游戏平衡,故意大量发包还会导致全服集体卡顿。因此,很多开服的GM对此深恶痛绝。
以海盗王游戏为例,怎么封WPE呢?
首先,WPE是截取游戏的封包,然后利用WPE的发包功能,重复发送之前截取的一个或者多个封包,实现游戏重复功能的操作。这里不谈高手可以解密封包修改再加密发送的特例,这种情况是无法封的。
针对一般人的使用,我们可以从理论上提出这样处理:客户端每次发包给服务器都是唯一不可重复的,那么WPE就失效了。
具体实现方法就是:客户端连接成功服务端后,双方设定一个起始封包编号,然后客户端发给服务端的每个封包都赋予唯一的递增的编号,同时服务端每收到一个封包,都比对自身的编号是否跟客户端的编号相等,相等的话为合法包,正常解释,不相等的话,肯定是WPE截取后重发的,直接丢弃掉不处理或者立即将发送者断开连接。确认合法封包后,双方都把封包号继续递增一次,保持相同即可,为下一次发合法封包做准备。
经过反复尝试,在海盗王游戏中实现了,如下图:
我们看到,正常发包时,双边的编号都是一样的,开启WPE发包后,还是用比当前小的编号发的,很容易识别到。直接跳过,客户端不产生任何相应,WPE失效了。
正常游戏,不受任何影响。