今年从太极图形离开了。项目被砍,领了大礼包,开启自由职业,自己做了几个产品接了几个外包和咨询。有一些技术上的思考,也有一些非技术的感悟。

AI NPC 到哪一步了

ChatGPT出现都两年了,斯坦福小镇也有一年半之久了。这段时间,AI NPC的发展一直备受关注。笔者起初也乐观地认为,光靠大语言模型(LLM)就能让虚拟人的行为变得特别逼真,可现实情况是它只填补了传统游戏AI的一部分空白。

从行为表现来讲,3D游戏里角色的需求可不光是简单走走、弹个对话框交流就行。要有精美的动画效果,还要能精准识别利用周围环境。精美的动画效果,强化学习没办法直接搞定;精准的环境识别利用,接个视觉语言模型(VLM)有些舍近求远了。游戏里环境能提供的互动功能(Affordance),大部分还得靠人工搭建,更别说关卡设计里那些新奇的要求了。像Voyager AI在《Minecraft》里能起作用,是因为这游戏本身就提供了很强的互动功能,AI才能直接写代码控制NPC。这么看来,做游戏还是离不开用传统的状态机、动画制作流程来做技能系统和角色行为表现。

从可控性层面而言,举个例子,要是让LLM决定下一个任务是去“买菜”,可怎么把这个决定转化成游戏里能呈现的具体技能,又怎么判断这中间每一步行为合不合理,都是难题。而且大家都知道,AI在推理上有优势,可计算能力不行。相比之下,传统游戏AI里的 GOAP 或者 Utility AI,在调试的时候,能清楚知道为啥NPC没达到预期行为,还能方便地调整设置,这时候LLM的作用就很有限了。

总体来说,LLM的用处,首先是补充自然语言理解这一块,让玩家能用语音输入指令,还能被精准理解。其次,它能给NPC加上记忆和反思功能,让NPC能根据之前的行为,优化后面的表现,这可是以前技术做不到的。

当下要打造虚拟人生,动画表现环节还得靠人工精心打磨,行为决策方面还得靠传统AI来规划布局,不过新增加的语音交互、学习记忆这些功能,确实给玩家带来了全新的体验。在这个领域,《逆水寒》已经实现了整套系统,新游戏要怎么整合新技术、创造新玩法,还有待进一步探讨。

AI 动画到哪一步了

Motion Matching 技术出现都快十年了,DeepMimic 也有六年了。可到如今,Motion Matching 在游戏动画里还不算主流。游戏引擎也是近两年、三年才开始支持这套系统。这是为啥呢?一方面是设备性能跟不上,在移动设备上用这套方案,还是挺费资源的。另一方面,资源受限太厉害,要有大量的动画片段,还得做不少配置工作,才能正常运行。而且也不是啥都能干,交互特别复杂的动画,还得用传统状态机。它更像替代了传统状态机里 BlendTree 的。

DeepMimic 以及之后靠强化学习生成物理角色动作的那些技术,在游戏里就更不靠谱。第一,训练数据太关键了,训练结果只能内插,不能外推,更不能无中生有。给它一个跑步的动画,它弄不出跳的动画;给它人的跑步动画,它变不出猫的跑步动画,泛化能力太差,所以也就对移动(locomotion)稍微合适点。这个技术对机械狗非常有用,因为机器人怎么移动,本来就是个又复杂又没彻底解决的难题。但对游戏来说,角色移动又不是非得完全跟现实一样才能玩,而且游戏里还有超多交互动画得处理。这两年来看,从 ASE/CALM 之后,更多的工作在数据合成,从视频里合成打网球、打乒乓球的动画拿来训练。可能体育游戏用它还行,反正对动作游戏来说,采集数据太难了,还是没法取代传统状态机。第二,计算性能也是个大问题,哪怕模型参数量才 1M,在桌面设备上,一帧也跑不了几个。不过要是拿这套方案来合成移动动画数据,给 Motion Matching 用,说不定还可行。

再说其他生成动画的框架,受数据制约更严重。角色动作捕捉的数据要是多,还好办点,要是换个体型不一样的生物试试,那就没戏了。所以从实用角度讲,与其投资这种靠 AI 生成动画的技术,是不是还不如想法子降低动作捕捉成本,自己动手做动画?

XR 到哪一步了

2024 年的 VR 市场有不少新动态。就设备销售情况来看,Vision Pro 卖得不太理想,Quest3S 卖得还行,Ray - Ban Meta 销量挺不错。

在技术这块,屏幕和硬件方面还是拖了后腿,限制着 VR 进一步发展壮大。要是追求特别好的屏幕显示效果,目前基本就只能用来看电影、玩游戏。要是平常日常使用,可能都用不着屏幕,像照相、听音乐这些功能,没屏幕也能满足基本需求。不过,VR 大空间体验现在挺火的,这意味着设备体验已经迈过了一道大坎,被大多数人接受了。还有空间视频的沉浸效果比 2D 视频强太多了,能让人更投入。这么看来,VR 娱乐依旧是当下的主流应用方向。

