2006年8月26日星期六

与外挂的持续斗争中

自从采用了运行中抓查外挂使用者并处以罚款之后,就这几天的观察来看,在和外挂的较量中我们暂时处于上风。但是这种状态是通过杀敌一千,自损两千的手段来维持的,由于外挂也顺势更新,躲藏抓查,导致核查手段越发的诡秘,结果就是不够可靠,误抓率较高,导致普通用户也受害。

仔细思考下,虽然对自身伤害不轻,但是仍在可以接受的范围内,既然如此,就有必要坚持,只要把外挂扼杀在萌芽中,逼迫外挂的制作者转行,那么就达到目的了,解除了长期的隐患。

问题在于,如何尽量减少自己的损失呢?

仔细想来,关键在于减少更新,更新的次数越多,就越容易出错,而且自己的手段也将越匮乏。但是你一旦更新,外挂制作者也会跟着更新,然后停掉旧版本,号召大家更换新版本,这样就逼迫你也尽快更新。那么,我们该如何做?

首先,我们的目的是为了震慑外挂的使用者,惩罚这些人,所以,我们并没有必要时时刻刻检查,只需要随机抽几段时间进行检查就可以了,比如每次检查以后,隔random(60)分钟再进行检查,虽然检查的次数减少了,但是因为挂机是一个长时期的行为,所以你总是能抓到他们,一样可以进行处罚。而对于外挂制作者来说,他们很难获得检查手段,因为必须至少等待半个小时才有机会。因为逆向工程必须经过多次跟踪,测试,所以如果检查的频度少了,对手破解和验证的时间就加长了。另外,外挂制作者为了避免自己的客户遭到损失,所以可能在游戏更换了检查手段以后,暂停外挂的登录,此时,我们也可以相应的关闭服务器端的检查,让外挂制作者无从验证自己的反外挂手段是否生效。也就是说,他必须让自己的客户陪着自己一同冒险,这样,就能够使得他的客户动摇对制作者的信心,从而达到遏制外挂蔓延的目的。

但是,如果我们平时不检查,偶然才检查,那么外挂只要一遇到检查就立刻切断连接,等过了风头再登录不就可以绕过检查了么?为了避免这种情况的发生,我们可以平时依然做检查,但是只采用比较常规的,早已被外挂制作者破解的方法,而且这些代码都是随机打乱的,让外挂无法通过程序判断收到的检查方法是更新的,还是老方法的变种,这样,外挂就不能采用下线躲避的方法了。

总结说来,就是反外挂服务器时时刻刻都进行常规检查(这些检查稳定可靠,另外会不停的变种),每隔random(60)分钟进行一次强力检查(采用最新手段),如果外挂制作者关闭了验证,我们也关闭强力检查。

通过以上手段,我们可以使得外挂制作者需要更长的时间才能找到破解方法,并且在这段时间内,不能关闭外挂的登录,相当于我们挟持了所有的外挂用户,让他们承担破解期间的惩罚风险。

其次,我们还需要采用其他技术手段上避免外挂用户长时间挂机。目前,我们在内测区试验了汉字识别码的技术。这是所有中文游戏的一个优势,英文、阿拉伯数字识别即容易,实现方案也很多,而中国人相当于大脑里自带了一个庞大的字符集,可以进行更大范围的模式匹配,所以,我们就可以利用生成汉字图像,让用户来识别的手段避免外挂长时间自动挂机。汉字通过选择字体、旋转,变形的手段可以大大的增加程序识别的难度(普通的噪音一般没有必要,因为降噪技术是非常成熟的),另外,还有一种较为极端的手段,就是将两个汉字部分重叠在一起,需要用户识别其中某一个字(相当于强力噪音),因为某些地方有重叠,倘若试图分离它们,可以说,一般的程序员几乎没有足够的知识来做到这一点。

究竟效果如何,也许还要到两周以后才能知道了。

2006年8月24日星期四

与外挂之间的斗争

这两周一直集中力量针对反外挂进行更新,经过一番角逐,到达了一个高潮阶段。目前很难说谁能压倒谁,但是的确有了不少心得。

