数以百计的游戏基于Epic公司的Unreal引擎打造,这款引擎由Tim Sweeney和他的团队于1998年首次发布。经过3代发展,Unreal引擎已成为当前游戏产业的基石。Tim Sweeney在接受《程序员》的专访中,谈到了他对未来技术的展望、个人的成长经历,以及对希望进入游戏开发领域新手的建议。
![Tim说,Unreal不仅用于游戏,还广泛用于军事和商业](http://www.programmer.com.cn/wp-content/uploads/2013/02/tim1.jpg)
Tim说,Unreal不仅用于游戏,还广泛用于军事和商业
《程序员》:游戏引擎已发展许多年,请谈谈未来的游戏引擎和Unreal的发展方向。
Tim: 从1980年代开始,主机已成为家庭游戏的主平台,以后大约每隔5年,全新一代的主机就会出现,以赶上芯片速度指数发展的步伐。但最新一代主机 PlayStation 3和Xbox 360都已问世六七年了,硬件处理速度似乎开始停滞不前。而PC则代表了最新的硬件发展,每年都会在性能上得到提升,这一变化,也在影响游戏产业,游戏引 擎与游戏开发公司开始同时兼顾多个平台的发展。Unreal 3在2006年随着上一代主机推出,不论新一代的游戏主机是否会在近期出现,我们在游戏引擎方面已做好了准备。
未来的游戏引擎将实现电影级的画面效果,那时回头再看今天的游戏,仿佛只是木偶剧。但要真正实现这个目标,也许还需要十五年时间。
另一方面,游戏开发团队越来越大,成本越来越高,未来的游戏引擎还需要提高开发效率。如果使用Unreal 4,那么过去需要两年或者更多时间才能完成的工作,将有望在一年内完成。
《程序员》:当未来有一天,硬件性能足够强大,不再成为游戏的瓶颈时,还有什么因素会制约游戏的发展?
Tim: 我们知道光线应该如何通过真实的场景,也知道如何模拟物理运动,因此当计算能力足够强大时,我们将能够完全模拟现实。当目前的处理能力再提高几百或上千倍 时,我们也许就能拥有完全现实般的感受,我认为未来这方面将不再是游戏的瓶颈。而真正的制约在于模拟人的行为,游戏中通常都会包含通过人工智能操纵的人 物,即使拥有无尽的处理能力,我们还是不能完全模拟人的语言、思考和交互。我认为这些问题,需要依靠科学上的突破才能解决,也许是通过一种全新的算法,也 许要等到我们完全理解大脑的工作机制,并能通过计算机模拟时才可能实现。
《程序员》:John Carmack目前对研究头戴显示技术(HMD)非常热衷,你认为这项技术会改变游戏领域吗?
Tim: 我认为这项技术不仅会改变游戏领域,还将颠覆整个电子产业。第一代头戴显示技术并不成熟,体积大、佩戴不方便,这样的设备只对游戏玩家才有意义。但我们能 想象,几年后,当头戴显示的质量将变得足够高,佩戴又很便捷时,你将不再需要任何其他显示设备。无论电脑、电视还是手机屏幕都已可有可无,你只要拥有一个 头戴显示器便能应对所有场景。
我认为只需要5~10年时间,这项技术就能发展成熟、拥有出色的现实效果和低廉的价格。从另一个角度看,目前的高端电视也十分昂贵,如果有机会将电视的功能集成到相对廉价的头戴显示器中,仅从经济性来说,整个产业也会朝着这个方向发展。
另 一个与之相关、可能改变游戏领域的技术是无处不在的传感器,将类似Kinect的体感技术与头戴显示结合起来,使用者便拥有了一个完全基于手势的界面,它 有更丰富的表达能力,将远远胜过用手指操作手机。因为目前我们在手机上的操作被物理屏幕束缚,当拥有完全基于手势的界面时,物理尺寸将不再对我们产生制 约,你可以拥有更大的键盘,或者通过手势在游戏中更精确地进行操控。
《程序员》:增强现实将怎样影响游戏领域?这项技术进入我们的生活还有哪些障碍
Tim:增强现实技术可以归为两类:一是将计算机信息转化成图像,这正是Epic所做的;另一类是将现实世界的图景传输给计算机,让计算机理解我们周围的世界。
增强现实技术,将使游戏中的现实感大幅提升,一方面使用者可以身处真实场景,另一方面还可以通过在双眼前显示独立画面,令他们得到得前所未有的3D体验。当显示分辨率足够高,刷新又足够快时,用户将很难分辨自己到底身处真实世界还是幻境。
我认为,增强现实得到应用最大的障碍在于如何引导市场。如今,我们的市场由电视、游戏主机、计算机、智能手机和平板等组成。但在未来,这些分割的市场很可能被一种更简单的增强现实设备所统一。这意味着,当前的商业巨头或被变革摧毁或在变革中重生,就像个人电脑改变了大型机,智能手机和平板改变了PC产业。在 这次转变中成功的企业可能会成为下一个苹果,现有的商业巨头们若不重视这项技术,将来可能会被远远地抛开。然而,目前市场领先的科技企业并不甘心立刻抛下 自己赚钱的产品,将未来押在一项尚不十分明朗的技术上。
目前我们拥有的技术,距离打造理想的增强现实设备其实已非常接近。我们需要微型高分辨率显示屏,还需要复杂的光学透镜,使我们的双眼总能在合适的位置聚焦。我认为,假如科技企业真正投入精力进行研究,5年左右就能实现。
《程序员》:请谈谈HTML5,以及未来的Web游戏
Tim:HTML5、 JavaScript和浏览器技术成熟的速度非常快,我很高兴看到这一点。过去我们若想开发Web游戏,需要利用Adobe Flash这项专有技术,它在浏览器兼容性方面存在许多问题。HTML5显然是一种开发Web应用更自然、兼容性也更佳的方式,我相信它会改变我们开发 Web游戏的方式。
以往我们看到的大多是小团队开发的简单2D Web游戏,而如今,我们已拥有一套开发复杂3D Web游戏的技术——通过Unreal开发的游戏可以移植到Web;另一些开发工具,如Clang可以将C++代码编译为LLVM字节码,再交叉编译为 JavaScript代码。
因而从理论上说,你可以将所有复杂的C++程序转变为可以跨浏览器运行的Web应用。一旦拥有这样的能力,意味着你能将所有通过现代游戏引擎开发的游戏交叉编译并部署在浏览器上。Web将作为一个独立的平台,拥有与PC、移动终端相同的地位。
尽管目前JavaScript和浏览器运行效率较低,Bug也较多,但我认为未来的一两年,在浏览器开发者的努力下,这种情况将得到改善。目前 Mozilla和它的Firefox在这方面处于领先,它们在浏览器中完成了非常健壮和高效的JavaScript实现,其他浏览器厂商(除了微软对 WebGL说“不”令人费解)也正在迎头赶上。
《程序员》:你如何开始编程,又是怎样进入游戏开发领域的?
Tim:我10岁第一次接触计算机,在那之后,我绝大多数清醒的时间都被编程占据了。计算机能执行我的指令,并总能得到我所期望的结果,这真是件奇妙的事!我小时候也做过一些更“实实在在”的东西,比如小马车什么的,但既难做,还不按我期望的方式运转。程序则不同,你想写多复杂的代码都可以,计算机总能执行。而且 相对于世界上最有趣的程序,最复杂的机械可要简单多了。
小时候我也花了不少时间玩电子游戏,但学习编程后,就很少再玩,而是开始编写它们了,因为编写游戏能带给我更多乐趣。在我1988年进入大学前,早就是经验丰富的编程老手了。在挑选专业时,我没选择再“正式地”攻读一次计算机科学,而 是选择了机械工程,这是一个完全不同的领域,我在这里学到了很多数学知识。
我并非生来就是游戏程序员,我曾写过不少类型的应用,像BBS、电子表格、字处理软件,在我专业从事游戏编程之前,还写过许多小游戏。1991年,我的一个游戏在邻里的小朋友间很受欢迎,这给了我很大的信心。我决定将其发布,并获得了成功,Epic公司也从此建立。
我最初通过Apple II手册自学Basic编程,这是我头十年的宝典。到了1990年代早期,Michael Abrash在《Dr. Dobb’s Journal》上撰写了一系列介绍计算机图形和纹理编程的文章,在这之前,我从来没想到可以用计算机渲染真实的3D环境。从那之后,我开始痴迷于3D编 程,并开始创建第一个Unreal引擎。如今,我几乎每年都会与Abrash交流,他是一个聪明绝顶的人,与像他这样天才交流真是妙不可言,他们思考的方 式总是与众不同。
![Tim学习游戏编程的工具原本是他哥哥送给父亲的生日礼物](https://i-blog.csdnimg.cn/blog_migrate/f39674d57948890805ab426ebf28dc02.jpeg)
Tim学习游戏编程的工具原本是他哥哥送给父亲的生日礼物
《程序员》:对你影响最大的人是谁?
Tim:那肯定是John Carmack,是他发明了现代3D游戏,他的Wolfenstein、Doom和Quake引擎都是计算机图形领域划时代的作品。在Carmack之 前,用价值百万美元的计算机也只能生成低质量的3D场景,而他令低端PC也能运行3D游戏。在这个领域,没有人比他的贡献更大,是他将计算机从2D时代引 入了3D纪元。
《程序员》:你是如何提高自己编程技能的?
Tim:一旦我有了新想法,就会试着开发原型,例如新的3D算法或语言处理系统,这些挑战自我的尝试并不总能成功,但能从中获得乐趣并提升技能。另一个有趣的学习 方式是尝试新的编程语言。学习一门新语言,意味着尝试一种新的思考方式,这让你能从另一个角度观察问题,即使是曾经遇到的老问题。每个人都熟悉C++,但 学习JavaScript这样的Web编程语言,学习Haskell、ML这样的纯函数语言也很有意义。在这个过程中你将学到许多有价值的技能,能将其应 用在C++这样的常规编程中。Haskell是我最喜欢的编程语言,它迫使你用全新的方式思考问题,我建议每位不甘平庸的程序员都来学习它,即使你并不真 的用它编写实际应用。在学习的过程中,你将掌握一些非常高级而有趣的技能,进而应用到C++项目中。
《程序员》:对于一款成功的游戏,你觉得哪方面最重要,是剧情、美工还是特效?
Tim: 我觉得单独一方面成就不了一款成功的游戏,看看成功的高端游戏你就能发现,它们都拥有流畅的操控设计、出色的显示和声音、精美的画面,这些因素结合在一起,你才会觉得一切正常。若在某方面存在短板,都会让你觉得游戏不能令人满意。在Epic,我们也是很努力地做到调和不同小组,让每款游戏并不只是单独被某方面所强势驱动。打造一款游戏需要设计师、程序员、艺术人员和制作人紧密合作,在这方面有经验的公司才能获得成功,那些由程序员或艺术人员主导的游戏, 往往会存在问题。
《程序员》:对于希望从事游戏开发的人,应该怎样开始,你有哪些建议?
Tim:游戏开发是项极复杂的工程,大团队中的开发者会专攻某项技能,例如物理程序员专门解决游戏开发中的物理问题,还有AI程序员、音乐程序员、图像程序员等。对于移动平台游戏,团队往往较小,开发者需要是全才。不过从目前的趋势看,游戏开发领域的分工将越来越细。
若想取得成功需要非常努力,也许还需要天赋。成为游戏开发者的最好方式是投入大量时间亲身尝试,在其中学习、构造和感受它。可以从最简单的2D游戏开始,用不了很久,许多人就能尝试开发类似《Angry Birds》机制的游戏了。在每个小游戏的开发过程中尝试学习一些如3D、OpenGL这样的技能,别指望一开始就打造复杂的游戏,因为你会遇到太多自己不熟悉的技术领域,导致无法最终完成。在我发行第一款游戏前,已开发了上百个小游戏。但这一切是值得的,这个专心致志的过程将把你塑造成一位优秀的程序员,或许还会激发你关于开发游戏的新思路。
关于如何开始,我认为最重要的是要有空余时间,然后利用这些空余时间完成自己的项目。在美国相对容易做到,因为每个人都有大片的个人时间,大家并不太把学校当回事,但我知道中国的情况不同。这需要来自家长的支持,如同学习其他技能或考大学一样,需要给孩子们专门留出编程的时间。所有我认识的杰出的游戏开发者,在他们上大学前,在他们专业从事开发前,早已拥有丰富的游戏开发经验了。