赛博朋克2000:Deus Ex创建工具

引言



最近,有关经典游戏的故事在GDC上受到了好评,但是关于其开发工具的故事却很少。 在本系列文章中,我们将通过采访在游戏开发工具的历史中扮演重要角色的人们来尝试填补这一空白。

在本系列的前两部分中,我们与John Romero(有关TEd编辑器)Tim Sweeney(有关虚幻编辑器)进行了交谈。

在撰写第三篇文章时,我很荣幸与Chris Norden谈论他为FPS / RPG混合动力开发工具Deus Ex 。 我在2018年GDC上与Chris在旧金山聊天。

离子风暴之前:起源和窥镜


大卫·莱特伯恩(David Lightbone):您是如何开始在Ion Storm上使用Deus Ex的?

克里斯·诺登(Chris Norden):1994年,我在奥斯汀担任Origin程序员。 我的第一个付费项目是Jane's Combat Simulations的Jane's Combat Simulations AD-64D Longbow 。 它最初是一款名为Chopper Assault的街机游戏。 我与Andy Hollis一起工作了两年。



游戏发布后,我最后要做的就是做另外一个军事模拟器,因为我绝对不喜欢军事上的一切。 我不时与沃伦·斯佩克托(Warren Spector)进行了交谈,沃伦·斯佩克托也在Origin工作。 他真的很喜欢剧情角色扮演游戏。 我对自己说:“我也喜欢这些游戏,我想从事类似的工作!”

1996年,沃伦(Warren)从原籍(Origin)辞职,成为奥斯丁(Lustin)的Looking Glass Studios的负责人,当时没人知道。 该工作室为Mac游戏(例如Links 386 Pro)提供了端口。 她还在开发自己的高尔夫比赛,称为英国公开赛高尔夫。

Origin仍在开发Ultima Online。 她被昵称为Multima,并且似乎使用了Ultima VII引擎。 我做了一些实验,直到我退出Origin并加入Warren的Looking Glass。

[作者注:Looking Glass的主要工作室在波士顿附近的马萨诸塞州剑桥市]

沃伦(Warren)编写了一份设计文档,一段时间以来,我们使用AIR(来自Austin Internet Role-Playing,简称AIR)开发了一个角色扮演游戏,该游戏本来是一个在线项目。 我们想在3D中做一些事情,因为3D加速器才刚刚出现。 我们得到了Voodoo 1的原型,并在GLide上编写了一个小型引擎。

我们与Looking Glass的剑桥办公室合作。 发布英国公开赛后,我为一个叫Thark Engine的Thief引擎帮助了Mark LeBlanc和Doug Church。

由于财务和其他原因,当时的Looking Glass感觉不太好。 该公司有出色的游戏,但销售不佳。 因此,大约一年后,决定关闭奥斯汀的办公室。