通过间单技术手段(即不考虑服务器端使用类似图灵测试方式去分析客户端行为的话),是不可能一劳永逸的封堵外挂的。如果抱有这个幻想,那么必然会在这场角逐中失败。

考虑到和外挂之间是一个长期的较量,那么:服务器端必须有快速反应的机制,也就是说客户端能够动态的处理服务器端的检测要求,服务器端能够进行低成本的快速部署。如果满足这两条,那么就有了一定的技术基础。但是单凭这两点还不足以和外挂抗衡,考虑到你的对手和你一样聪明甚至比你更高一筹,你应该利用掌握了服务器端,是规则制定者的优点强化自己的有利地位。换言之,配合检测手段,还必须有一定的惩罚机制用以警戒违规玩家,这个惩罚机制不能过于暴力比如封号,也不能过于温柔比如只是踢下线。

问道采用的策略是发现后就进行处罚,需要缴纳游戏币才能够继续进行游戏,在一定时间内被抓获的次数越多,则惩罚的越厉害。最终,我们期望到达这样的效果:外挂制作者提供版本,服务器端针对此版本下传检测代码,抓获所有在线使用外挂的用户和后续登录的用户并予以处罚;外挂制作者很快破解此手段,然后更新版本。接下来重复此过程,最终导致用户无法承受高额处罚而只能放弃使用外挂。

可以说,在这场斗争中,大部分情况反外挂系统属于被破解的状态,但是每次反外挂系统都能捕获一批违规用户,也就达到了用户不愿意使用外挂的结果了。如果得不到大量用户的支持,外挂制作者就无利可图,只能停止更新并转行。

至于如何能够快速部署,保证客户端可以动态执行检测服务器端的检测手段,则是一个具体的技术问题了。

2006年8月20日星期日

双输的局面

这两天问道的脱机外挂终于出现了。

为了防止脱机的泛滥,我在用户登录时发送了一段自动生成的 LPC 脚本代码到客户端,并且询问客户端利用这段脚本计算出的结果,如果没有获得应答或是应答错误则断开连接。

很快,脱机外挂将自己转为嵌入客户端的内挂。随即,某些用户发现利用客户端在外挂成功登录进入游戏成后,客户端就没有作用了(因为我只在登录时挑战了客户端一次),于是他们就很聪明的让客户端帮助登录,然后关闭客户端,实现了一种脱机的替代方案,并且很得意的在外挂论坛上宣布了这个方法。

看了他们的帖子,我颇为无奈。其实,对于服务器端来说,连续挑战客户端是何等容易。只是我不愿意为了这个消耗额外的资源,在发现这个技巧以后,自己闷声发财就好了,又何必出来炫耀呢?我加上了持续挑战以后,使得他们无法再利用这个漏洞,而且也浪费了服务器端的资源,最终也会影响用户自己的正常游戏。正所谓是双输的局面啊。

超频的乐趣

今天新的计算机基本安装完毕,尝试了一下超频,表现还不错,从2.1G超到了3G。各项 benchmark 测试表明性能的确进步不少,而且到目前为止似乎都还稳定。

超频本身带来的性能其实可能微不足道,虽然看上去性能指数高了不少,但是实际上系统的瓶颈往往不在增长的部分,之所以带来乐趣,主要还是觉得没有花钱就获得了更佳的效果,也就是有种物超所值的感觉。

把这种心理代入到游戏中,也是类似的。如果玩家发现了某个BUG,即使并没有带来什么重大的利益,很多人也会乐此不彼的利用这些BUG并且获得了心理的满足感。如果是这样,那么又何必一定要修改这些BUG呢?

2006年8月4日星期五

不要让未经证实或有争议的论据削弱文章的说服力

这是我在OGDEV上阅读到的一篇文章,被作为精品推荐,阅读了以后,姑且不谈文章本身的价值,就其所举证的论据而言,有很多不正确的地方,很难想象这样的文章对了解游戏制作和有能力决策制作方向的人会产生影响,如果面向的不是这些人,那么这篇文章又能起得什么作用呢?

