当前位置:首页 > 每日看点 > 正文内容

我怎么也无法理解网络游戏为什么会有外挂?

卡卷网10个月前 (11-25)每日看点163

因为你把服务器想象成了无所不能的上帝;但在我们程序猿眼里,服务器不过是一个黑大傻粗的计算器。

我怎么也无法理解网络游戏为什么会有外挂?  第1张

比如说,我们在某个位置打开一个宝箱:

我怎么也无法理解网络游戏为什么会有外挂?  第2张

那么,你觉得,程序背后应该做了些什么呢?

一、天真的玩法

天真的程序猿会觉得,啊,这事简单!我就告诉服务器,用户IDxxx在坐标x,y处打开了一个宝箱,得到了20原石以及其它一堆东西,搞定!


于是,他填写了一个结构体,把它转换成网络封包,发给了服务器;服务器收到,记录,结束。

后果

外挂作者也填写了一个结构体,告诉服务器用户xxx在坐标x,y处打开了一个宝箱,里面有65535颗原石以及10把薙草之稻光、50把若水……

服务器收到,记录,结束。

二、初级玩法

程序猿痛定思痛,告诉自己绝对不能信任客户端传来的任何东西了。

现在,每个宝箱都有编号;内容物在服务器记录,是服务器告诉客户端里面有什么,客户端报告服务器不听了。


于是,现在客户端发到服务器的内容是:用户xxx在坐标x,y处打开了宝箱xxx号。

服务器一查询,有,于是记录:用户xxx从宝箱xxx号得到了20原石以及其它杂七杂八……

后果

外挂作者笑了:小伙子,你真是太年轻了!

于是,他向服务器发了一万条消息:用户xxx在坐标x,y处打开了宝箱xxx号。

服务器一条一条的执行了,于是用户xxx得到了二十万颗原石,以及海量的资源。

三、进阶玩法

程序猿抽自己二十个耳光表示抱歉,然后再次发誓绝对绝对绝对不信任客户端传来的任何东西了……

现在,每个宝箱都记录了它是否已经被打开;如果已经被打开,服务器就拒绝请求,并告诉客户端出错了。

后果

外挂作者怒骂一天,突然灵机一动……

他写了个循环:

for 宝箱id in range(1, 65535):

......sendto(用户xxx, x, y, 宝箱id, 'open')


于是一秒钟就打开了全地图所有宝箱,拿到了所有资源。

四、老奸巨猾的玩法

程序猿抽自己二百个耳光表示抱歉,然后又双叒叕一次发誓自己绝对绝对不信任客户端传来的任何东西了……

现在,他设置宝箱打开的最小间隔是1秒。打开太快他就拒绝,并报警让运营团队封号。

后果

外挂作者废掉N个号后,摸清了规律。

现在,他把循环改成了:

for 宝箱id in range(1, 65535):

......sleep(1000) #等待一秒

......sendto(用户xxx, x, y, 宝箱id, 'open')


玩家坐着不动,仍然打开了所有宝箱。


五、小心翼翼的玩法

程序猿痛哭一宿,然后又双叒叕一次发誓自己绝对绝对不信任客户端传来的任何东西了……

他瞪着红肿的双眼,记录下每个宝箱的坐标。

现在,他检查每个玩家打开宝箱时所在的坐标;如果和宝箱距离过远,他就拒绝,并报警让运营团队封号。

后果

外挂作者废掉NN个号后,再一次摸清了规律。

现在,他也想办法取到了每个宝箱所在的坐标;然后把用户坐标改成宝箱坐标……

玩家仍然坐着不动就打开了所有宝箱。


六、道高一尺魔高一丈的玩法

程序猿愤怒的砸了自己的键盘,然后上淘宝又买了一套;然后握紧红肿的双手又双叒叕一次发誓自己绝对绝对不信任客户端传来的任何东西了……

现在,他参考每个玩家5秒钟前的坐标;如果它出现了大幅跳变、而且附近没有传送点,那么这显然是不正确的……

后果

外挂作者再次废掉NNN个号,然后……

他填写新的网络封包,强制改变玩家坐标,把他传送到宝箱附近;等待5秒,开箱!

玩家仍然坐着不动就打开了所有宝箱。


七、破釜沉舟的玩法

程序猿剃光了头发,表示我秃了,也变强了。

