当我写了个BUG却变成核心玩法 第215节

第274章 大改的遗留问题

  莉莉丝愣住了:“啊?《魔界纷争》的锅?”

  她的表情肉眼可见地蔫了下去,但很快,她又支棱了起来,显然打算以更加激烈的态度否认。

  怎么会是原游戏的锅呢?

  那四舍五入,不就是自己的锅了吗?

  众所周知,买《魔界纷争》改游戏的事情,是莉莉丝自己最终拍板的,现在去追究人家原开发商的责任肯定是莫名其妙,也丝毫没有道理,那岂不是就只能莉总背锅了?

  岂有此理!

  莉莉丝显然不服:“好,那你说说为什么是《魔界纷争》的锅,我劝你想好之后再发言啊!”

  顾凡小熊摊手:“这件事情……说来话长。

  “莉总,你也知道《魔界纷争》这款游戏是经过了一次大改的吧?

  “在最初,这位制作人也是野心勃勃的,他想要制作一款自由度极高的mmorpg游戏,不同于其他游戏那种固定的职业和技能搭配,而是像某些独立游戏一样,让玩家自选技能搭配,打造属于自己的构建。

  “但是真正制作起来却bug一堆,最后他无奈放弃了这个想法,又回到了最原始的老路上来,制作了固定的职业技能和天赋。

  “如此一来,游戏的平衡性问题和BUG问题大体解决了,但游戏也变得平庸了,这才导致游戏的夭折和难产。”

  莉莉丝微微点头:“嗯,我倒是有所耳闻!但是这跟我们现在遇到的bug有什么关系?就算《魔界纷争》是个半成品又怎么样呢?那跟跨职业学习技能以及boss点名判定有什么关系!”

  顾凡微微摇头:“你看,又急。莉总我还没说完呢。

  “莉总你要知道,改代码这种事情,是不可能全部推翻重做的,只能小修小补,让它凑合着跑起来就行了。

  “决定大改的时候,《魔界纷争》已经做了很长时间,也花了很多钱,就算原本那位制作人决定大改,也绝不可能推翻重做,公司高层是不可能答应的。

  “他只能是在现有预算的情况下,小修小补,用比较迂回的方式来完成这种修改。

  “所以,这游戏的底层代码中,其实能够看到很多遗留问题。

  “比如,怒气和法力值的问题。

  “如果在其他的游戏中,怒气就只是战士或者熊德独有的资源条,而圣骑士的资源条是法力值。即便圣骑士学了战士的横扫等技能,也压根没有怒气来释放。

  “为什么《阴影世界》里就可以?

  “因为在我们游戏中,『怒气』和『蓝量』这两个资源条,也是通过技能和天赋来实现的!玩家在最开始是没有资源条的,通过学习技能、点天赋获取。

  “所以,当一名圣骑士玩家解锁了其他职业的技能时,他就可以通过学习技能、点天赋获得怒气条,同样的,他甚至还能获得能量条和其他职业的资源条。

  “护甲专精和武器专精,也是同理。

  “在其他游戏中,某一职业能够使用什么样的武器、穿什么样的护甲,都是直接限定在职业上的。

  “圣骑士能穿板甲,也能穿布甲;而牧师只能穿布甲,不能穿板甲。

  “可是在这游戏中,武器精通和护甲精通,也都在技能和天赋里,都是可以学的!

  “之所以会出现这种问题,是因为《魔界纷争》最开始就是一款自由打造BD的游戏,为了让玩家自选,必须将资源条和护甲精通这一类的机制设计成可自主学习的东西。

  “而在之后改动时,制作人根本没有精力和资源去重写底层代码,只能是通过『将特定的资源条与护甲精通技能锁定在某一职业的技能与天赋中』的这种办法,来变相地实现这一功能。

  “所以……就出现了一系列的问题。”

  莉莉丝震惊了:“那,那,按照原本《魔界纷争》的设计,不是已经限制了不能跨职业学习技能了吗?这个限制到底是怎么失效的!”

  顾凡继续解释:“是的,《魔界纷争》确实限制了跨职业学技能这一点,但是……限制了又没有完全限制。

  “事实上,由于《魔界纷争》在制作的前半段,压根没有职业的设定,所以这些职业,都是后加入的。

  “因此在一些影响重大的底层代码中,都是不跟职业代码挂钩的。

  “毕竟写这些代码的时候,还压根没有职业这东西,而之后加入职业,又不敢再去重写底层代码,只能凑合用着。

  “所以,《魔界纷争》限制玩家跨职业学技能的办法非常简单,甚至可以说是简陋。

  “玩家选好职业刚建立账号时,就默认由系统塞给他一个相关职业的技能。比如牧师是惩击,法师是火球术,术士是暗影箭,战士是英勇打击,盗贼是背刺,等等。

  “而之后玩家升级、找职业训练师的时候,职业训练师会检测玩家之前掌握的技能,以及对应的职业标签。

  “如果有对应职业的技能,那么就正常开放技能和天赋学习列表,而如果是其他职业的技能,就不开放,取而代之的是说一句台词把他打发走。”

  莉莉丝简直是目瞪口呆:“喂!这听起来也太草率,漏洞太大了!”

  顾凡微微摇头:“其实吧……漏洞不大。

  “这就是程序员实现功能的典型思路,用最简单的代码来完成功能。

  “毕竟这样改动,工作量是最小的。不需要重新做一个职业表,然后重新将职业代码写入游戏底层,那样几乎等同于推翻重做,工作量太大,是无法接受的。

  “而现在的这种改法,虽然看起来草率,却可以正常地完成功能。而且按照正常情况,也不会出什么问题。”

  莉莉丝气得拳头都握紧了,但她也必须承认,顾凡说得对。

  这个办法虽然草率,但正常情况下还真不至于出问题!

  玩家的技能在创建角色的时候就默认给了,比如玩家选了法师,系统塞给他一个火球术,那么之后他在游戏中去找任何其他的职业训练师对话,系统检测到他身上有一个火球术,都不会对他开放训练面板。

  只有在跟法师的职业训练师对话时,才能正常学习法师的后续技能。

  这不是也就顺利达到了固定玩家职业和天赋的目的吗?

  可偏偏,游戏出现了不正常的情况。

  那就是……窃法者、恶意馈赠这两个天赋技能,以及涅法洛尔这个boss!

  但很快莉莉丝又有了新的疑问:“等一下,你说职业训练师不仅会检测玩家的技能,还会检测玩家的职业标签?那不对啊,这是双保险,没道理出问题啊,职业标签的检查根本通不过啊!”

  顾凡继续解释:“至于这个意外情况是怎么发生的……莉总我带你从头捋一下。

  “首先我必须声明,窃法者、恶意馈赠这两个天赋技能,以及涅法洛尔这个boss,都是《魔界纷争》这款原游戏中就有的设计!这可跟我没关系啊。

  “显然,窃法者和恶意馈赠这两个天赋技能是原制作人奇思妙想的设计,原本是所有玩家都能学的,后来才不情不愿地拿来用作了奥术法师和痛苦术士的终极天赋。

  “如果游戏中的训练师只检测玩家上一个获取的技能,那么玩家其实不需要去挑战涅法洛尔,只需要去打一下战场就可以了。

  “进入战场,找到敌对玩家,用窃法者偷一个技能,这样再去找训练师对话时,训练师就会检测到玩家的上一个技能是其他职业技能。

  “可是,我们游戏也开了低等级战场,终极天赋45级就可以点了,但却没有任何一名玩家在战场中发现这个机制。

  “这就是因为《魔界纷争》原本的设计就是一个双保险,它虽然没有直接写死在底层的『职业代码』,但是有『职业标签』这个东西。

  “原制作人很有可能也注意到了这个漏洞,并用『系统标签』去堵了一下。看起来堵住了,但实际上……可能他自己也没想到,会百密一疏。”

