|
外挂对游戏本身有着严重的伤害,其代表性的就是加速游戏的死亡。很多时候,游戏本身几乎没有瑕疵。游戏各方面都在上层水平,却被外挂这外来因素破坏得一塌糊涂,不得不说是功亏一篑。
现在很多游戏对外挂的抵御只表现游戏项目测试完成后的被动的防御上,增加各种插件比如神盾等防外挂软件抵御外挂。这些游戏附带的封挂软件虽然有一定功效。但几乎最后还是会被编写外挂的黑客攻破,而且这些神盾等防外挂软件运行时相当占用内存。游戏商购买这些防御软件用在增加的游戏上还必须支付不菲的费用。
建议:其实外挂本身的功效就是各方面的作弊、修改封包、修改本地运行数据,达到经验、道具的复制,能力的强化等等。外挂执行后,一般玩家会获得超越同等级正常情况下多出XX的利益。利用这点,开发商可以在游戏系统中添加各种查询条件,一旦有账号超过同等级情况下大量数值的信息反馈,游戏可以自动将数据反馈记录在伺服器上或自动提示玩家或封号处理。
比如以下条件满足时
1、玩家角色20级时:单次无论是做任何可以执行的任务或是打怪,每次获得的经验都无法在2秒内提升本身经验的200%。
2、玩家角色20级时:攻击力数值无论佩带同等级最强装备也不会超过400点。
3、强化装备时:装备从+0到+15连续15次的无失败连续强化。
4、强力副本BOSS瞬间秒杀,单次攻击受到伤害达到100%以上(正常顶级玩家也无法达到的效果)
。。。。。。
以上条件如果发生,系统可以自动执行将玩家数据传达给伺服器,可以按系统配置默认提示并取消之前玩家获得的BUG状态、或自动冻结账号提交伺服器处理。
此方法就是给各种游戏数值设置一个理论上的极限值。可以从数值上设定、也可以在时间上设定(修改封包就是多次发送经验获得的反馈信息达到瞬间大量的经验累积获得)。
但这方法也有局限的地方,合理性的外挂很难判断。不过可以防止外挂和大型BUG的发生,在BUG发生的第一时间知晓BUG的状态阻止事态的扩大,防止更多的玩家利益BUG获益导致游戏市场崩溃。
此系统执行的功能代码演示:
var i:int;
var wj_hp=200;//游戏运行时玩家数据
var wj_hpMax=300;//默认此功能数值的极限值
var wj_per=50;
var wj_perMax=100;
var wj_lv=20;
var wj_lvMax=50;
//......
var ycsz:Array=new Array();//将需要验证的玩家数据添加进数组
var fzsz:Array=new Array();//将需要验证的极限数据添加进数组
ycsz.push(wj_hp);
ycsz.push(wj_per);
ycsz.push(wj_lv);
//......
fzsz.push(wj_hpMax);
fzsz.push(wj_perMax);
fzsz.push(wj_lvMax);
//......
this.addEventListener(Event.ENTER_FRAME,异常检查);
function 异常检查(e:Event){
for(i=0;i<ycsz.length;i++){
if(ycsz>=fzsz[1]){ //核对当前玩家数值
异常反馈();
}
}
function 异常反馈(){
trace(ycsz); //反馈给伺服器输出当前玩家异常状态
}
 |
|