这次,他干脆消耗大量服务器资源,每两秒就重新计算一次玩家坐标并算出速度;他甚至考虑了悬崖的位置,不会误识别那些不小心掉下悬崖的倒霉玩家……

现在,一旦玩家移动速度过高,嘿嘿,等着封号吧,小子!

后果

外挂作者不干不净的骂了半个月,终于发现了破绽……

他写了一个外挂;使用这个外挂的玩家可以进入别人的世界,然后召唤1000个荒星,把主人挤到天上;当荒星破碎时,被坑害的倒霉蛋不光要被摔死,还会被服务器认定为移动速度过高……


八、没完没了了是吧

程序猿悲愤的忙活了半年,把游戏里的每一项活动都加上了服务器验证——哪怕因此导致服务器购置成本提高了两倍!


然后,新人物上线了……

后果

外挂作者发现这个新人物能主动强制触发草种子,使其爆炸;但当他把草种子id的位置填写成传送点id、七天神像id、宝箱id、解谜机关id时,服务器居然忘了验证!

于是,外挂玩家跑到别的玩家的世界,把他们的神像、传送点、解谜机关、宝箱甚至NPC统统炸掉了!


总结

你看,服务器就是这么蠢。它绝对不是什么上帝。它的一举一动都是程序猿控制的;程序猿有任何考虑不到的地方,服务器就会傻呵呵的乱来……


一旦这个破绽被人抓到,他们就可以写出外挂、破坏你的游戏体验[1]

这是一场无休无止的战争……

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/11/1552.html

分享给朋友:

相关文章

苹果为什么不做千元机?

苹果为什么不做千元机?

第一步,打开苹果官网,注意是.com,不是.cn;第二步,点击iPhone,选择Compare iPhone;第三步,选择最新iPhone 15系列,查看起售价格,分别为$1199,$999,$799。这不妥妥的千元机吗,怎么苹果就不做千元...

有哪些网站,一旦知道,你就离不开了?

有哪些网站,一旦知道,你就离不开了?

这六个网站,一旦用过,基本上是离不开了。都是我超爱的一些网站,基本上每天都用。1 地图生成器第一个,我要给大家推荐的是地图生成器。可以下载到各省,各市,各县的svg格式的地图素材。这些素材导入PPT中都是可以编辑的。可以单独更改颜色和轮廓。...

本专业是电气的,请问入门plc 必须要从电工接线开始吗,我怕被公司骗了,想请教各位?

本专业是电气的,请问入门plc 必须要从电工接线开始吗,我怕被公司骗了,想请教各位?

开关接线图PART 01一开单控开关接线图二三开连体单控开关接线图四开连体单控开关接线图一开五孔单控插座接线图二开五孔单控插座接线图一开双控开关接线图二三开单控开关接线图四开单控开关接线图一开五孔单控插座接线图二三开双控开关接线图一开多控开...

网易云音乐中你见过最搞笑的评论是什么?

网易云音乐中你见过最搞笑的评论是什么?

1.上个月把家里wifi名字改成了“隔壁老王”,不久就发现附近有一个wifi叫“老王你好”,我果断又把wifi名字改成“你一个人吗”……就这样改着wifi名字我们硬是聊了一个月,今晚对方wifi改成了“老公已出差”。 ——出自网易云音乐《...

我真的需要有人帮我选耳机!!如何挑选第一款头戴式耳机?

我真的需要有人帮我选耳机!!如何挑选第一款头戴式耳机?

挑选第一款头戴式耳机时,应综合考虑多个因素。‌首要考虑的是佩戴舒适度,其次是音质、降噪效果、续航能力和蓝牙版本‌。‌佩戴舒适度‌:选择轻量化设计,单耳重量不超过200克,材质柔软透气,如亲肤仿蛋白皮,以提升佩戴舒适度。‌音质‌:大尺寸的音频...

一台 NAS 可以带来什么好处?

一台 NAS 可以带来什么好处?

家里只有一台HP Gen8,一开始只想搞搞黑群晖,做小姐姐别墅。后来反反复复的折腾了很多。CPU换了1265L,内存加到16G,硬盘4个16T,改线SSD引导,足够我使用了。HP GEN8下面列举一下现在在用的服务,底层使用的PVE。1、黑...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。