第275章 什么屎山代码!

  顾凡继续解释道:“在进入游戏、选择职业的第一时间,系统不仅会硬塞给玩家一个本职业的基础攻击技能,还会再后台给玩家打上一个『职业标签』。这个职业标签与底层代码没有太多关联,但在一些特殊情况下,相关功能会对这个标签进行检测。

  “比如,玩家找训练师学技能的时候。

  “可现在的问题在于……因为涅法洛尔这boss的独特机制,也同样赋予了玩家职业标签!这就导致原本游戏中的双重限制,都被攻破了!”

  莉莉丝的大脑有些过载:“等一下!涅法洛尔为什么会赋予玩家职业标签?你说清楚!”

  顾凡轻轻叹了口气:“这就要从涅法洛尔第三阶段的这个点名机制说起了。

  “看得出来,『点名』这个机制,是制作人在设计涅法洛尔这个boss时就想到的一个独特机制,甚至可以说,就是为了这碟醋才包的饺子。

  “但涅法洛尔作为第一个团本中的最终boss,它的设计本就比职业大改要更早。

  “所以在最开始的时候,涅法洛尔并不能直接点名职业。因为那时候,玩家还没有职业。

  “为了完成点名的效果,制作人将机制设计成『涅法洛尔会根据玩家上一次对他释放的技能来进行点名』。

  “比如,上一个对他释放过盾击类技能的玩家,将会放弃使用盾牌;上一个用图腾对他造成过伤害的玩家,将会插下各种图腾反过来给他加buff。

  “这种机制能够给玩家造成一定的困难,但其实也给玩家提供了足够的反制手段:只要玩家在点名前,预先学习一个特定的、无关紧要的技能摸boss一下,就可以骗过boss,破解这一机制。

  “而这本来就是原制作人允许甚至鼓励的玩法。

  “但后来改了职业设定,那么涅法洛尔的机制,肯定也要进行一定的修改。原制作人一番小修小补之后,发现了一个令人有些蛋疼的问题,那就是点名职业时,经常会出现一些离奇的BUG,导致游戏崩溃。

  “比如,原本的设计是上一个对boss释放过盾击技能的玩家,会放弃使用盾牌;可现在盾击变成了战士和骑士都有的技能,而圣骑士又对应着其他的点名效果,必须摘出来。

  “又比如,原本的设计是在团本中用变羊术控制过小怪的玩家,被点名后会对随机队友释放变羊术。

  “这个设计也有独特设计意图,它鼓励玩家在之前的开荒过程中不要使用变羊术,虽然在打小怪时会大幅增加难度,但打最终boss时就会少一个灭团技能。

  “这对于玩家来说,就多了一种战术与取舍。

  “但现在按职业划分了,只能改成『点名法师玩家对队友使用变羊术』,可问题是,很多法师玩家压根没用过变羊术。甚至有可能没学变羊术,这就会导致系统在通过变羊术技能来判断法师玩家时,出现漏判。

  “此外还可能出现一些极端的特殊情况,比如boss读到了技能,但读到了错误的玩家标签,这种情况虽然概率极低,但程序bug这种东西,也不能说就是0。只要玩家多,概率再低的问题也终究会出现。

  “为了解决这些问题,尤其是为了解决漏判的情况,原制作人就又打了一个补丁,那就是当涅法洛尔点名时,优先判定玩家上一个对他的攻击技能。

  “而且为了避免游戏后续可能出现的bug,在点名时,如果技能与职业标签冲突,那么以技能为准,并且还会在系统后台默认再给玩家一次对应的职业标签,防止因为读到错误的玩家标签而自相矛盾、导致bug。

  “这样一来,至少玩家在打涅法洛尔这个boss的时候,不会因为点名和职业问题而发生报错、造成游戏崩溃。

  “而后等玩家下线之后,系统会重新清理玩家身上的职业标签,下次上线就会回到原点。

  “只是没想到……有玩家恰好没下线,而且去找其他职业的训练师对话了。”

  莉莉丝都快听傻了。

  这是什么屎山叠屎山的终极稀碎代码!

  原本的设计是一种情况,修改的设计是另一种情况,而为了让修改后的设计能够正常运行,程序员又在上面糊了一层代码,虽然表面上也勉强完成了原本设计好的功能,但鬼知道这个功能具体是怎么实现的!

  就拿这个涅法洛尔来说,原本的设计本来挺好的,可就是因为『职业设定』这个修改,让原本的设计必须调整,而这一调整就会出bug,为了修bug,又引发了更多的bug……

  显然,玩家在挑战涅法洛尔的过程中,不仅是骗过了涅法洛尔,也把系统给搞混乱了。

  通过玩家技能来释放点名效果,这是最初的设计,关联到太多的底层代码,所以不能改,一改就有可能出大问题。

  表面上是点名职业,但实际上还是在点名技能。

  而点名技能有可能与后面加入的职业代码冲突,既然如此,那就只能以点名技能为准,强行给玩家赋予一个额外的职业代码,让功能跑通。

  至少让玩家在团本过程中不至于游戏报错、崩溃或者产生类似的严重后果。

  等玩家下线之后,再清理掉这些额外加上去的乱七八糟的东西。

  可没想到,层层修改之后,代码虽然勉强运行了起来,但却产生了更大的漏洞。

  这才导致玩家阴差阳错地绕开了『技能』和『职业标签』这两重限制,解锁了其他职业的技能和天赋!

  而这一解锁,可就再也拦不住了。

  只要玩家学了任意一个职业的技能,那么按照系统功能,就会默认为他打上相应的系统标签。这个系统标签偏偏不是唯一的,是可以同时存在多个的。

  所以,才有了这么多的“全职业玩家”出现……

  莉莉丝感觉自己的脑仁都快炸了,这次问题的复杂程度有些远超她的想象。

  关键是,这个解释还真的挺合理的!

  有理有据,甚至前因后果都很清晰。

  “可是,顾凡!我们为什么没有把这个遗留问题改掉?”莉莉丝有些愤怒地问道。

  顾凡震惊了:“莉总,你听听你在说什么!

首节上一节215/476下一节尾节目录