《斗战神》小编土豆
(编者注:知道玉狐吧?如果不知道,请猛击这里查看玉狐的技能视频。上一篇玉狐的研发日志《骑上熊去战斗》登出后,大家纷纷表示想了解更多玉狐开发的故事,所以,我们特别采访了斗战神主程——谢耳朵·陈,请他谈谈玉狐开发的幕后。)
“程序员创造世界,疯狂的程序员毁灭世界”
——谢耳朵·陈
“当策划们第一次提出我们需要一个弓箭职业的时候,我们天真的以为这只是一个普通的弓箭手,我们没有反对。程序员总是这么单纯。”
谢耳朵关掉科学松鼠会的页面,开始讲述。
“设计开始了,我们很快完成了她的基本功能。她可以做普通射击,她可以向一个目标发起连续射击、她可以将多支箭同时射向多个目标。我们平静的生活在if……else……中流淌,一个完整的弓箭手开始呈现”
“功能演示的那天,我在13楼吃早餐吃到一条虫子,我有不祥的预感……”
“功能一切正常,动作流畅、特效到位、客户端稳定、服务器正常。制作人当时这么评价我们的演示----”还不错…该有的都有了……但是……”
说到这里,谢耳朵略停顿了一点,食指下意识的拨动着鼠标的中键。
“每一支箭都能射中目标,不对啊!弓箭手不是这样的!神弓才应该百发百中,粪弓就应该让他射偏啊。”这是制作人的但是。
“让子弹射偏……让子弹射偏……”
谢耳朵呢喃着,显然陷入痛苦的回忆。
“这……这……这尼玛是让我们做弹道子弹体系啊!”
“你知道这意味着什么吗?意味着我们的逻辑从技能——目标——伤害”变成了”技能——位置——伤害”
“意味着每一支箭射出去,我必须判断它每0.1秒的位置,该位置上是否有目标,目标该受多少伤害!每一个技能的运算量将直接提高30倍甚至更多。我们是角色扮演网络游戏啊,不是尼玛FPS啊,不是尼玛单机啊!更麻烦的是,我们是在中国,不是在腐朽的美帝,也不是在堕落的日本,我们的多数用户还用着1M的低碳网络,甚至还有舍友同时在下电影。这样的网络情况根本承载不起每秒数十次的位置信息沟通。我们更不敢把这些判定放在客户端,同样因为我们在中国,无数不实名的外挂在盯着我们的客户端,一个不留神就会陷入万劫不复”
谢耳朵语速突然提高,然后又默然了……
“可是制作人不会管这些,制作人只说‘弓箭手就应该这样,高玩就该百步穿杨,手残就该箭箭射偏 ’。”
“当我把这个消息带回程序组的时候,大家都沉默了,该来的总是会来的。要嘛做出来,要嘛跳下去。这是我们的命运。”
(编者注:斗战神项目组在腾讯大厦29楼。)
“后面的岁月仿佛是一场梦,大家都陷入一种将死的疯狂,P2P演算、假前端计算、后台校验防御……整个团队以一种不计实现成本的理想主义气质提出了N种方案。理性的程序员是可怕的,不理性的程序员则可以毁灭世界。”
“最后的结果你也看到了,我们的弓箭手真的可以射偏了。她的每一个技能都是全自由无锁定的真射击。由箭枝实时位置和怪物实时位置来判断是否命中。只有你通过合理的敌方位置预判并将箭射向正确的方向时,你才会射中怪物,对怪物造成伤害。”
“我们还增加了蓄力系统,你蓄力越久,箭会飞得更远,伤害更高。”
“我们甚至解决了箭枝贯通的问题,也就是说如果有一排怪物排成竖排站在你面前,你可以用一枝箭射向他们,越前面的怪物受到的伤害越大,当箭枝穿过几个怪物后,渐渐没有力量,不再对后面的怪物造成伤害,而能射伤几只怪物则取决于你射箭的力道大小和怪物的护甲数值。”
“是的,我们付出了很多的代价”
谢耳朵不经意的摸了下手背上的疤痕。
“当射击技能出现时,我们游戏数据包量会提高20倍,服务器tick从每秒2次提高到每秒10次,以后我们单台服务器的运营成本将提高30%……”
“但我们成功了,这一切都是值得的,我们的弓箭手是最符合物理逻辑的弓箭手,也是最可爱的……”
说到这里,谢耳朵面色微红。
“我们还有很多想法来让她更美好,比如战熊就是其中一点……嗯,其他的,以后再聊吧!”
“就这样吧,我还要写代码呢。”
“哦,对了,那个程序员买包子的故事不是真的……”
编者附:《程序员买包子的故事》
老婆给当程序员的老公打电话:“下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。”
当晚,程序员老公手捧一个包子进了家门……
老婆怒道:“你怎么就买了一个包子?!”
老公答曰:“因为看到了卖西瓜的。”