为什么《英雄联盟》不出类似《DOT2》游廊的功能?

发布时间:
2024-09-09 09:37
阅读量:
3

是真没那个能力。。

曾经,LOL程序员说,所有英雄的跳舞,都写在琴女的代码里。

大部分buff,debuff状态,都写在老蝎子的代码里。

我哪怕是个刚刚接触代码的纯纯蠢蠢萌新,都觉得不可思议,这连刚刚学写代码的大学生,被老师教导的都知道,功能的独立性和可重复调用。。

一个每个英雄都有的跳舞这种核心功能,需要独立出来。每个异常状态,比如击飞,眩晕,压制等等,都需要独立。

这是两个函数。一个是 跳舞函数()

一个是异常状态函数()

不懂代码的人,可能不知道括号是干嘛的,玩家操作每个英雄,不管是谁,想要跳舞,就调用跳舞这个函数,把当前的英雄是谁,传入跳舞函数里。

比如:跳舞(诺克萨斯之手)(括号里就是哪个英雄来执行跳舞动作)

然后在这个函数里,去匹配诺克萨斯之手的跳舞动作。

比如,某个英雄眩晕,直接调用异常状态类里的眩晕函数。

然而,LOL的做法是

我诺克萨斯之手要顶斧子跳舞,所以不去调用跳舞函数(),而是去找琴女,再找琴女的大招,再找大招里的诺克萨斯之手跳舞动作。

这个跳舞,他竟然不独立,你敢信?

还有异常状态,比如护盾吧。我无数个有护盾的英雄,用脚趾头想,都知道,我写个函数:

护盾(){获得护盾}

这时候,石头人被动好了,我调用

护盾(熔岩巨兽){获得护盾}

还有亚索,可以调用

护盾(疾风剑豪){获得护盾}


LOL程序员的操作是:

我设计一个英雄模板,里面有护盾,有眩晕,有加速。

然后其他英雄触发相关状态了,找蝎子,蝎子里面的护盾。

这样没办法维护不说,出bug的几率简直有三四层楼那么高。

特么新手都要知道的新手代码规范。

LOL的程序员竟然不懂?

我不理解但是我大受震撼。

当然,实际的程序开发,肯定要比我说的复杂的多。

不过核心的思想是不变的。

LOL不开发游廊。是因为,LOL的有些程序和机制,都高度绑定了,没办法重复调用。

就比如,LOL火男W这种,一个圈圈的技能。(技能描述是:选择一个圆圈区域,从地面往上喷火)LOL的做法是,技能与英雄高度绑定。只有在火男这个英雄里才能找到放火这个特效。

如果游廊里,玩家自定义去调用这个特效,那就必须找到火男,才能找到放火。这种复杂程度,直接翻了一番。


其他游戏,圈圈就是一个技能动画或者特效,英雄就是一个模型。火男能调用圈圈喷火,火女也可以,寒冰都可以。

不管是英雄,技能,跳舞,嘲讽,装备,特效,每个种类都高度的独立,绑定骨骼。

甚至可以让寒冰去跳火男的舞蹈。火女去做亚索的嘲讽动作。

以上是做游廊模式的核心基础。

war3里,每个技能都高度独立。小兵都可以绑定这个技能。所以才有了DOTA里,食尸鬼,水人,女猎手这些在建造里,属于小兵级别的模型,在DOTA里摇身一变变成守卫天灾,保护生命树的英雄。

而LOL的代码,特效,模型,根本不具备做回廊的独立性。

LOL的代码,狗看了都摇头。。。

END