游戏市场上,去年年底 Quest 3 上线后,市场竞争一下子就激烈起来了,好多 VR 3A 游戏纷纷登场。只不过,这些 VR 游戏的玩法跟以前传统游戏不太一样,像体育类、刺激冒险类的游戏,在 VR 环境里更能施展开手脚,玩家玩起来更带劲。但 RPG 类游戏就有点麻烦,玩家玩久了容易头晕,这对游戏设计提出了新难题。而且硬件设备对游戏开发的限制还很大,就拿 Quest 3 来说,虽说它性能差不多能顶得上 8Gen2,可屏幕增大两倍后,反倒把渲染效果拉低了,跟十年前差不多,所以开发者在做游戏的时候,得更加留意怎么突出优势、避开短板。

端上 AI 让大家满怀期待,可受硬件性能局限,笔者估计实际体验和在自己开发的 app 里接入云上 API 的效果差不太多。总之,VR 领域要探索、开拓的场景还有好多。

Magic Number

在软件工程领域,通常我们会尽量避免使用 “Magic Number”(魔术数字,即未经解释的数值常量),即便存在,也应越少越好。有人主张所有的 “Magic Number” 都应当被提取出来作为可配置项。这种观点在一般的工具软件开发中是合理的,但在涉及用户体验的软件,比如游戏开发中,情况却并非如此绝对。

事实上,在游戏开发中,众多的 “Magic Number” 往往决定了游戏的数值体验以及动作手感。这些由开发者长期积累的经验数值,经过反复调试和优化,构成了游戏独特的体验壁垒,使得游戏在竞争中脱颖而出。然而,这些 “Magic Number” 的定义和调试过程无疑提高了开发的门槛。尤其是当多个开发人员协同工作时,由于每个人对这些数值的理解和把握不尽相同,极易引发沟通成本的增加,进而影响开发效率。

因此,在某些特定的情况下,例如开发团队规模较小,但成员具备较为全面的产品和开发能力时,直接进行开发制作反而可能是成本最低的方式。此时,系统或许无需提供过于复杂的配置方法,相应地,代码和逻辑中就可能会出现大量的 “Magic Number”。这种看似反常识的做法,实际上是在权衡开发成本、团队协作效率以及最终产品体验等多方面因素后做出的合理取舍,其存在具有一定的现实意义,在开发实践中,我们需要根据具体情况灵活抉择,以达到最优的开发效果。

技术美术求职

如今行业内卷愈发严重,翻看年轻人的作品集,常见的依然是 Shader、场景编辑工具、体积云、程序化贴图之类的内容。然而时代在持续进步,各公司的需求逐渐呈现出差异化,不同岗位所要求的技能也在不断提高。部分公司里,Shader 可能由特效师负责编写;程序化贴图或许美术人员就能完成;场景编辑工具主要是满足引擎开发的需求;而体积云在一般的项目中甚至都用不到。这些作品集内容显得千篇一律,如果没有突出亮点,被淘汰的可能性就很大。但说回来,不少年轻人的作品真的比笔者做的还好呀。

企业如今不仅仅期望应聘者具备相应的技能,更希望他们能够快速上手工作,深入理解项目类型所带来的一般技术限制,并能提出较好的解决方案。例如,SLG 游戏的大地图制作需求与 RPG 的大地图必然存在差异;ACT 的动作系统和 MMO 也大不相同;二次元模拟经营游戏的渲染风格与写实战棋游戏肯定有别。对于校招生而言,仅有基础知识而缺乏相关经验或许还能被接受,但社招人员如果没有对应的经验,求职之路就会极为艰难,堪称 “地狱模式”。笔者也参加过几家公司的面试,得到了如下反馈:一,某厂认为笔者没有系统学习过图形学。这确实是事实,因为笔者未曾编写过正统 3A 游戏的渲染管线;二,某厂觉得笔者只适合做美术检查方面的技术美术工作,这也没错,毕竟笔者在上上份工作中主要从事的就是这个,只是个人觉得这项工作过于乏味;三,某厂认为笔者只能从事前端开发工作。这也是事实,像 AI 算法之类的笔者确实难以胜任;四,某厂进行了长达四个小时的技术面试,提出了各类细节问题,这也可以理解,毕竟要建立信任并不容易,何况笔者之前也参与过类似玩法的游戏开发。

回过头审视自己在以往项目中的经验,大世界程序化方向,目前岗位已经趋于饱和。一般的公司没有足够的预算去开发开放世界玩法,大型公司基本也都已经自行完成了相关开发。而且这个玩法的同质化竞争异常激烈,自 2019 年那一波项目立项之后,鲜有新的项目出现。至于渲染方面,大多数游戏对此并无过高要求,除非制作人笃定只有依靠美术上的 “卷” 而非玩法创新才能成功,但这种想法风险颇高,一方面美术并非 TA 能够完全掌控,另一方面换皮行为也可归咎于策划的失职,而且笔者在渲染方面的实战经验也不多,都没有自己写过渲染引擎。在工具开发方面,多数公司倾向于让程序员来完成,很少放心交给 TA,即便交给 TA,真正需要专职编写工具的项目也极为稀少,甚至还有面试官上来问我会不会写代码。而前端开发,真的还有公司在招聘这方面的人员吗?

