老年退役码农通俗讲解下最近争论不休的几个技术细节

2018/12/192759 浏览综合
08年大学毕业,干了7年码农,后转型销售与售前至今。真正做到了又能和纯洁的程序猿们顺畅沟通,又能坑蒙拐骗需要“五彩斑斓的黑”的客户们。
这里不对游戏进行过多的讨论,诚然这个开发团队应该算我接触过的相对缺乏经验,开发能力偏弱且团队职能分布有点“偏科”的团队。
但是这样一个团队做出了一个登过顶的游戏相当值得敬佩,作为同行不想黑缺点,作为老玩童不想夸这游戏有多好玩,就谈谈技术吧。
前段时间鬼佬发帖澄清暗改一事论坛一直余波不断,各种奇怪的言论都出现了,我发现大多数人对这些底层机制都不是很明了,有明白人试图解释也讲的不是很透彻,所以决定做一个科普帖。
争论最多的应该就是鬼佬说的闪避暗改需要重启服务器以及各种概率计算是在服务器完成的。
这里通俗的解释一下,性急的可以跳过前面的废话。
这里为了方便理解,我们可以把游戏的服务端理解为一个集散中心,我们的数据,即我有多少防多少血理解为货物仓库,把我们的客户端和服务端的通信理解为由机器人提供的物流服务。需要注意的是在现代游戏中,这些货物并不是实体的,可以把这个集散中心理解为一个期货交易市场。我们发送和接受的包裹只是作为更新货物仓库的更新依据,而不是直接对货物仓库里的货物直接进行存取。
在上面的类比建立完成后,我们来理解几个集散中心的业务,以及了解他们是怎么实现的。
第一个情景 我们作为用户单纯的收货
比较典型的应用场景诸如用户登录,查看背包,都是在经过身份验证之后(账号密码等手段),请集散中心把我们自己的包裹通过机器人快递员送到本地,以供现在和之后一段时间能随时查看我们自身的属性,钱包里的银子。
其实这个过程分为验证身份、请求发货、机器人快递员配送,3个环节,为什么又要讲一遍,因为这里就有个知识点。请回顾一下3个环节,期间我们并没有机会告诉集散中心我的某个货物变动了,麻烦你记录下。这就是为什么现在的网游除了部分速成品与辣鸡网游,用修改器改数据都只是本地数值变化,实际上并没有真正生效。可以理解为我修改了余额宝里的余额变成了亿万富翁,但是这是个人行为,无法提交到支付宝平台真正把这个数值更新到库里。有大佬肯定就要跳出来说了,蒙谁那,那xxx游戏可以改xxx的属性一路秒杀。大佬别急,那是下一个情景,请看下去。
第二个情景 业务处理
简单来说就是我们在集散中心提供的服务范围内,提交业务办理申请,变更仓库内的货物。比如我告诉集散中心,快把大哥我的出窍丹吃了,大哥要渡劫了。再比如支付宝余额转入到余额宝懒人理财。
这里就开始有分之了,就是大家争论的闪避是本地计算还是服务器计算的,这就是目前最主流的两大分之,你可能会说难道还有非主流分之?对的,还不少,比如区块链😂
先讲一下为什么会有这2个主流分之,大家用脚趾头想都知道放在银行办理存取款和转账是最安全的,要保安有保安,要柜员小姐姐有柜员小姐姐,为何还有沙雕要在本地办理业务呢。
主要有2个原因,延迟、吞吐能力
延迟可以简单的理解为办理业务需要的时间,等于机器人快递员往返你的手机和集散中心的时间加上集散中心处理你的请求的时间。现在虽然机器人快递员已经是走光纤配送了,但是依旧是需要时间的,集散中心效率越来越高了但是也不是什么业务都能无延迟办理的。我们单纯提交一个卖掉我期货库存里的一部分存货假设需要100毫秒得到执行,那观众老爷可以想像一下,我在进行一个项目,需要反复买卖10次并且涉及转账需要多久完成呢?反应快的观众应该已经明白我说的后一种行为指的是什么了,mmorpg,act,moba这类需要人为即时制定业务流程的游戏,需要频繁提交业务申请。如果每一个步骤都需要走传统流程,那会大幅降低流畅性。你就会骂官方,麻蛋卡成狗了。
吞吐能力可以理解为集散中心大门的宽度。机器人快递员必须通过这个大门的验证才能进去集散中心,为了保护大家包裹的安全,这是最起码的安全机制。门,验证,意味着同一时间能进出的快递员数量并不是无限的,受制于集散中心规模,背后金主财力和集散中心管理者的业务能力。拥堵处理不好会引发踩踏、丢件,所以根据自家门的宽度和验证速度来合理安排每个任务流程,保证流量不超过自家能力的上限,是每个集散中心最需要考虑的问题之一。集散中心提供的业务流程就需要结合吞吐量,也就是高峰期同时连接的用户数量来进行相应调整。这就是为啥小游戏三天两头炸服很正常的原因,不知道有多少人会来我这寄快递,先准备个一室一厅试试看,麻蛋遇到附近有网红推荐的小作坊面膜商家找你签约,门被挤炸了,马上换二室一厅,麻蛋遇到双十一所有人都疯了又炸了。财力有限不能一步到位只能试着试着来直到找到合理的规模与大门宽度。
扯远了,上述2个问题的主流解决方案就是放一部分业务去用户端,当然这也有很多种方式,可以在你家门口建立一个网点,业务流程先整合,验证过后再按时比如100毫秒一次发给总部,或者直接派一个客户经理上门,了解清楚一个小阶段的所有业务需要,再一次性带回公司处理。这就是为啥有的游戏要在本地办理业务。因为官方穷而且想你玩的更流畅。
再回到本情景的开头,业务办理和单纯的收货有啥不同咧?不同就在于你在请求更新你在仓库内存储的货物信息。就是说在这个情景下交互更多能选择的业务更多,甚至有可能通过某种不良手段把你的非法请求成功提交到集散中心并更新到货物仓库。
当然聪明如你应该马上想到了,去银行办理存取款很难做手脚,因为流程太过于简单直接,又是在别人地盘上,难如登天。机会大多存在于后面所说的那种业务复杂的场景,业务复杂就代表可能有漏洞的概率更大,又是在你的地盘上,我为刀俎人为鱼肉。是不是一下想明白了有些外挂为啥要“进图开启”,“到xxx界面开启”,还有所谓的战利品最优外挂。
回归正题,首先观众老爷能看到这,我个你佩服你能看那么多字,你具备了这个时代最需要的能力,学习能力。
下面就是需要观众老爷学以致用的时候啦,大家判断一下修真这么个游戏,业务处理会放在集散中心还是你家附近呢?可以从延迟角度和吞吐量角度分析下鬼佬是诓你还是很老实的说了事实真相(・●・)
大家还有不明白的可以留言,有其他这类问题甚至是想入行IT的都可以联系我。同时欢迎各路大佬讨论不合理的细节,就是别再讨论什么暗改,丹方闪避之类的东西了,真滴看够了。
最后说几个衍生的论点 与上文关系不大,建议跳过
第一,了解知识背景以后,你还会被3折充Q币诱惑吗?龙之谷毒奶粉之类的装备游戏你还相信有强化外挂吗?封包,传输协议,这些听着好牛好厉害的东西你反过来想一下是啥,封包就是机器人快递员给你配送的快递,传输协议就是机器人快递员的交通工具,没啥了不起的,会下软件你也能抓包拆包。
本来这段没必要写,但是考虑到tap的用户年轻人居多,很多甚至还算是孩子。这里想说当今社会,学习能力是最重要的基本能力,你可以偏科,可以暂停下来休息一下,学校学的东西可能后半生很难用到。但是当你彻底停止学习的那一天,就是成为“废人”开始的第一天。同志们同学们,不知道想成为什么人可以边走边瞧,别活成自己看不起的人,这个过程远比你想象的来的要快。这个时代知识如此廉价,何不找一些感兴趣的了解一二呢。
第二,我发现很多人竟然分不清“观点”和“事实”。论坛里贴吧里生活中,很多人把自己的观点当做事实拿出来和别人分享。文字的力量是很可怕的,往小了说,游戏论坛而已,把自己的观点分享给萌新,最多带人走点弯路,影响确实不大。可是往大了说,因为一席话,一篇文章被彻底被丢下地狱的人并不是少数。人应该为自己的所作所为负起相应的责任,包括话语,包括网络上的言论。请各位有耐心看到这的观众老爷在答疑和参与话题讨论的时候能多想一秒将要写下的话是观点还是事实,如果可能是观点,前面加一句“我觉得”。(被人带跑偏怒发此条😀😀)
花了两个小时打那么多字其实就是想看看有多少人能看那么多字
156
13
208