[作者注:克里斯对游戏绝对是正确的-影帝很喜欢《创世纪:黑夜传说》,《 System Shock》和《 Terra Nova》,它们是1990年代最好的游戏之一。

在办公室关闭时,我们很少有人:沃伦,我,亚·雅鲁索,哈维·史密斯,史蒂夫·鲍尔斯。 我们所有人仍然都希望从事这个角色扮演游戏。 办公室关闭后,我们彼此保持了大约六个月的时间,希望我们能够建立一个新公司并有所作为。 我们有一个非常好的设计文档,我们开始将其“出售”给发行商并与其他人进行交流。 我什至不记得我们联系过的所有出版商。 其中的一个人就是约翰·罗梅罗和汤姆·霍尔,他们与Eidos一起在达拉斯创建了一家名为Ion Storm的新工作室。


我从Id的早期就认识John。 1991年,MTV在达拉斯举行了一场大型的飞船派对,主题是Wolfenstein 3D。 有两台VR Virtuality Arcade Machine机器。 那时我还是个孩子,心想:“上帝,这是世界上最酷的事情!” 在约翰以“我太有钱了,不用担心任何事情”的风格生活的日子里,我遇到了约翰。

约翰是个很棒的人,我和他一起在Monkeystone Games任职,曾为Gameboy Advance开发游戏,但这是另一个故事。

[作者注:该游戏名为Hyperspace Delivery Boy。 对于Gameboy Advance,它原本应该由Majesco发行,但在最后一刻,该公司拒绝发行。

我们与罗梅罗(Romero)和汤姆·霍尔(Tom Hall)进行了交谈,他们是:“沃伦,你很酷,让我们做这个游戏!”。 沃伦回答:“有障碍。 我们不会搬到达拉斯。 我们不会搬到加利福尼亚。 我们根本不会动弹。 我们将把工作室保留在奥斯丁。 因此,我们将保持完全自主。 您将让我完全掌控一切。 您会给我钱,一切都会好起来的。” 他们回答:“好的,它很适合我们。 解决了。​​”

[作者注:显然,这是谈判的过于简化的版本,但是它提供了发生情况的想法]

沃伦当时拥有《 Troubleshooter》游戏的出色设计文档,后来逐渐变成了Deus Ex设计文档。

因此,我们六个人创立了Ion Storm Austin。 那时我是技术总监,IT部门负责人“ Homo Arom”,安全服务和首席工程师。 我们没有足够的人来做所有这些事情。 因此,有必要快速进行面试并招募人员。

团队很小。 我们有三名工程师:我本人,斯科特·马丁和艾尔·雅鲁索。 Sheldon Pacotti被聘为编剧。 我们有两个设计团队,每个团队三个人。 一个由罗伯特·怀特(Robert White)领导,第二个由哈维(Harvey)领导。 杰伊·李(Jay Lee)领导的艺术家似乎又有六位。

哦,我还聘请了亚历克斯·布兰登,因为我是虚幻音乐的忠实粉丝。 现在我们是好朋友。 我把他介绍给他未来的妻子,因为我们是高中时代的朋友。 他是一个了不起的人:一个出色的音乐家,并且精通技术细节。

然后我们雇用了一个管理员,仅此而已。 然后我们面对了两年半的地狱般的工作! [笑]

在虚幻引擎和Quake引擎之间进行选择


JL:所以,当Ion Storm的其余部分与Quake引擎一起工作时,您选择了Unreal。 您能解释一下您是如何做出此决定的吗?

KN:不管我多么尊重Quake引擎,我都知道那时我们将没有任何支持。 我们创建了一个非常具体的游戏,希望能够做任何事情。 雷神之锤是个射手,仅此而已。 如果我们尝试在FPS上执行除FPS之外的其他操作,那将花费很多工作,并且我们将不会获得Id的支持。 他们只是简单地将包含代码的CD刻录了下来,交给开发人员,就让他们独自一人了。

JL:在接受Tim Sweeney的采访时,他称当时的Quake引擎许可模型为“ 25万美元的xcopy运营费用”。

KN:是的,绝对正确! 我同意,引擎很棒。 当时,他进行了一次革命,但我们知道由三名工程师组成的团队将无法重写引擎,也无法编写自己的引擎。 我们根本没有足够的时间。

有一次,我是Amiga,C64和PC演示场景的忠实拥护者。 我开始观看名为Unreal的视频游戏,并想:“天哪,是的,有RGB照明和完整的3D。 该引擎使用MMX,SSE和3DNow。 他看起来很酷!” 但是我们找不到有关他的详细信息,因此我们计划去伦敦(加拿大)的Digital Extremes旅行。 我们会见了Tim和他的团队,他们向我们展示了引擎的所有功能。 我还遇到了我现在与索尼合作的Carlo Vogelsang ,他在Playstation部门工作。 他编写了Galaxy Audio Engine:几乎所有汇编程序中的东西,一个超级铁杆家伙。 引擎有一个叫做火的粒子系统。 所有这些都在引擎内部。 我想,“伙计们,我喜欢你的方法。”


当时,他们专注于创建前所未有的超便捷工具。 Quake工具很好,但是对非技术用户来说,它们似乎并不友好。 我们有没有工程技能的设计师,他们不得不弄清楚如何使用这些程序。

因此,我们决定:“这些人有很好的工具,每个人都为我们提供了很多帮助,很多老派的人在80年代都撰写了硬核文章。 许可如何安排?” 他们回答:“我们以前从未做过,对我们来说这是新事物。” 我认为当时他们还不了解如何创建许可模型。 我们说:“我们有Warren Spector,他想在您的引擎上创建游戏。” 当他们听到这个消息时,很明显他们真的很想和我们一起工作。

老实说,我不记得我们许可协议的细节。 蒂姆可能记得。 我不记得我们付了多少钱,但我想的不多。

JL:大概可以与当时要求Quake的Id相提并论吗?

KN:我想少了! 这是另一个优点。 他们的引擎相对较新,但我们不是第一批被许可人。 第一批是时光之轮和克林贡荣誉卫士。

[作者注:您可以在接受Tim Sweeney的有关虚幻编辑器的采访中阅读有关虚幻引擎许可历史的更多信息]

因此,我们决定选择它。 开发人员给了我们源代码,并说:“我们将尽快为您提供支持。” 我们总是面对面交谈。 如有疑问,我们发送电子邮件:没有技术支持系统。

我们遇到了很多问题,因为他们以前从未这样做过。 我们向他们发送了许多代码和问题,并进行了长期的通信并收到了更新。 但是我相信这是正确的决定。 我认为,如果我们选择Quake,那么游戏将更难以创建。

另外,我成为了虚幻技术顾问组的成员。 我们提出了第一次技术会议的想法,所有成为被许可方的公司(当时有四个)的负责人聚集在一起,讨论了改进发动机的方法,责骂蒂姆不便之处,并整理了酒精和食物,好吧,通常。 我仍然与所有这些人保持联系。

JL:您是否与虚幻技术顾问组的其他成员共享了任何内容?

KN:我认为我们主要分享了对虚幻编辑器的改进。 发动机很棒,但是他还有很长的路要走。 然后,当我们能够雇用更多的设计师和艺术家时,他们也开始提出改善工作流程的建议。 我们要么自己实施它们,要么将它们发送给虚幻团队,或者询问虚幻团队是否可以比我们更快地做到这一点。

我们对主编辑器进行了许多更改,但其中大多数仅与我们的游戏有关。 我们分享了一些改进,但是其他大多数开发人员都参与了完全不同的游戏。

我必须编写一堆我认为是同类系统中的第一个。 至少我从未见过它们。 例如,动画混合系统; 从本质上讲,这就是今天所说的变形目标或混合形状。 我不记得当时有人在游戏中这样做。 它可能已经在某处实现,但是在Internet广泛使用之前,共享信息非常困难。

JL:您能谈谈您对虚幻编辑器所做的更改吗?

KN:当时由于某种原因不在编辑器中的系统之一是相机样条的可视化。

在UnrealEd的第一个版本中,您必须拖动相机并设置其路径的点。 在这种情况下,可以看到这些点,但看不到它们之间的连接,这决定了摄像机的路径。


JL:这就像点对点游戏,但是没有数字!

凯恩:是的! 样条曲线具有断点,设计人员不能总是弄清楚路径的样子。 他们想非常准确地知道相机如何移动。 所以我添加了这个系统,他们喜欢它。

这很简单。 我的意思是代码的简单性:在每个主要控制点绘制坐标轴,然后绘制控制点以实际查看其去向。 它确实对设计人员有所帮助,并且制作这样的系统非常简单。 我不知道为什么我们必须添加它。 我猜蒂姆并不认为真的需要她。

DL:这很有趣,因为如果您回想起第一个虚幻引擎的演示,人们首先看到的是照相机在城堡周围飞行,也就是说,Epic似乎没有创建任何照相机路径。


KN:我认为原因是他们的许多关卡设计师都是超级技术人员,他们习惯于在脑海中模拟这些东西。 但是视频游戏产业逐渐成熟,因此有必要为具有不同经验水平的人们创建工具。 并非每个设计师都是工程师,今天更是如此! 这是例外,而不是规则。 因此,该工具应该变得方便和简单。

顺便说一句,我仍然不知道为什么典当用恐龙的头来表示。

JL:[笑]是的,Tim和我在一次采访中讨论了这个问题! 顺便说一句,您对所做的任何技术决定感到后悔吗?

KN:我们使用UnrealScript太多了。 这是错误之一。 UnrealScript非常灵活,但是速度太慢。 我们需要用本机C编写比用UnrealScript写得多的东西。

真北和假故障


[作者注:在访谈的这一阶段,我打开了Deus Ex Editor(UnrealEd的版本)以及Deus Ex SDK文档]

JL:Deus Ex SDK安装程序有一个Docs文件夹,其中包含几个文档文件,Robert White,Sheldon Pacotti,Al Yarusso和Scott Martin似乎是您赞助的文件。 您能说出这些人是谁以及他们在做什么吗?

KN:Al参与了对话编辑。 斯科特从事AI工作。 我做了... 一切 。 [笑]除其他外,我是一名助理导演兼首席程序员。 但是,我们做了所有事情,因为在整个项目中,从头到尾只有三名工程师。


克里斯·诺登(Chris Norden)(左下),埃尔·亚鲁索(El Yarusso)(克里斯的右上角,手上戴有时钟),罗伯特·怀特(Robert White)(中排,稍稍靠中部,戴着墨镜),谢尔登·帕科蒂(Sheldon Pacotti)(右下)和斯科特·马丁(Scott Martin)排,最右边,也戴墨镜)

DL:编辑器的文档中有一个部分说:“虚幻引擎没有对垂直楼梯的本机支持,但已将它们添加到Deus Ex中。” 您能告诉我们更多有关此的信息吗?

KN:楼梯是一个有趣的故事,因为我们不得不在整个关卡中移动,而在当时的第一人称射击游戏中,传统上通常使用倾斜的楼梯和平稳的上升。

沃伦的一项法令(因为设计就是法律!)说玩家应该能够以任何方式完成任何任务。 游戏的主要思想是,如果您愿意,可以完整地进行游戏,而无需射击。 实际上,我们并没有取得成功-您需要在几个区域拍摄几次,但距离非常近。

DL:我认为开发人员在续集中取得了成功。

凯恩:是的,也许。

因此,玩家应该能够在不射击的情况下完成整个游戏。 此外,他可以在整个比赛过程中进行射击以外的任何工作。 玩家可以经历整个游戏,因此敌人永远不会发现它。 有可能以完全不同的方式进行处理。

JL:缺乏垂直楼梯是您在虚幻技术咨询小组会议上与Tim讨论的主题之一吗?

KN:要回答,我需要查找并查看脚本代码中是否显示“ Fuck you,Tim!” [笑],因为那正是我们生气时所做的-我们写下评论以便稍后再回忆。

当我们开始考虑如何增加对垂直梯子的支持时,我们首先想到“让我们创建几何图形,然后也许我们可以做一些棘手的物理技巧,以便玩家可以通过同步动画抓住杠铃。” 但是,在我们决定-好吧,这简直太复杂了。

JL:[笑]

KN:我们必须非常快地执行此操作,因为设计师要求创建这种机制。

因此,结果,我不得不去地狱。 引擎的概念是“纹理组”。 本质上,它是分配给某些类型的纹理的字符串标签,以使它们更易于排序。 我们可以用代码请求它们。 因此我们想到:“为什么艺术家不只是制作一些纹理以便可以攀登呢?” 之后,我们仅将它们添加到纹理组中,进行光线投射以识别它们,然后在一些限制下将播放器沿其运动方向固定在它们上。 这很好,但并不总是完美的,因为当播放器爬到纹理的顶部时,光束不再发射到其中,我们需要将播放器向上推到平台上。 也就是说,解决方案并不完美,但是结果却奏效了。 这是一种便宜又容易的技巧。

如今的读者可能会想:为什么引擎中没有楼梯,这是否合乎逻辑? 但是在那些日子里,什么都没有。 这些只是BSP片段,我们没有静态网格物体,没有类似的东西。


JL:UnrealEd有一个非常酷的螺旋楼梯发生器[笑],但是没有垂直楼梯。

KN:是的,对。。。似乎我们责骂设计师使用它,因为它在BSP中造成了漏洞。 如果附近没有东西,楼梯看起来很漂亮。 但是,一旦您开始在BSP中制作有角度的切片,就会在BSP中获得一些小孔,您可以从中穿过这些小孔,但是这些孔本身是不可见的。 此功能引起很多痛苦,我们禁止使用它。 她看起来不错,但被打破了...

DL:文档中还描述了一个名为DeusExLevelInfo的类,其中包含有关地图的信息(例如,是否为多用户),地图作者的姓名,任务完成的地点,任务编号等。但我想问您关于TrueNorth的问题。

KN:(笑)这是虚幻的BAM类型:Binary Angle Measurement引擎!

JL:这些疯狂的数字是什么?

KN:那时,浮点运算非常昂贵。铁很弱,但记忆力不足。没有用8位数字描述360度,这将提供255个单位的精度,即每单位约1.4度,这还不够。 Tim使用16位数字进行定向,从而提供了更高的准确性。

对于程序员而言,所有这些数字都非常简单。这些只是2的幂,没问题,您可以在脑海中一一计算出来。但是设计师和艺术家遇到了麻烦。因此,我们提出了一些简化措施,以帮助开发人员记住它们。

[当我们与编辑一起工作时,克里斯上了装饰类课]



凯恩:装饰也是一大类。您可以与之交互的所有网格都是装饰。也就是说,游戏中几乎所有内容!

JL:在文档的装饰部分中,它说:“我们警告您,如果您更改下面未列出的某些字段,编辑器可能会崩溃”不记得为什么会这样吗?

KN:[笑]老实说,我不记得了。我认为,因为Decoration是这么大的一类,并且它具有如此多的Epic功能以一种奇怪的方式与引擎交互,所以我们向那些不了解技术细节的设计师解释为什么某个领域会导致意外行为的原因,我们只是他们说“不要使用它,否则编辑器会崩溃”。

JL:[笑]

KN:有些像恐吓战术。在程序员会议上,我们想知道:如何向用户解释这将导致BSP链损坏,而您需要这样做?让我们告诉他们编辑器将崩溃。

我应该再次研究代码,但似乎我们甚至在某些地方隐藏有意的失败,以吓scar那些被深深欺骗的用户而感到内gui。

JL:让我们继续前进。 ParticleGenerator部分说:“主要功能之一是可以使用触发器和取消触发功能打开和关闭它。”也就是说,在您使用的虚幻引擎版本中,不可能打开和关闭粒子吗?

凯恩:当时没有。如果插入粒子系统,则该系统会一直存在并且永远不会关闭。在我看来,这是一个奇怪的疏忽。

否则,虚幻粒子系统就很棒。大多数是用汇编语言编写的。它是程序性的,与其他所有东西相比都写得很好。设计师爱她。实际上,甚至太多。有可能杀死整个帧速率,然后他们就发疯了,增加了越来越多的透明层。

当时,我们仍然必须支持软件渲染,而硬件渲染尚未普及。蒂姆具有出色的编程技巧,并且编写了出色的软件渲染器,他很棒。

[查看游戏中的不同对象,我注意到“属性”面板中的类别名称不正常

。DL:此气味属性是什么?

肯尼迪:这些动物需要气味来追踪。实际上,狗可以追踪气味节点。如果我没记错的话,那么在关卡中移动时,玩家可能会离开已经活跃了一段时间的气味节点。因此,我们做到了让狗闻到他的气味。

DL:也就是说,如果您躲在盒子后面,那么人们将找不到您,但是狗可以...

KN:正是因为这是现实中发生的事情,所以我们认为这将是一个有趣的游戏方面。但是,最终他似乎被裁掉了。由于没有图形反馈,因此很难向玩家解释此概念。



[ Intro, — , . ]

: . . ...



凯恩:不,镜子是真实的!它们非常慢,因此我们要求设计师很少使用它们,但是,它们是真实的镜子。

实际上,当我编写激光代码时……[笑]

DL:[笑]我明白了你的意思……

KN:...实际上我必须检查镜子。我有一个测试级别,在其中测试了所有设备的代码。当我写激光笔代码时,我创建了一个反射镜迪斯科球,然后在两端建造了一个带镜子的房间。我拿起激光笔,将它指向迪斯科舞会,它起作用了!

当然,帧频跌落无处,因为我不得不追踪所有线条...

参见光波:LWO23D命令行工具


[作者注:LWO代表光波对象。这是一种格式的3D几何软件光波3D公司NewTek的,也设在得克萨斯州,为球队杀出重围,而]



Tack的Deus Ex Lab的屏幕截图

JL:您的团队为什么决定使用Lightwave?

凯恩:我们的画家很了解他。 因此,我们不得不适应。

JL:告诉我们更多有关为什么将导出器编写为命令行工具的信息。

KN:那时,甚至现在,我经常编写小型命令行工具来自动化任务。 我是一个老式的程序员,不喜欢不必要的并发症。 我最不喜欢C ++。 我不喜欢图案。 我不喜欢花时间的一切。

当我编写命令行工具时,我创建了一个Win32批处理文件,摆脱了所有内置的东西,从一个空文件开始,使用int main() ,然后继续前进。 这是一种快速且可移植的解决方案,不会引起问题。

DL:我认为导出静态网格物体是一个相当标准的过程。 但请告诉我们您如何导出动画。



Tack的Deus Ex Lab的屏幕截图

KN:游戏中没有骨骼动画。 我不知道实施该引擎的时代的单一引擎。 因此,所有操作都是通过混合顶点完成的。 剥皮在当时非常昂贵。 没有GPU,一切都必须在CPU上进行计算,并且要以任何方式避免浮点计算。

在Lightwave内部,设计师创建了骨骼动画,然后显示其关键帧。 必须创建一个T型姿势,因为混合动画需要从一个共同的基础开始。 也就是说,对于正确的混合,动画本质上是从T姿势偏移的。 混合在发动机侧进行。

JL:那么,在虚幻引擎中,一切都一样吗?

凯恩:可能是。 我认为Tim不会在下一个版本中添加骨骼动画。

会说话的人:ConvEdit和Lipsink


[现在我们打开ConvEdit文件夹]


JL:告诉我们有关ConvEdit的信息

KN:那是Al的创意,他用Visual Basic编写了它。

JL:就像当时的UnrealEd。

是的,在那些日子里,没有太多机会可以简单地实现接口。 有Delphi和其他几个UI框架。 如果不使用它们,则必须全部以本机方式编写,例如,在Win32 API,GDI等上。 这是一个巨大的问题。

就是说,Visual Basic在当时似乎还很原始,当时非常好-一个简单的可视框架,具有类似于C#的基本语言Basic的编程语言。 他使我们能够快速原型化函数并编写工具。

[注意:如果您对在那个时代的游戏开发工具中如何使用Visual Basic感兴趣,请阅读我对Tim Sweeney的虚幻编辑器采访 ]

它主要由Sheldon使用。 他需要控制相机的工具和控制声音的工具。 他想使用许多以前没有人使用过的电影工具。 我先和Sheldon一起玩了,然后才知道什么是讲台变焦。

我认为即使到今天,该工具仍在使用。

顺便说一句,谢尔登患有隧道腕综合症(RSI,重复性劳损),因此海豹对他成为一种折磨。 他几乎在Dragon Dictate中使用语音转录完成了Deus Ex的研究,当时的情况比今天差很多。 谢尔顿甚至必须穿矫形器,因为该综合征非常严重。




JL:哇! 我不知道 游戏中有很多对话框和许多分支...

KN:即使是一次任务,也有大量数据。

Sheldon希望对游戏和许多互动对话拥有强大的控制权。 他希望玩家做出有意义的选择。 他和沃伦讨厌不必选择就单击对话框。 他们希望玩家与角色互动并选择重要的事物,以便游戏放下旗帜并记住他在角色穿越过程中如何与角色互动和表现。

JL:从首次Deus Ex演练开始,我记得Anna Navarre在她办公室的情况介绍。 像在任何视频游戏中一样,我开始在办公室里跑来跑去,胡说八道,直到NPC完成对话为止。 突然,她停止了对话,转向我,问:“你到底在做什么?”

肯尼迪:[笑]

DL:我僵住了一秒钟,问自己:“这真的发生了吗?” 就沉浸于游戏而言,这对我来说是非常重要的事件。 在此之前,还没有哪一场比赛能够实现。 我怀疑这部分归因于“对话编辑器”。

KN:沃伦的诫命之一是:“如果玩家在某人的办公室里,举止像动物并且弄坏了东西,那么角色必须说点什么!” 他不应该忽略玩家,因为这是不现实的。”

JL:有没有与过场动画相关的方面特别难以创建工具?

肯尼迪:我们进行了很多对话,他们都表达了意见。 我们在录音室里度过了几个星期,与演员进行对话。 这意味着我们需要考虑同步嘴唇(lipsyne)的运动。 我想:“如何为这么多对话框创建一个lipSink?” 毕竟,我们不仅有很多短语,而且还有几种语言。

当时,没有很多工具可以帮助进行抹灰。 大多数开发人员都进行了预处理:他们在工具中运行对话框,显示数据文件,然后播放。 但是我决定:“我们没有时间这样做,如果您必须重新录制声音,那么您将需要重新做所有事情。”

因此,我开始认为必须有某种方法可以使用动态声音分析实时进行此操作。 在大学里,我学习了电气工程,并决定自己解决这个问题,而不告诉任何人。

JL:[笑]

肯尼迪:我想:“让我们看看我是否能做到这一点,并使所有人感到惊讶。” 再说一次,我认为没有人做过这样的事情,但是今天这种技术无处不在。

当时,在我所看到的所有东西中,最接近这种系统的是《半条命》。 开发人员使用了“包络跟随”技术,该技术实际上就是这样:根据音量打开和关闭嘴。 该系统可以运行,但是看起来不太现实。

JL:实际上,这是“下颌抽搐”。

KN:是的,完全正确。

我记得我曾经与Gabe Newell讨论过他们是如何完成这项任务的,他说:“哦,只要使用Envelope Follow ,就足够了。 其他一切都太复杂了。”

然后我回到家,开始估算数学计算,然后写了一个执行FFT( 快速傅里叶变换 )的系统。 我重复一遍,尽管浮点计算非常昂贵,而且我可能编写了整数近似值来模拟它们。

她实时分析了一小段录音,并提取了主要的频率成分,然后将它们绑定到六到七个不同的音素。

秘密地,我请一位艺术家模拟几种混合形式(混合形状):我需要一个“ o”,“ a”,闭合的嘴唇等。 他问为什么,我回答他只是这样做了,并给了我数据。



快速傅立叶变换(维基百科图片)和普雷斯顿·布莱尔音素系列

JL:[笑]这似乎是您在Deus Ex中使用的混合动画的完美匹配。

KN:是的,非常完美。

因此,他给了我数据,我编写了数学计算,并尽可能地手动附加了表格。 我没有做任何认真的研究,并且该系统在性能方面非常昂贵。

我创建了一个中间有一个巨大的脑袋的测试水平,并给她喂了几行。 我用德语,英语,法语检查了该短语,然后一切都完美地同步了。 我想:“该死,这太神奇了! 真的有效!”

我找到沃伦,对他说:“我想给你看一些很酷的东西。” 看起来他很震惊。 (笑)他问我:“该死,我们能把它放进游戏里吗? 太棒了!”

结果,我们发布了带有此系统的游戏,但是出于性能方面的考虑,我不得不将其削减很多,从而降低了视觉质量。 但是我的第一个测试水平很棒。 我仍然相信这是第一个实时口型同步系统。 我不记得有人这样做。

也许值得申请专利。 但是我不相信软件专利,因为我认为这是一种恶行。

我还与达拉斯的一位艺术总监发生了很大的争论,他想在Anacronox中使用此系统。 她应该在我们比赛前出来的。 我说:“我不介意分享,但我希望Deus Ex成为它出现的第一款游戏。” 他说:“不,你必须把它给我们!” 他几乎在大厅里对我们大喊大叫。 我回答说:“不,我不应该。”沃伦支持我。 碰巧我们首先发布了游戏,所以这并不重要。 实际上,我认为结果是他们独立实现了自己的系统版本,因为我们不想放弃它。 可能是自私的,但我希望我们先毕业,以便我们可以演示此功能。

Ion Storm制作的其他所有东西都是在达拉斯开发的: 统治:礼物3风暴DaikatanaAnacronox) -一切都在达拉斯完成。 只有Deus Ex是在奥斯丁创建的,只有我们的团队,没有其他人。 我们正处在泡沫之中,与达拉斯的办公室相当孤立,而这是有意为之的。 我们不想弄乱一堆……老实说,带着一堆垃圾。 这种分离是完全有意的,对我们来说非常重要。 我们的团队及其团队没有交换技术,没有真正的联系。

结论


DL:因此,总而言之,我想问:如果您能向阅读本文的工具开发人员提供建议,您会怎么说?

凯恩:听你的顾客。 切勿在真空中书写工具。 作为工程师,您可能会认为:“我可以通过这种方式使用此工具,而且这种方法最有效,所以我会这样写。”

但是几乎总是你弄错了。 您应听取设计师和艺术家的意见,因为他们的工作流程非常不同。 他们的工作与其他人完全不同。 该工具不会为您使用,通常是供他们使用的。

DL:您曾经在与您一起工作的团队中遇到过这种心态吗? 您如何处理呢?

KN:您只需要告诉程序员:“您为什么认为用户有这个问题? 您认为问题出在代码中吗? 还是问题在于屏幕结构? 字体是否太小? 按钮颜色错误? 也许您正在做一些非标准的事情?”

因为如果您看大多数具有专业设计的工具,那么通常它们是一致的。 有关于如何工作的设计指南。

创意团队应该能够使用这些工具。 不应是他们必须阅读文档。 在理想的世界中,一切都应该显而易见。

今天有UX / UI设计器,但那时还没有,所以我们不得不自己创建界面设计,但要得到用户的反馈。

因此,请坐在用户旁边,看看他们如何使用该工具。 我们观看了它们在Lightwave中的工作方式。 当我们编写该工具的第一个版本时,我们坐在附近,没有提示要做什么,而是看着他们做笔记,例如“此操作有困难”或“他们必须不断爬入菜单中才能找到它”或“也许值得将其设为热键。” 只是看着他们,学习和适应。

也就是说,您确实应该考虑设计师的工作流程。 必须尽量减少不必要的移动,最大程度地减少菜单上的爬网,并尝试添加热键。 我们积极推广所有功能的键盘快捷键,因为它们可以加快工作流程。 在学习该工具的过程中,您可以借助热键极大地加快工作速度,而无需爬上菜单。

无需陷入工程师的经典陷阱:“我更好地知道,我写下了该仪器,我知道它是如何工作的。 如果您不能使用它,那您就是白痴。” 这是开发工具时最糟糕的事情。

JL:很好的建议。 非常感谢克里斯!

Source: https://habr.com/ru/post/zh-CN427733/


All Articles