综合来看,在大中厂地技术美术这条路算是比较难走。再加上自身美术素养一般,并且开始意识到技术美术对于游戏玩法的推动作用有限,并非核心要素。于是也就坦然接受了这一现实,与自己和解,不如去尝试一些其他感兴趣的事情。

第二曲线

在当下,不少职场博主热衷于塑造追求第二曲线、开拓副业、获取被动收入的人设。不过,倘若从产品以及技术生命周期的视角去深入剖析,便会发现,任何副业乃至被动收入,最终都难逃周期规律的 “审判”。哪怕某个产品、技术或是副业的边际成本极低,短期内能够源源不断地带来现金流形式的被动收入,可它或许短短几年就会走向衰败。产品本身或许盈利微薄,甚至核算下来,赚取的收益还抵不上投入的人力成本,ROI 实在难以令人满意。在这种情形之下,如果个人的主业根基稳固扎实,并且具有长久持续发展的潜力,那么似乎就没有必要仅仅为了追求额外的收入,而盲目且急切地投身于副业领域。当然,如果能够成功打造出一款爆款产品,斩获超额利润,再将所得利润投入资本市场,凭借金融性收入实现提前退休,那自然是再好不过的了,但寄希望于此,可是要长时间的产品和运营的积淀,不是一般技术人能够完成的。

实际上,对于众多职场博主而言,他们自身的副业项目实际运营状况究竟如何,或许并非最为关键的因素,真正的重点在于他们借此成功塑造了具有吸引力的个人人设,进而吸引并积累了大量的粉丝群体。同样地,很多独立开发者之所以能够获得一定的关注度与影响力,也并非仅仅因为其产品的功能有多么出色好用,在很大程度上是由于积累了大量粉丝所营造出的声势所致。

从个人发展的角度来看,这里或许存在着唯一的 “真理”,那就是采用低成本的方式进行验证和尝试,以批判的眼光去审视各种副业博主以及个人开发者的商业模式,并且通过自己亲身实践试错,来分析其投资回报率(ROI)情况。

当谈及中年危机这一话题时,笔者认为其主要源于两个关键因素。其一为技术周期因素,随着时代的飞速发展与科技的快速迭代,老旧技术逐渐被市场所淘汰,与之相对应的市场需求也呈现出日益萎缩的趋势。在这种情况下,技术人员要么选择坚守传统技术领域,通过创新的方式等待技术周期的回调与复苏;要么果断地寻找全新的赛道,开启新的职业征程。

其二是即便所掌握的技术尚未过时,但由于缺乏良好的战略定位,仍然可能陷入发展困境。一般而言,常见的战略定位主要分为低价策略和差异化策略两种。当个人年龄增长,不再年轻,在性价比方面不具备优势时,那么选择差异化策略便成为了一种较为明智的选择。

就拿前端开发领域作为具体例子来说,如今人工智能编码(AI Coding)已经能够编写绝大部分的前端页面。从技术周期的角度进行分析,前端开发人员并非是被新出现的编程语言所取代,反而率先遭遇到了来自人工智能的严峻挑战,甚至存在被其替代的风险。不过,人工智能也并非无所不能、无懈可击。目前它还无法实现多模态的功能,所能接收的输入信息较为单一和有限,并且对复杂业务的理解程度也尚浅,所以在诸如项目管理这类需要频繁与人进行沟通交流的工作内容上,人工智能暂时还无法完全替代人类。此外,人工智能在掌握复杂的工具链方面存在较大困难,因而在性能优化等领域,人类凭借其专业知识和经验积累,依旧可以深入钻研,充分施展自己的才能。再有,对于一些项目写法非常小众、独特的情况,由于人工智能缺乏足够的数据进行训练,人类在这方面同样具有明显的优势。

在面对职场中复杂多变的风云变幻时,我们可以选择坚守现有的岗位和领域,不断提升自己的专业技能;也可以积极寻找新的赛道,挖掘潜在的发展机会;还可以探寻差异化竞争战略,打造属于自己的独特竞争优势。但无论做出何种选择,经营自己的职业生涯就如同经营一个产品一样,都需要秉持小步快跑、快速试错的理念。

而自我职业选择的源头,既来自于个人独特的生活、学习和工作经历,也源自内心深处的兴趣爱好,毕竟每个人都是独一无二的个体,拥有着独特的思维方式和价值观念。这就要求我们回归内心深处,深入且全面地了解自我,以兴趣作为导向,紧密结合个人特质,去努力寻找属于自己的第二曲线,开启新的职业篇章。

==分割线==

以上,作为年终总结,

最后,祝各位读者新年诸事顺遂!