|
文 / 于鑫&Milo Yip
游戏逻辑程序员前途如何?
于鑫:
讲真?恐怕得罪的人太多。见过写5年逻辑的程序员,简直是原地踏步。
写逻辑也可以写出花写很屌是没错,写个副本combinator技术含量很高吧,写个gc friendly的代码也很有成就感吧,网络异步转同步写个库降低心智负担也不错是不是,但是只要你周围的猪队友碰了代码,那以后屎还是你的,加之糙快猛的行业氛围,结果就是优秀的人要不断给别人错误买单。这是我不愿意看到的,比如隔壁组有个搞image在国内top的博士,简直美玉良材,也不免要为庸才擦屁股,我觉得实在可惜也怕留不住。
写强类型语言和写弱类型语言情况是不一样的,写强类型语言你多多少少有一点封装,类型敏感能帮你把问题扼杀在编译器。比如Haskell这种Int Bool都不能互相转换的语言,你就是要人肉的去pattern match所有的可能性才行。退一步讲,就是写C#肯定会比写Python情况也好不少,写Python也比写Lua情况好不少,因为Lua你就是能做想做的任何事情,Python有时候会比较绕,而C#你至少可以考类体系和private避免别人乱用。我要给你们讲,有个老程序enable_vehicle的意思是不在车上,己方阵营是evil的梗么,如果不是碍于情面这种人我是很想糊他一脸的。
写3A游戏,和做手游的这群人是不一样的,退一步讲,和做网游的这群人也不一样。做3A游戏你不可能面对如此频繁的需求,所以有机会去深耕一些内容,且3A游戏的制作人员经验要丰富一些,少见完全推到重来的景象(生化4那种其实也不算),这样让开发人员可以有时间去雕琢功能稳定回归,所以并不能同类而语。
多就不能快,好久不能省,你上来就想突突突,就是想做快餐,那结果也大致就是这样。开发组的命运在这种项目定制的初期就会被确定,你说脚本开发效率高,最后填坑的时间怕是比静态语言重构恐怖的多吧。加之 完全不控制质量 + 完全不回归 + 没有持续集成 + 全是人肉qa。这就是产品本身构思不清对整个开发的灾难性倒灌。
我个人本来是不排斥业务的,很长一段时间乃至现在都觉得能改善游戏性是很有趣的工作。但是我真讨厌每天没有2个小时以上的看书时间,且造成的原因不是我自己的代码烂。
做逻辑程序员没有技术前途,告诉你做逻辑有意义的人是从自己利益出发的,因为总有人要做且大部分人要做,但是如果就当真了未免没有独立判断。没法摆脱困境也不要紧,尽可能的补充知识提高认知,真爱技术就熬夜看看书,12点回家也要看,积少成多。
当然你也可以走另外的路,慢慢脱离了逻辑却告诉别人做逻辑有做逻辑的好,只是我无法成为这种人。
Milo Yip:
在育碧里,3C(camera, character, control)是许多动作游戏的核心,是由gameplay程序员实现的。那些跑酷gameplay已成为育碧游戏的标志。
在网游中,最基本的是网络同步方案(属分布式仿真的领域)。技能系统可能是最复杂的游戏逻辑部分,需要适合的框架与工具。
另外,基本上很多游戏也会花费大量的开发力量在用户界面上。这是很烦人的一个部分,看似没什么技术含量,设计得不好直接要重做几遍。许多时还没考虑到新手指引等东西。
高大上的技术也有很多:人工智能、角色动画、物理模拟、内容生成⋯⋯即使有人工智能、动画、物理引擎,如何合适的应用在游戏上也是gameplay程序员负责的。由于人工智能在每个游戏的需求都很不一样,许多游戏需要由gameplay程序员实现各种算法,从寻路、回避障碍、行为规划、行为实现、高层策略、甚至是机器学习等等。
每年 GDC 上除了游戏引擎相关(如渲染)等部分,游戏逻辑部分也占了不少主题。例如今年GDC育碧有一个讲他们如何在 Far Cry 中实现野生动物的locomotion与行为,顽皮狗也有许多游戏中的gameplay实现讲座。上年的中国GDC也有一个讲如何找到最优位置的,也有voxel场景的 AI 方面的。
有时也许是有鸡还是有蛋的问题,是人员的能力未能做到某些技术,还是需要那些技术的项目未出现。但作为技术人员的话,最好能不断装备自己,并对现时的需求做到极致。
|
|