约翰卡马克介绍
id Software的大名鼎鼎的约翰•卡马克(John Carmack)众望所归地入选了2001年度IASA“游戏名人堂”。
如果把诺兰•布什纳尔比作“电子游戏业之父”,那约翰•卡马克就是“第一人称射击游戏之父”,在一家名为id Software的小公司里,卡马克和他的同事通过一部又一部血腥暴力的作品创造并不断革新着这一游戏类别。id所获得的无数荣誉应当归属于它的全体员工,而约翰•卡马克无疑是将整个公司凝聚在一起的粘合剂。
坦白地说,卡马克主要是一名技术天才,id公司出品的每一款游戏都是围绕他所编写的引擎制作而成的,卡马克不断把引擎技术推向新的高度。他为游戏业做出的第一个贡献是实现了卷轴游戏背景图像的流畅性,这一技术在1990年的《指挥官基恩》(Commander Keen)中得到了应用,此前电脑平台上的横向卷轴游戏的背景图像都很不稳定,根本无法同当时游戏机平台上的横向卷轴游戏相比。尽管这一技术在今天看来算不上什么,但它足以显示出卡马克高超的编程能力。
卡马克今天的地位主要归功于他在3D方面的成就,尤其是对3D加速技术不遗余力的倡导和传播。《雷神之锤》刚刚问世的时候,3D加速卡在人们眼里还只是一个可笑的空想而已,只有卡马克对3D技术的威力深信不疑,他为《雷神之锤》制作了一个专门在Verite显卡上运行的特别版本,画面看上去非常漂亮,可惜的是Verite显卡未能在市场上站稳脚跟。随后卡马克又采用OpenGL标准为《雷神之锤》制作了一个新的版本,使所有具备3D加速能力的显卡都能以更快的速度、更高的分辨率渲染出更华丽的图像。到了今天,一些显卡生产商在研发新产品之前甚至会先同卡马克商量一下,以确保他们的硬件可以完美地支持id出品的游戏。卡马克所作的这一切决定性地改变了显卡产业未来的发展。
除了3D方面的成就外,约翰•卡马克还为游戏业带来了许多其它的技术革新,例如网络代码中的客户端侦测、多重纹理、便于修改和可扩展的游戏代码、游戏内部的命令行指令……看来所有该做的都已经被卡马特做完了,可谁知道呢,也许这一切只不过是开始而已。
业内人士对约翰•卡马克的评价:
约翰•霍华德(微软公司):“他缔造了‘死亡竞赛’和‘平移’等许多新单词。《毁灭战士》和《雷神之锤》系列是继《俄罗斯方块》以及一些早期的街机游戏之后真正触及到电子游戏艺术的精髓的作品。”
比尔•罗帕(Blizzard娱乐公司):“卡马克是一位技术天才,他在自己的工作领域中一直占据着至高无上的位置,没有人可以超越得了他。那些塑造世界、富于创新精神的游戏设计师博得了我们的尊敬,而约翰•卡马克同样凭借其高超的编程技术在游戏史上获得了他应有的地位,正是他的技术令许多设计师的想法得以实现
传奇程序员John Carmack 访谈实录
译者:Frank FiringSquad :www.firingsquad.com/features/carmack/
John Carmack—网络游戏界的先知
传奇程序员John Carmack对游戏看法
GDC 2004: John Carmack谈游戏开发
简介
Carmack 对于钱的态度
专注和灵感
顿悟
开放源码
关于Linux的其他问题
Carmack作为学生
Quake 和简洁
Id公司的下一款游戏
关于游戏行业
Id不是一个发行商
关于Trinity
三维象素和曲线
对竞争的看法
Carmack的研究
综合性问题
简介
藏在幕后的人
John Carmack是一个几乎不需要介绍的人——Id
Software的创始人。该公司开创了第一人称射击类游戏,并且独立地改变了PC动作游戏的定义。从Commander
Keen到Doom,再到Quake,Carmack/id的游戏吸引了数百万玩家通宵达旦地在计算机屏幕前击退他们的对手。
去年12月底,Firingsquad和Gamers.com获得了一个难得的机会,与John
Carmack进行一次长时间的、面对面的访谈。我们利用这次机会进一步了解了John作为一个普通人——而不是一个程序员——的一面。我们还向John询问了他和Id未来的发展计划,以及他对于游戏行业的现状及其发展方向的看法。下面问题以粗体字显示,John的回答以普通文字显示。
Firingsquad: 你今年多大?
John: 29岁。
FS: 你是否认为结婚会影响你的编程工作?
John:不。如果这样想我就不会结婚了。
FS: 那么你和Anna[Kang]通常是怎样渡过一天的?
John:
最近我们一直在搭建一些火箭模型。我接受了一次访问,有人问我在十几岁时的情况,我提到了火箭、炸弹和一些类似的物品。我想这很有趣,我喜欢这样。当然,现在您可以到互联网上说“我想要这个、这个和这个。”
他们现在拥有比我以前所用的强大得多的火箭——这些动力强劲的火箭具有每秒2000牛顿的推动力!
FS: 你和Anna会进行一对一的网络对战吗?
John:
就在昨天我们还一块玩了Apple这个游戏,Anna与其中的一个玩家开玩笑——她踢了他一脚。我当时正在与其他一些人开会,所以他们玩了一会,而她一直在逗他玩。但是当我开完会时,他们把我逼进这个家伙的房间里,让我坐下。我进行了反击,取得了一次小规模的胜利。正如我所预料的,我听到了她从建筑物的另一侧发出的诅咒声。她仍然认为另外一个家伙在游戏最后魔术般地获得了技能!
FS: 我阅读了你在以前接受的一些访谈的内容,其中你提到了炸弹等物品。你是一个不听话的小孩,对吗?
John:
是的,现在回忆起来,十几岁时的我在很多方面就像是一个傲慢自大的小讨厌鬼。这些年来我已经逐渐成熟起来。现在回想当年,我认为当时的我表现并不好。我的意思是,尽管我很聪明——我当时已经开始编写计算机程序,但是我经常分不清是非。
FS: 如果你需要给在自己的学校中存在像你这样的孩子的人提点建议,你会说什么?
John:
我已经清楚地知道了我想要做什么。我想要编程——我在12岁时就深知这一点。我知道,这是我想要做的,而且我清楚地知道我想要实现的目标。你不能总是说世界亏欠你想要得到的。但是的确有些时候需要为一个孩子提供一些必要的帮助。我的父母从来没有真正地了解我,因而我没有得到我想要的计算机。我为此责怪了我母亲将近十年,但是我们现在都已经淡忘这件事情了。
当时我感到非常沮丧,因为我清楚地知道我想要做什么,但是我却无法做到。人们习惯于认为:如果你想要从事计算机工作,你需要进入MIT,再到一家公司工作,成为一名工程师,遵循“公认的发展道路”。但是我从大学辍学了,随后创建了我自己的公司。我的弟弟选择了一条更加符合惯例的道路。他获得了一个学位,成为了一名股票经纪人,而这正是我母亲希望他做到的。他干得不错,但是并不能像我一样拥有很多辆法拉利跑车来让父母感到自豪。
我现在可以说,我和我的母亲现在相处得很好。我们可以讨论这些事情和回忆过去,她意识到她在某些方面犯了错误。但是这有什么用?她不会再抚养别的孩子。
Carmack 对于钱的态度
FS: 你现在已经非常富有——这对你有什么影响?
John:
我现在拥有的财富足以让我无需再继续工作;我的确不需要再工作了。这种自由的感觉非常好。因为只要你拥有足够的钱来维持你的生活,你就不必听命于任何人,也不需要想法设法赚更多的钱。尽管有很多人已经非常富有,但是他们仍然屈从于拥有更多财富的诱惑。
我基本上拥有我所需要的一切。我已经拥有足够的财富来维持我自己和我的家人的正常生活,因此,没有任何人、任何公司可以对我产生严重的影响。
FS: 是否存在一些领域,你认为你可以利用你的财富施加影响?
John:
我尽量不像这样考虑问题。在推动其他事情方面,我尽量做到不要太主动。我希望直接解决事情的技术方面的问题。当然我可以用钱来解决一些事情,但是我更希望用直接的方式解决问题。
这就是为什么我不是一位很好的经理。我是一位工程师,所以我想要直接解决问题。我希望把环境建立一起,以便更好的解决问题,尽管在很多情况下我意识到还需要完成更大规模的项目。但是这并不是只有我才能做到的。
我非常擅长这个领域的工作,而且恰好我很喜欢它,因而我并不想转到其他的领域。我的财富足以让我提前退休,但是我喜欢我现在的状态。
在这方面我很反感某些公司的做法。一些创始人原先是非常出色的工程师,但是现在成了他们的部门的主管,因而主要从事管理工作,而不是工程项目。同时,他们所管理的大部分员工在处理实际工作方面远远不如他们当初的水平。
我希望这样的事情永远不要发生在我身上。我希望永远处于行业前沿,从事实际的开发工作。当然,回到幕后阅读资料、研究理论和获得更加广泛的视角也会带来一些好处,但是如果你不了解开发的具体细节,例如工程项目与真实世界的联系,你就会变成一个只会夸夸其谈的理论家。你可以从理论家的所作所为和一个从事真正的开发工作的工程师的工作之间看到这种巨大的差别。
在过去的两个项目中,我的时间被分成了几段。我有大约三个月的时间进行纯粹的理论研究。我目前正处于这个阶段,在这期间我需要与不同的人进行合作。随后我将用大约16个月的时间从事项目的开发工作。更多的关注研究性质的工作对我来说相当重要,但是我并不希望将我的大部分时间用于理论研究。我认为,研究的关键在于找出一种新的方法,但是当您想要真正地采取行动时,仅仅拥有这些理论知识是远远不够的。
专注和灵感
FS: 你对工作的专注让人惊叹。看来你是唯一适合现在这项工作的人。
John:
专注非常有用。在现在这个环境中,我认为软件是一种几乎最理想的介质。但是如果不做这一行,我可能会成为一名工程师或者某种意义上的科学家。我可以从事任何一种“硬科学”。
软件具有很多与众不同的优点。从事物理试验的研究人员需要用一年的时间进行准备和制作工具,然后还要花一年时间来分析试验结果。但是在开发软件时,你可以立即看到运行结果。你只需要坐在那里对程序进行反复的调试。你可以立即运行程序。对于所有智力探索活动来说,这是最容易适应的工作方式。我很庆幸自己生活在这个软件业非常繁荣的时代。
我再次想起当我还是一个年轻人时,我没有我想要的计算机。我感到非常沮丧。我觉得我“正在错过一个很好的机会”。我觉得自己应当编写这些游戏,例如早期的Apple
II游戏。我之所以感到由衷的沮丧,是因为我觉得自己错过了最佳时机。当然当时我并不知道我可以抓住“下一个”最佳时机。
你读过Steven Levy写的《黑客》吗?
FS: 读过,这本书非常棒!
John:
我在十几岁的时候读了这本书。在看到第三章时,我感到“天啊,这才是我应该做的!”大约10年以后,我回想起来自己当时的想法:“如果那本书有第四章,也许我会加入那个行业。”这是一个非常有趣的想法。
现在看这段经历会觉得很有意思。当我是一个年轻人时我觉得错过了自己的最佳时机。因为当时是PC的早期发展阶段的黄金时期,我为自己没有抓住那次机会深感遗憾。
FS: 你是否认为编程工作和将想法转变为程序代码的过程激发了你对编程的兴趣?或者是你在Apple II和PC发展早期所玩的某些游戏?
John: 我可以说出我当时非常喜欢的游戏的名字,但是我真正喜欢的是进行抽象的编程。我喜欢这项工作的很多独特之处。
很多人加入游戏行业的原因就是他们喜欢游戏,而且乐于创新。
我对编程的热爱则来自于一种更加抽象的感觉。我可以从为Linux编写设备驱动程序中获得很大的乐趣。我还喜欢编写数据库管理程序或者其他程序,因为在开发过程中总是会遇到一些有趣的问题。有些事情可以给我带来更多的满足感。图像和游戏很可能是编程工作中最能给人带来成就感的领域。
FS: 为什么呢?
John:
因为你可以得到非常形象的反馈信息。当你编写一个图像算法时,它可以为你绘制一副图片。尽管数据编程会通过其他的方式给人以满足感,但是人类显然对可视的对象和必须通过符号理解的事物更感兴趣。这是图像编程极具吸引力的基本原因。但是我们必须进行很多方面的研究。我喜欢这项工作的所有领域,但是游戏开发总是会让你在克服一些极具挑战性的问题之后才能领会到它给你带来的满足感。
我在早期很喜欢RPG游戏,例如Ultimas,Wizardrys和所有类似的游戏。我为Apple
II开发的一些非常早期的游戏基本上就是Ultima的翻版。我还喜欢所有的经典决斗游戏。
顿悟
FS:
从某种意义上说,你是否认为“龙与地下城”是你所希望看到的、带有一定的文字和对话的游戏模式?它是否像Quake引擎一样,是一种可以在其中添加各种内容的游戏结构?
John: 它就像是能够从头开始开发新的游戏,使用一种对你没有任何限制的方法。
事实上,我们最初打算将Quake开发为一个RPG游戏——并不是一个完全意义上的RPG游戏,而是一个奇幻游戏。但是因为Quake的复杂的开发流程,它后来的发展完全偏离了这个轨道。我一直非常愿意说明我们在刚开始时对我们所开发的游戏制定的目标。尽管它们成为了与我们的目标截然不同的游戏,但是我很满意最终的结果。我们不大可能在开发一款奇幻/角色扮演游戏。
FS: 我听说你减少了你对“龙与地下城”的管理工作。
John:
从Wolfenstein开始,整个公司都在每个周末玩我们所开发的游戏。玩游戏的时间在我们开发Doom阶段有所减少。我们去年纯粹为娱乐开发了几款游戏。但是它花了我们不少时间。要完成出色的工作,你必须用一天时间玩游戏,再用一天时间准备,但是我现在不可能再为其他的工作牺牲20%的时间。
FS: 你有一种特别的专注和灵感——你可以怎样改进一个算法或者技术。你多久会遇到一次这样的顿悟?
John:
我认为很多人都过于强调顿悟的重要性。顿悟的确很重要,但是只有在你清楚地了解一项工作的来龙去脉之后获得顿悟。事实上,很多出色的工作并不是顿悟的结果,而是辛勤工作的结果。很多人都误以为顿悟是最重要的。有时候它的确是,但是在95%的情况下它仅仅是你对你所掌握的知识的冷静分析的结果。
让工作成功的关键并不是一个天才的决策,而是500个明智的选择。更加重要的是始终做出明智的决策。制定一个天才的决策和很多平庸的决策还不如在整个过程中始终制定比较明智的决策。你必须要做出很多正确的决定。
即使在开发完Quake
3之后,我的任务清单上仍然有数千个有待进一步改进的细节。因此,关键在于了解所有必须完成的工作,进而找出“最有效的击球点”。例如“这些工作可以完成大量的任务,但是会带来一定的副作用。”或者“完成这项工作可能需要几天时间,但是它会让其他一些环节变得不太稳定,因此我不会去做这项工作。”
我当然希望遇到顿悟——当时我可能正在做某项工作,忽然间意识到可以采用一种更好的方法。这的确非常有用,但是我不能指望这种情况每天都会发生。实际上比较常见的情况是,当我回到家里时我可以告诉Anna:“今天我想出了一个新主意!”这种情况相当常见,而且非常有用。
开放源码
FS: 很多人都认为你是全世界最出色的游戏工程师之一。你认为在今后几年中,这个世界上是否还有足够的任务和深度来让你保持足够的兴趣?
John:
当然,还有很多难题需要解决。目前,我正在利用我的很多闲暇时间开发一些基于Linux平台的程序。我已经完成的一项工作是为Linux编写两个3D驱动程序,即在这个平台上进行大量的编程。作为一名开发人员,这对我非常有用,因为我做了大量高层次的、API级别的编程工作,但是我应当继续深入到系统底层。通过开发设备驱动程序,编写一些深入到硬件内部的部署级程序可以开阔我的眼界,让我可以从整个流程的角度看待各项工作。有很多程序员只知道顶层的开发方法,而不知道程序工作的基本原理,这主要是因为他们无法“看到”系统的内部结构。
我正在考虑着手的另外一项工作是(因为我喜欢清楚地从最高层到最底层的所有技术细节)花一些时间开发我自己的网络堆栈,以便进行研究和学习。我还做了一些我想要尝试的试验,以便在串行驱动程序和分组驱动程序的层次上了解操作系统实际上为路由时间和排序所支出的开销。我希望从我们通常用于通信的协议层下面获得一些信息。
FS: 仅仅是在Linux平台上,还是也包括Windows和Mac平台?
John:
关键是在Linux平台上开展这些工作更加方便,因为你能够获得你所需要的所有信息。尽管Linux还不能取代Windows成为主流的桌面操作系统,但是它的确具有一些独到之处。
吸引我这样做的原因是有人为Matrox显卡编写了一个Linux驱动程序。我对它进行了测试。显然它不能兼容Quake
3。因此我决定将它下载下来仔细研究。我对它的出色的工作机制留下来深刻的印象。尽管它的速度不快,但是它几乎可以说是一个功能齐全的、高质量的程序。但是它在纹理的交换方式方面存在明显的缺陷。他们交换的是最近使用的纹理,而不是最少使用的纹理,因而你可以在屏幕上看到明显的失真。
我很清楚它的工作方式,因而我想“太好了,它提供了源代码。”因此我决定下载源程序、进入CVS库和所有文件,按照我的想法改进代码,发现程序缺陷,并将其消除!整个过程非常明确。
由此得出的结论是,Apple的驱动程序曾经也存在相同的缺陷。因此我们可以在两个驱动程序中发现相同的缺陷,但是对于Linux程序来说,我可以直接进入源程序,消除这个缺陷。尽管在很多层次上仍然存在不少障碍,但是具备这种能力非常重要。从根本上说,如果你在使用一个源码完全开放的系统时遇到了一些问题,你可以花时间自行解决这个问题。你不需要等待别人的帮助。你不需要低声下气地寻求帮助,也不需要等待补丁发布,而通常这样做会降低时间的利用效率,但是如果某个问题真的让你头疼不已,你可以直接查看源代码,解决这个问题。这会让人感到非常振奋。
关于Linux的其他问题
FS: 这就是你对待问题的态度——亲手解决问题。你并不想等待别人来发布一个升级程序,而是愿意自己动手。
John:
是的,这就正是为什么在我对网络或者其他问题进行研究时,我更愿意使用Linux平台。如果需要,你可以取出操作系统的某些部分,告诉自己:“好的,现在我想要把这一部分完全删除,因为我想要做一个试验。”你可以获得自由发挥的空间。
我认为,在未来几年中,软件的可用性将日益得到重视。有很多经济趋势与此有关。你将看到价格低于500美元的PC和90美元的Windows使用许可。如果人们只想执行一些非常基本的任务,他们很可能希望获得一个免费的操作系统。
Linux界有很多疯狂的支持者,他们的观点有时缺乏足够的理性。但是,在关于Linux的实际优势的宣传中的确存在着一些真实情况。
FS: 你很关注技术,而且你鞭策自己不断进步。但是你是否考虑过找一个上司来帮助你学习新的技能?
John:
我知道在某些工作上聘请管理人员可以带来很多好处。我们在第三季度末聘请了Graeme来帮助我们管理部分业务。但是它并没有对我的工作方式产生实际的影响,因为Graeme还没有蛮横到干涉每项具体的工作。事实上,我自己对工作的安排往往好过大部分管理人员给我制定的工作计划。
我也意识到了我的个人组织能力的局限性。我会将几千件事情放在我的任务清单上,而且常常是从头开始对所有事情进行排序。我的确认为如果有个人的主要工作就是确保我知道和了解所有这些任务的重要性就好了,因为每个人的组织能力都存在一定的不足。你自己可能不会这样做,但是有些事情就是因为你一直不愿意去处理而最终泡汤。我已经意识到了让某个人帮我安排工作的好处。
最近我在找一个人来对一些程序——尤其是Linux驱动程序——的OpenGL性能进行兼容性测试。我为此编写了大量的程序,我也尽量设法将这件事负责到底,但是我知道我需要采取多种方法来实现我的目标。我希望编写一个完美的程序,但是我也深深意识到,在我的有限的时间里,我不可能做到面面俱到。
有时候有一个专门负责帮助你的助手会带来很大的方便。但是这对我来说仍然只是一个理论上的问题。我相信这样做会有所帮助,但是还没有看到实际的效果。
Carmack作为学生
FS: 出了组织能力以外,能否将一位管理人员视为老师?你觉得可以从谁身上学到对自己有用的知识?
John:
实际上,我几乎向每个人学习。这是十几岁时的我和现在的我的主要区别之一。当我十几岁时,我的想法是:“我比我周围的人都聪明,因此我完全不用理会别人说什么。”我在大学的几个学期中都是如此。现在回想起来,我觉得我采用了错误的处世方法。是的,也许我的确比教授聪明,但这并不意味着我不能从他身上学到对我有用的知识。
现在我的处世方法是,我愿意向与我一同进行编程的任何同事身上学习知识。我很珍惜我与Brian
Hook一同工作的时光。我从他身上学到了一些更好的C语言编程标准和如何更加严格地使用struct和const——而我过去并不这样做。这对我非常重要,因为我通过他提高了自己的技术水平。另外还有Graeme——我看到他从Java库中迅速地找到自己所需要的信息——而我往往是从头做起,到处查找这些信息,因而花的时间比他长得多。
某人并非要成为一个“更好的”开发人员或者程序员才有值得你学习的知识,这是我在过去10年中获得的一个非常重要的经验。到处都有值得你学习的知识。如果你拥有正确的学习态度,那么把自己放在一个信息丰富的环境中会对你很有帮助。如果你想从任何地方获得你想要学习的知识,而不是寻找一个将所有信息都集中到一起的有用信息
“宝库”,你必须能够从你所能接触到的任何地方搜集对你有用的信息。
在开发Quake的过程中,我们聘请了Michael
Abrash。我为此激动不已,因为我曾经通过他以Dobbs博士为笔名发表的很多文章中学习了大量基本的PC编程技能——包括汇编语言和图像编程。因此我对能够于他合作感到非常高兴。我从他那里又学到了很多知识,但是有趣的是,我有一阵子感到非常不舒服,因为他在编程方面对我非常顺从。Michael的知识非常渊博,但是我的长处是学习新知识的能力很强。
因此,我几乎从我合作过的所有程序员身上都学到了很多知识。
FS: OK,你刚才提到从周围搜集有用的信息。你怎样看待非技术性的信息来源——例如书籍和电影?
John: 我这几年来最喜爱的书是由Vernor Vinge撰写的《A Deepness in the
Sky》。在电影方面,我不知道我所说的是否有参考意义。我欣赏了大部分好看的电影。《玩具总动员2》非常出色——我很喜欢这部电影。
FS: 《黑客帝国》呢?
John:
《黑客帝国》非常精彩。我喜欢所有精彩的科幻、动作和类似的电影。我不是很喜欢意义深刻的电影。我看电影的目的纯粹是为了娱乐。有些电影实际上改编自我们开发的游戏。我们的游戏相当于计算机游戏界的施瓦辛格电影。
Quake 和简洁
FS: 你认为人们为什么喜欢Quake 3?
John: 我们希望通过Quake
3达到的目的就是让你可以在玩游戏时全身心地投入其中。对于华丽设计或者其他特点的吹嘘,以及试图在游戏上强加一个传奇或者故事的做法毫无意义。一个游戏的真正价值在于让你在玩游戏时感到有趣。关键并不是击败游戏对手或者完成某项任务,而是要让战斗真正有趣。
必须有些让你想要采取行动的任务。人们不会因为玩垒球游戏而真的去玩垒球;必须有一个本身很有意思的战斗。我认为我们在这方面做得不错。我们期望,并且的确从我们的拥护者那里得到了大量的反馈信息。
肯定有些玩家希望玩更加复杂、更加具有挑战性的游戏。对于游戏来说,这是一个可行的发展方向,但是它可能会导致游戏内核的发展停滞不前。你可以在玩飞行模拟游戏时体会到这一点,因为这些游戏要求你在开始游戏之前阅读漫长的使用手册。而在过去的飞行模拟游戏中,你要做的就是跳进飞机、起飞和射击。这些游戏可以给玩家带来真正的快乐。而在有些严肃的模拟游戏中,你必须让自己相信你真的达到了娱乐的目的。
也可以像这样来开发第一人称射击游戏,即要求玩家了解现在发生的情况,各种工具的使用方法,以及各种战略等——而玩家并不想要知道这些,他们希望的只是坐下来玩游戏。也许有很多人喜欢这样的游戏,但是我并非如此。我没有时间学习游戏的各种知识。我从来不玩那种需要学习大量复杂的知识的游戏。我只喜欢玩一些简单的、迅速上手的游戏,它们让我可以立即进入游戏,享受一段美好时光。我认为与我一样的游戏玩家是上面那种喜欢复杂游戏的玩家的五倍以上。
FS: 你最近一次玩超过2小时的、非id出品的游戏是什么?
John: 很可能是Nintendo 64平台上的F-Zero X ——一款赛车游戏。
FS: 你是否考虑过开发一款赛车游戏?
John: 我们曾经在推出Wolfenstein 之后讨论过这个问题。
当时我正在研究一些三维象素-landfield技术,我们制作了一些汽车行驶的简单演示。但是我们从来没有采取任何措施来将这个想法付诸实施。但是如果我们真的开发一款赛车游戏,那肯定也属于非常有趣的赛车类游戏——例如F-Zero游戏,而不是非常严肃的赛车模拟游戏。这里我要再次指出,游戏界有很多有效的发展途径,但是我有我自己的个人爱好。我的爱好恰好让我们既可以开发出成功的游戏,又可以让游戏具有我所认为的真正的娱乐性。
Id公司的下一款游戏
FS: 你认为你的个人爱好并不是开车,而是火箭发射器?
John:
游戏的目的就是娱乐。模拟游戏从来没有让我获得愉快的感觉,包括飞行模拟、赛车模拟和所有类似的模拟游戏。我知道它们在某些方面具有一定的娱乐性。它肯定不会像我说的:“这些游戏非常枯燥,所有人会喜欢它们”。但是,它们并不是我喜欢的游戏类型。
在我刚刚喜欢上RGP游戏时,我的生活因为其他一些事务而变得越来越忙碌,因而我没有很多时间用来玩游戏。我一直都很喜欢简单的卷轴游戏。尽管从Gauntlet到Quake
3,它们已经发生了很大的变化,它们的基本理念仍然没有改变——你需要四处奔跑、打败敌人、拾起武器、及时进入下一关。这是一个从根本上非常有效的、核心的、首要的游戏元素,我对将相对较为类似的游戏(例如Quake、Quake
2和Quake
3)制作成具有不同风格的游戏并不觉得有什么不好。就像总有人玩赛车游戏和飞行游戏一样,现在也总是会有各种各样的第一人称射击游戏。我认为我们的每个项目都得到了重要的收获。我们的下一个游戏可能会采用一种完全不同的方式,因为并不是公司中的每个人的想法都与我一样。因此下一次我们可能会稍微改变一下我们的策略,但是我们还没有做出最终的决定。
FS:它仍然是一款第一人称游戏吗?
John:
它很可能仍然是一款第一人称游戏,但是它不一定是一款动作游戏。Graeme和我一直在讨论很多游戏的设计创意,并且探讨了我们目前拥有的各种选择,但是我们还没有准备好讨论任何细节。它很可能是一款第一人称游戏——这几乎是肯定的。
FS:
我刚才在想,如果id进入RTS或者其他类型的游戏领域,可能会出现非常有趣的情况——这就像Blizzard从RTS转向开发动作RPG一样。
John:
我不是一个真正的实时战略游戏玩家。实际上,我从来没有真正坐下来玩过一款SLG游戏。这不是我喜欢的类型。它与第一人称游戏完全不同——后者是最有现场感的游戏。
实时战略游戏是最没有现场感的游戏之一。你只是指挥你的军队,而不是你自己在游戏中冲锋陷阵。我想我们还是会继续开发第一人称类游戏。从第一人称游戏转向第三人称游戏只是一小步,但是我认为肯定有其他一些公司更加擅长开发第三人称游戏,例如那些在开发指挥战略方面更具实力的公司。
与游戏行业的很多人不同,我并没有在计算机上制作电影的想法。而正是这种想法导致了很多公司陷入困境。有些游戏设计人员认为他们是导演,而我认为你应当摆正自己的位置。我只是一名游戏设计师,而不是一名电影导演。这也是促使很多公司转向第三人称游戏的原因。第三人称显然更适于显示人物动画这样的特效。Steed肯定希望开发更加重视动画的游戏,但是这可能并不是我们的下一款游戏的开发重点。我们还没有最终决定,但是我肯定将继续开发第一人称游戏。
关于游戏行业
FS:
你把在计算机上制作电影视为“很多公司陷入困境的原因”的说法很有意思,因为有很多3D显卡公司——例如3dfx和Nvidia——实际上将“把好莱坞引入台式机”作为他们的宣传重点。
John: 这个现象存在很多有趣的问题——
一个是以最高的质量发挥今天的3D引擎的威力所需要的人力正在迅速接近好莱坞所需要的电影布景人员的数量。就像现在,Quake
3远远没有真正地达到我们所能制作的视觉效果的最高水平,但是只有这样我们才能保持足够快的开发速度。
但是如果有人根据这个圣诞节推出的产品了解了今年的技术水平之后说:“我想要制作出视觉效果最惊人的、最接近电影的游戏”,那么他可以制作出远远超过人们目前所看到的视效水平的游戏。相关的技术都是现成的。这就是过去一年中游戏行业的发展趋势,尤其是一些特殊的效果,例如各个层次的完全纹理渲染,需要场景设计人员加入进来,以不同的方式设计他们的场景,以及利用模型构建所有这些特效。这样的努力现在可以被用在计算机游戏中。而过去并不是这样。
在我们开发Doom和Quake时,我们并没有能力投入如此多的人力。如果你需要设计一个房间、一条走廊和另外一个房间,你应当采用的方法是:走廊、模块、模块、天花板。这就是你所能做的一切,因此我们所能开展的工作受到了严重的限制。
FS: 你总是支持以规模较小的团队开发游戏;这是否意味着孩子们可以在自家的车房中和伙伴们一同开发游戏?
John:
我们还没有充分地发掘出所有可能的游戏种类。很多人在很多方面对游戏行业有所不满,而事实上的确很多发行商并不喜欢发行创意新颖的游戏。来自Definition
6的Chris Hecker
一直在用多种方法推广物理游戏;他开发了一些新奇的游戏。他所开发的游戏使用了一个新颖的创意。他还制作了一个简短的游戏演示。这个游戏将物理作为它的核心原理,但是它并不是像“让我们将物理加入一个第一人称设计游戏”一样。它是一个非常独特的游戏。它采用了一个很好的游戏设计,而且与物理学密切相关。但是发行商对它一点都不感兴趣。
这的确非常糟糕,但是与此同时,我们也可以从其他一些事情上看到一些积极的迹象,例如有些人通过在互联网上销售他们所开发的一些简单的小游戏而赚了大钱,例如每年通过被下载的游戏获得几千美元的收入。我对此感到非常振奋,因为我们可以清楚地看到,有些人可以通过开发主流之外的游戏赚钱;这种情况因为互联网而成为了可能。
我们在公司创建早期以共享软件的形式获得了成功。通过最初的Keen三部曲,我们每年的收入达到了10万到15万美元。通过第二个三部曲,我们每年借助共享软件获得的收入达到了50万美元。这还是在我们进入正式的商业销售市场之前。现在看来可以比当时做得更加出色。这的确很有意思。但是由于货架上需要占用成本费用和货架空间,发行商并没有兴趣发行创意新颖的游戏。我确信肯定有一些新的游戏种类正准备崭露头角,但是面临着一些阻力。
Id不是一个发行商
FS: 你对Halo感兴趣吗?
John:
我看过它的影片;看起来非常出色。现在的问题是无法根据屏幕截图来判断一个游戏的好坏,因为任何一个不够胜任的渲染引擎都可以渲染某个特定的场景。关键在于各个对象能否无缝地连接到一起。Bungie拥有很多杰出的游戏设计人才。他们从事游戏行业的时间和我们差不多。他们很多年来就像是id在Mac平台上的影子。但是现在他们已经走在了前面,并在PC平台上取得了一些重要的成果。他们表现得非常不错。
FS: 再回到开创新的游戏种类和来自发行商的阻力的话题,你是否有兴趣帮助推广新的游戏种类,例如提供一些资金来发行这些游戏?
John:
我肯定不想成为一个发行商。Id内部就这个问题讨论了很多年。五年以前,所有的游戏开发公司都希望成为发行商,因为当时有很多小型发行商。后来这些小型开发商逐渐被合并为少量大型发行商。我们就这个问题讨论了很长时间,而且我们自己发行了最初的Quake共享软件,但是当与发行商达成协商之后,我们很可能损失了一些利润,因为发行商的业务管理往往相当糟糕。但是最后所有人都达成了一致意见——尤其是在我们看到很多发行商的合并和倒闭之后——做一个开发商比做一个发行商好得多。因为软件开发商是这个行业中比较清楚的部分,你只需要交付CD,再通过邮件接收支票。但是,作为一个发行商,你需要处理行业中的很多你根本不想接触的混乱部分,例如代理商在取走并售出你的产品之后付费等。我一点也不想接触这方面的业务。
FS: 或者利用你的影响力来说服一些发行商,你知道,也许你应该利用这个机会。
John:
我不会投入太多。我会对这样的事情临时发表一些意见,但是我不会对一些我知道没有足够的时间和精力来努力的事情提出承诺。事实上,这对于我保持对主要工作的专注非常重要。我愿意不去理睬大量的琐事。这一点非常重要,因为如此多的事情都可能需要占用我的时间。可以从很多面临类似处境的人的生活中看到这样做的重要性:整天都有人不停地找他们,从而使得他们无法开展任何工作,因为想要达到某个目的的人会给他们拨打电话和发送电子邮件——对他们进行访问,或者请他们提出一个业务建议。
有时候我会因为没有完成更多的工作而感到内疚。尤其是在即将到来的一年中,有很多不同的硬件设计工作需要完成,而且每个人都没有一个明确的发展方向。我告诉自己,我应当参与到开发工作中,帮助所有人达成一致意见,因为我的地位使得我比较适合扮演这样的角色。微软在很多方面很乐于听从我的建议,很多硬件公司肯定也愿意这样做。他们对我存在一定程度的尊重。但是在开发Quake
3期间,我没有时间来从事这方面的工作。
现在我可以四处宣传一些想法,但是我深知,即使是现在,我也不能完全投入这项工作,因为尝试并带领整个行业沿着我所希望的方向向前发展实际上是一个全职的工作。我还没有狂妄到认为世界没有我就转不了。因此我想要说的是,我会尽量提供帮助,但是我不会全身心地投入这项工作。
关于Trinity
FS: 让我们换个话题,我读到的一篇文章提到在Quake 3成功推出之后,你准备花更多的时间研究引擎。
John: 我目前正在开展多项引擎研究工作。
FS: Trinity是其中之一吗?我想人们一直对“Trinity”有些迷惑不解。
John:
我一直不知道为什么每个人都对Trinity感到迷惑不解。在推出Quake之后,我开始研究新的渲染技术,人们都将其称为“下一个引擎”或者其他名称。Michael
Abrash建议我们采用Intel的做法:用一条附近的河流命名你的下一个项目。达拉斯有条名为Trinity的河,所以我们就下一个项目的名字取为“Trinity引擎”。当然,我们最终没有将其用于某个项目,因为Quake
II是Quake I的续作,而且我没有在Quake
II上使用[Trinity],因而没有任何一个项目采用了这项技术。刚才我们谈到了我当时所做的工作。在开始开发Quake
III时,我针对不同的渲染技术编写了六个不同的研究引擎。
但是这仍然只是我所从事的研究工作。其中包括2个三维象素项目,1个空间扭曲项目,1个照明图项目,其中的一部分工作成果后来成为了Quake
III引擎。
有一件事一直是id和我的技术指导工作的真正实力之一。你可以看到一些公司紧紧抓住某个聪明的创意不放;有些你可能耳熟能详的游戏则是以一个创意为核心进行游戏开发。而我并不受限于某个特定的创意的束缚。正如我刚才所说的,在开始开发Quake
III时,我有六个不同的任务需要完成。我观察了所有这些任务,然后对自己说:“这些任务更加简单明了。”但是我们为Quake
III所做的工作实际上是很多方法中的一种比较正确的方法。我现在还有很多任务需要完成。但是没有人会在上面贴上魔法标签,所以我需要亲自评估所有这些不同的任务。
三维象素和曲线
FS:
你刚才提到了三维象素,而且你正在开展这方面的研究。你是否认为3D硬件公司应当关注三维象素加速?你怎样看待已经推出的三维象素游戏,例如“三角洲部队”?
John:
三维象素开发?我过去编写过一些三维象素引擎。实际上Shadowcaster——即Raven的最初名称——的早期版本中就曾经使用了三维象素地面。但是在我们重新编写该程序,以便更多地使用多边形时,我们将三维象素地面删除了。用三维象素技术显示对象可以带来一些实际的好处,因为它可以通过多种方式为您提供完整的纹理和轮廓细节。我在刚开始开发Quake
III时编写了这两个三维象素引擎,我当时认为我可以让它们完全通过软件运行,但是它只能提供相当低的分辨率。根据你所能达到的水平,以及硬件多边形的生成速度,在这种情况下并没有必要使用这项技术。
我分析了内存存取模式;你可以用硬件做一个三维象素光迹追踪器,它所使用的硬件资源远远少于我们现在在进行各种三角形光栅处理时实际所用的资源。我认为它在很多情况下可以提供更加具有吸引力的视觉效果。但是它的确很难理解,因此我不太愿意向人们推荐这样的技术。我知道我做了一些介绍性的演示,但是PC行业能达到现在的硬件水平的根本原因是我们都可以借鉴SGI这个例子。我们拥有“这显然可以发挥作用,你看他们已经做到了”的说法的实际证据,因而问题就在于如何挑战并最终超过他们的成绩。
如果要推荐某种全新的技术,有人会说:“你应当让你的工厂生产三维象素芯片,你应当尝试这项技术,并向它投资几百万美元。”我不愿意这样做,因为我们并没有一个完整的证据来表明我们在开发引擎时有必要采用这项技术,也不能证明它可以带来足够的渲染改进。如果有人真的做了一个三维象素开发工具,你可以得到它的深度值,并将其与现有的三角形混合,这可能会是一个有趣的中间步骤,但是坦白的说,我并不认为它会占用如此多的硬件资源。由于现在每个人都在想方设法让自己的产品独树一帜,所以可能会有人用这种技术作为宣传的噱头,但是肯定仅此而已,因为他们还不知道具体怎样使用这项技术。
我认为现在有些非常具有潜力的技术,但是我并不能肯定这就是未来的发展方向,因为尽管这些技术适用于环境的开发,而且你可以将它们用于一些出色的应用,但是还不清楚它们是否适用于角色的开发。你可能会说:“也许你必须用一个变形矩阵构建这个模型,然后当你对它进行Raycast渲染时,让光线在接触变形网格时转向。”但是我还没有编写过这种软件版本。只有在我可以提供一个显示这种技术的工作方式,而且它看起来比你直接可以实现的效果更好的情况下,我才会向别人推荐这项技术。我现在还没有时间来做这件事情,因为我有一些迫在眉睫的研究任务需要完成。
但是我认为这项技术具有一些重要的潜力,有可能会成为一个有趣的发展方向。我现在真正想向所有人介绍的技术是更高阶的表面渲染,包括曲线、细分表面等。现在每个人都对这些技术非常感兴趣。在使用了两年时间之后,我发现它们并不像宣传得那样出色;它们存在不少问题。你直接从外面往往发现不了,对于一个开发人员来说,必须要深入内部才能看到这些技术的本质。
如果你曾经读过相关的研究文献,了解贝赛尔曲线的工作方式,你可能会想,哦,这项技术非常出色,这正是我们在三角形单元之后的前进方向。你并没有意识到所有的“实际”问题,例如使用无效的、标准的,但是退化的边缘。你不能随意地划分一条曲线——除非将其提高到两侧的平面。你不能通过调整其他部分连接两个交叉点。所有这些细微的不足最终会造成很大的不便,尤其是在比较困难的情况下,你很难全面地了解发生问题的环节。三维象素技术也存在所有这些问题,这就是我为什么不愿意上台演讲,描绘未来的远景,因为很多技术从表面上看来很出色,但是当你深入到它们的内部时,往往会得出相反的结论。
对竞争的看法
FS: 既然你打算重新开展研究工作,那么这是否会对id的下一款游戏的推出时间产生一定的影响?
John: 这取决于我们最终决定下一步采取什么措施。我目前正在开发的两种技术都适用于现有的Quake
3框架,因此这些新技术可能会被加入到下一个产品中。
目前我们得到了一个非常重要的机会,即我们可以使用这个牢固的、稳定的、可扩展的、灵活的引擎,从而将我们的开发重点放在游戏设计上,而不需要考虑引擎的开发。。。
从一位管理人员的角度来说,这无疑非常有利。但是,如果我们这样做,我现在正在开发的技术很可能不会在三年、四年甚至更长的时间内被用于新的产品。对于技术的发展来说,这是相当长的一段时间。因此我们需要一个真正强有力的激励来促使我们将一些新技术加入到下一个产品中。
FS: 你是否通过玩其他游戏和观看竞争对手的产品来开展研究工作?
John: 我经常玩Unreal,将来我可能会喜欢玩Unreal
Tournament——尽管我现在还没有玩这款游戏。另外,我还会玩很多演示版的游戏。我不会进行一次真正彻底的调查,玩遍市场上的每款游戏。通常我只是在别人玩最热门的新游戏时旁观一下。而我不会花很多的时间玩其他的游戏。当然,我玩Quake3的时间超出了其他任何一款游戏。
FS: 公司中是否有专人负责这项工作?
John:
Christian和Graeme会玩大部分新游戏。过去是Brandon负责玩每个游戏。当他在id时,所有信息都会从他那里过滤一下。Tim也经常出于一些研究目的玩游戏;Tim在浏览其他游戏方面表现得相当尽责,而Graeme和
Christian 玩其他游戏的主要目的只是娱乐。
Carmack的研究
FS: 你能否简单地介绍一下你的研究内容?
John:我现在正在开发的一个渲染引擎技术是一个更好的照明模型。Quake 2
在计算中添加了发射性照明,它可以带来真实的光线反射效果,但是很多人实际上并不喜欢这种技术,因为它消除了一些阴影,从而让更多的对象陷入黑暗之中,尽管这比较符合实际情况——很多人都喜欢更为明显的阴影。在Quake
3中,我们重新只使用了一个直接照射灯,这在一定程度上是因为我不想在曲线上进行有限元放射计算。另外一项技术将让设计人员可以在任何地方渲染纹理和划分轮廓,从而让我们可以手动改进对象的显示效果。因此,主要有两个研究方向。实际上,它们可以被结合到一起,或者共同使用。它们都给我带来了一些有趣的技术难题。这些技术可能会在我们的下一款产品中得到展示。
我的其他一些研究内容与游戏引擎无关。我正在利用Web摄像头进行一些视觉研究,例如一种头部跟踪装置。我可以利用这种装置,在游戏中加入一些有趣的内容。例如当你来回摇你的头时,你在游戏中扮演的角色也会做出同样的动作。或者像一种支持全息照相的窗口界面,你只需要移动你的头,就可以改变你的形象。我并不认为Web摄像头用于足够快的速度,在没有显著延时的情况下实现上述目标,但是这仍然是一个相当有趣的技术。你可以利用面部表情等,将它提高到新的水平。
我认为这些技术的应用将会超过我的想象。所有短时间的不连续都是由于输入/输出设备的变化所引起的。当人们开始用鼠标进行各种操作时,事情发生了变化。我认为“计算机视觉”已经具备足够的实用性,足以对对象产生“鼠标式”的影响。毕竟,有些事情只能通过鼠标完成,而不能依靠键盘。这仍然处于自由猜想阶段。
现在出现了一些有趣的应用,因为我们现在运用了足够强大的CPU运算能力,可以进行一些相当复杂的计算。与很多图像技术不同,它还有很多尚未解决的研究问题。很多人正在研究这些难题,但是我们没有“SGI实例”来知道怎样将对象组合到一起和提高运算速度。
我所感兴趣的最后一个研究方向是实现更加通用的3D技术,例如能够在3D世界中利用其他的渲染工具(例如HTML)开展工作,以及能够建立不与某个特定游戏相关联的小型网络空间。我认为我们可以构建一个基础设施框架。我们可以开发一款第一人称设计游戏,但是框架具有足够的通用性,因而我们可以用它完成其他任务。
所有现有的软件显然都是针对第一人称射击游戏而设计的,但是人们以后可以利用这些技术执行其他一些有趣的任务。通用化总是要付出不菲的成本。你可以通过技术的专用化提高它的工作效率,但是在某个转折点你可能会发现通用化的成本并不是很高,而拥有一个更加通用的平台所带来的好处更加显著。我认为3D游戏目前正处于一个这样的转折点。
现在的我们与两年前大不相同。当时我们仍然需要考虑每一个很短的帧来提高一点点性能。由于硬件加速的发展——尤其是轮廓加速的实现,以及速度更快的CPU和容量更大的RAM的出现,这种情况已经不复存在。我认为我们的通用平台的速度可以达到专用版本的90%以上,同时可以利用这个平台处理大量其他的、有趣的任务。
综合性问题
FS: 你希望建立一个永久性的Quake世界,让人们可以在其中进行对话和交流吧?
John:
是的,甚至不一定与Quake有关。我认为在利用介质通信方面有很多有趣的工作需要完成。你会看到人们互相交流,在一个服务器上会面等。这方面有很多潜在的发展方向。我不会将其称为虚拟现实,因为VR已经成了一个与死亡和毁灭联系在一起的名次。从来没有一家成功的VR公司,但是我认为其中很多公司失败的原因都是当时并没有相应的技术来实现他们的创意。在很多情况下,创造力和创新精神都会受到技术发展的限制。
Doom就是一个典型的例子。我们用了很多的聪明、才智和创造力才开发出了Doom,但是所有这些聪明才智在五年之前并不能产生任何作用,因为当时的技术限制使得人们不可能开发出像Doom这样的游戏。有些时机是适合出现新的创新技术的。
我认为在未来几年中,将会出现很多这样的创新技术,例如3D界面的通用化。每个人都用一种含糊的、空想的方法预言互联网和Web在未来的某个时候拥有一个3D界面。但是没有人提出真正实现这个目标所需要的具体细节。现在可能是实现这个目标的时机,但是也可能不是。
我很关注这些研究方向,而且我将从事所有这些研究工作。最终我将把那些最有前途的技术研究到底。
FS: 你是否建议年轻人上学?
John:
如果你是为了正确的理由上学,那么学校将是一个很好的学习知识的场所。大学可能是一个信息极为丰富的环境。我现在回想我的大学生活,会觉得我浪费了很多宝贵的时光。我当时应当使用他们的图形工作站和其他设备学习知识。
如果你只是为了获得一个学位,以便找到一份满意的工作,那么我并不支持。如果你上学是为了结识聪明人、拓展知识面和学习新知识,那么我完全支持。有些人在大学的收获比我上面列出的多得多。至于我,我一直都是那种只会看产品手册的学生。我喜欢这种学习方式,但是并不是所有人都喜欢这样。我并不认为大学是一个不好的地方,但是我并不支持这样的观点:“你必须上大学,这是唯一的成功之路”。原因很简单,它并不是唯一的成功之路。
我认为,至少对于一些年轻的、发展迅速的行业(例如互联网和游戏设计)而言,才能和一份表明你的工作经验的简历比学位更加重要。我从来不问别人“你是否有一个学位?”我更关心的是“你做过什么?”如果要从坐在课堂里参加考试或者在家里编写游戏程序来证明你所拥有的天赋之间进行选择,我认为后者不失为一条合理的成长道路。
FS: 最后一个问题——你现在玩的是什么游戏机?
John: 我在家经常玩的游戏机是Nintendo 64,但是除此以外我们还拥有Playstation、Saturn和其他一些游戏机。
Firingsquad 和 Gamers.com
非常感谢John和Anna抽出时间接受我们的访问。我们的这篇文章得到了广泛的好评,我们希望在不久的将来访问您所喜爱的其他程序员。请到我们的留言板上发表您对本访问的看法。
[责编:郭胜民]