——2D游戏一般是指平面游戏,游戏中通过层来勾画整个世界;而3D游戏则不同,它是通过在虚拟的空间中搭建3D模型来实现3D空间的。
——无论是2D游戏还是3D游戏,在国内都有着大量的作品。其中最成功的代表就是网易的大作《梦幻西游》和暴雪的大作《魔兽世界》了。
——以前与很多游戏策划者聊天,其中有人说我玩的游戏太偏了,我明白他指的应该常玩的游戏应该是那些国产的在排名榜上前几位的作品。
——其实那些作品我无一例外的都玩过,可就是觉得很难像一个玩家一样投入的去玩。我把自己的这个现象归咎于经常上网浏览那些“大作”的结果。
——2D游戏在国内总体来说仍旧占据着主导地位,至少我感觉是这样的,而且我也承认这一点。不得不承认!记得以前看过流传在网络上的一篇《一个网管的自述》的文章。里面说到了一些,在网吧里的网民们对网络对计算机知识的匮乏。
——我们的玩家有多少是那样的人呢?我没统计过,不过2D游戏的火爆,或许可以说明一些问题。
——2D游戏,从开发到运营,从制作游戏到服务器构建,都要比3D游戏省钱的多。不过这些对于我们的上帝——玩家来说不重要。重要的是简单。
——这个简单是从方方面面来描述的。
——首先,技术上2D成熟。所以客户端通常不大,玩家下载速度快,安装容易,更新便捷,客户端程序稳定。这对于那些还没有学会灵活使用计算机或者网络的人来说,是最重要的了。例如:那些什么基本配置、推荐配置,对于电脑知识的小白门来说,无疑是一行又一行的天书。


显然,同等内容的情况下(有模型的RPG),2D的客户端会远远大于3D的客户端的,很多人认为3D比2D多一个D,因此占据的空间也应该更大;也有一部分人认为,像WOW,远远超过了一般的2D游戏,因此3D游戏客户端大于2D游戏的,但是这里忽视了一点,就是WOW的内容庞大,相对应作对比的2D游戏内容并不在一个量级上。这一点,如果了解程序或美术知识,就不应该犯此错误。

——其次,上手简单。大部分2D游戏都是极其简单的操作,所谓一鼠走遍天下。前两天教一个朋友玩WOW,她使劲的在电话的另一边问我怎么进入游戏,我告诉她输入账号密码然后建立角色啊。她说人物已经进来了,然后怎么进入游戏啊。我晕,这叫什么问题啊,后来我充分发挥想象力,终于明白了,她的意思是怎么让人物走起来,也就是基本操作。30分钟的刻苦教学,最后她还是决定不玩了,虽然她也觉得WOW得世界很漂亮。

如果在真正的3D世界中任意行走,显然目前的情况下难以简化操作界面;但是如果是客户端3D界面,服务器端2D世界,那么,操作完全可以简化到和2D游戏一样简单;或曰,这算什么3D游戏,这是伪3D!问题在于:为什么一定要制作纯粹的3D游戏,所有的游戏都需要这样来表现吗?这本身就是一个很有争议的问题,引入这种观点,无形中削弱了读者对最终结论的关注程度。

——我当时似乎明白了一个道理,简单意味着让人能够来玩,别管游戏好不好,没人玩一切都是空谈。那么WOW里面各种战斗技巧与梦幻西游的回合制相比,到底哪个更适合中国的玩家呢?
——最后,游戏市场简单。您看咱们的市场上,《大话西游》、《梦幻西游》、《梦幻大话》、《大话梦幻》,这么多游戏都是2D得,咱们到底玩哪个啊?要我说啊,哪个都一样,没啥差别。只要随便玩会了一个,其他的也就绝对不需要从新上手了。仔细看,某些游戏连界面都和某某西游几乎一致呢。


这点看上去没错,但是实际上,2D游戏难道界面就一定限制死必须和梦幻西游这些作品一样吗?当然不是,至少问道在制作时,完全可以避免和梦幻西游操作一致,但是有必要这样做么?事实上,这是出于市场考虑的结果,策划放下了自己的尊严而采用兼容的方式进行界面设定,比如各种软件更新换代的版本总是需要保持和前辈一致,甚至不惜保留很多过时的,粗糙的设计。制作任何一个作品,都需要考虑易于上手,和现有系统相似,这也是大量成规的原因之一。因此,实际上这和简单没有直接关系,3D游戏也可以普遍的抄袭其他著名游戏比如WOW的界面设定,这点难以作为2D/3D的区别。

——在这样的市场环境里,玩家对2D游戏很容易形成一种习惯,这时,2D游戏就不仅仅是一个游戏了,更成为玩家的一种习惯性标准,当玩家进行别的游戏的时候,总回来与以前的游戏相比较,所以突破2D游戏模式就变成了打破玩家游戏惯性,难度显而易见。
——不过,这里还想顺便提一句,玩家对游戏的态度,仅仅是娱乐,他们是因为这个原因才会来进行游戏的。千篇一律、一成不变的游戏是早晚要被淘汰的。
——2D游戏除了比3D游戏简单以外也更适合国内网络环境的发展。
——2D游戏由于比3D游戏制作简单,所以网络数据的传输量通常远小于3D游戏,服务器要求也远小于3D游戏。最近某游戏利用这个特点,把一台电脑多个帐号同时在线的多开当成了游戏的特点来宣传,再次证明2D的优势。


这点对绝大部分制作通讯部分的程序员来说,是明显错误的。对服务器端人员来说,完全看这个游戏怎么设计,我看到的大部分3D RPG游戏而言,服务器端的消耗显然不会增加。

——国内网络的质量在几年前得到了一个飞速发展,56K Moden很短的时间就被淘汰了,随之而来的就是adsl时代。可是自从南北的电信、网通分家以后,国内网络质量在4年左右的时间里几乎没有任何发展和进步。
——游戏在电信的网络环境影响下,几乎原地踏步地发展2D产品,这是个偶然环境造成的必然结果。

关于网络质量的问题,以我在通信领域(这是我的本行)的了解,这4年显然发展的不错,而不是没有任何发展和进步(真正卑劣的是两大运营商之间的人为壁垒)。至于消耗的网络带宽是否被2D/3D的表现形式所决定,多数通讯设计程序员都不会认可。

——自从2D《梦幻西游》西游出现后,这个“伟大”的游戏,不但影响了数以百万计的玩家,还同时影响了一代游戏开发者、运营者。国内游戏开发者,在摆脱韩国的泡菜风格后就只能死死抱者《梦西》模式瓜分市场份额。这即是说明我们在3D技术上的不成熟,也证明2D依旧有坚实的市场。
——农村包围城市的市场战略不仅在运营上,在产品开发定位上依旧可行。
——2D游戏虽然成本比3D游戏普遍要低一些,可是在运营上赚取的利润不但不低于3D游戏,甚至大部分都比3D游戏要高。从市场风险上来看,2D游戏的风险要比3D游戏低很多。代理国内的2D就更是物美价廉,总比追者老外的屁股,求他帮你改进更新游戏缺陷要风光。
尽管如此,由于2D游戏在国内仍旧有着庞大的客户群,所以,时至今日,梦幻的姊妹篇仍旧被不断的克隆。
——我们不得不担心,未来2D“家常菜”,是否能代表中国的游戏研发水平?未来,我们用什么样的产品去出口国际市场?去赚取国际网民们的“刀乐”呢?

在阅读完这片文章以后,我很惋惜。毕竟里面有一些整理过的材料和分析内容,但是这种文章难以对一个决策者产生作用,其中的谬误足以打消他们采信这片文章的信心。我认为,这也许是一种传统的说服手段,通过大量举证(不论正确与否)甚至夸大其词来博得读者认同。我当年做文字MUD时就有很强的感觉,某个门派偏弱,为了让巫师修改,门派的玩家夸大其词甚至胡编乱造,期望引起巫师的重视。但是实际上,如果你的论证中有一小部分错误、或是一些争议性很强的论据,那么,你几乎已经先丧失了说服别人的机会。