Gamedev.net上的IA采访录

来自Infinitipedia
跳到导航 跳到搜索

本文记述了对GameDev.net老会员Flavien Brebion的专访。主题是游戏开发,其中注重提到了他正在参与的精美绝伦的MMO——无限星辰。你可以浏览Flavien在GameDev.net上的日志来更多的了解无限星辰和他的其他项目。

目录

你是GameDev.net的活跃成员了。但考虑到还不认识你的人们,可以先介绍下自己吗。你是谁?是干嘛的?

本人Flavien Brebion,32岁,法国人,现居住于比利时的布鲁塞尔。虽然我现在的公司不是游戏产业(一个利用游戏技术的虚拟现实制作公司),但我本人是个胸怀大志的游戏开发者。

你已经开发游戏多久了?跟我们谈谈当时是怎么起步的?

我从小就玩过游戏编程。我11岁就在Amstrad CPC平台上开发游戏,然后是Atari ST,最终开始在PC上开发。我创作过很多游戏,包括一个鼠标点击操作的冒险游戏,一个isometric单人RPG,甚至做过一个殖民背景的模拟城市游戏。大部分后来都不了了之了,但都可以算达到了Alpha阶段。虽然未完成,但至少都是可玩的。其中放弃的主要原因是兴趣不再,有我自己的原因,也有合作者的原因。

你本人现在在参与哪些项目?

我现在主要,也是唯一的项目就是无限星辰了。简单点说,它是个基于太空背景的模拟类游戏,一个沙盒式的MMO。有点像EVE,但也不一样。比如你是更直接的控制飞船的,而不是靠鼠标点击方向而已。这个想法直接受到了一个老游戏的启发,Elite/Frontier。和Elite一样,其中一个主要的卖点就是它是一个真实的宇宙,有无缝衔接的行星登陆和一个广阔的自动生成的宇宙。

看过你在GameDev.net上日志的人们都会被这个还在开发中的游戏的景致画面所吸引。你是不是一直很热衷于计算机图形学?

可以说是,也可以说不是。当初我找工作的时候,决定要精于一个领域,就是计算机图形学。这也是我的兴趣之一。虽然在其它领域我不是那么精通,但可以说也是在游戏编程的各个领域都小有成就,包括网络,数据库,物理,游戏系统,界面,等等。

你日志里一直提到先进的图形技术。你是怎么让自己保持和最新的图形技术同步的?

通过研究和实验。我会一直研究其它程序员的成果,还会在线搜集一些会议材料和其他公司的报告,比如GDC,SIGGRAPH等。同时,我也一直自己动手尝试这些新的技术,还一直和朋友讨论。当然,我也一直关注各编程网站的最新主题,比如我们的GameDev.net。(虽然我发的帖子不是那么多)

你肯定一直更新最新的显卡吧。你一直都是在最新的硬件上工作的吗?

我不能说自己用的是最新的,但我确实比较频繁的更新自己的电脑,差不多两年一个周期。我现在用的是英特尔Q6600,3G内存加ATI Radeon HD 4890。我差不多明年又要换了。我都等不急去试试固态硬盘了。但愿固态硬盘能大大减少我编译的时间,特别是在代码量很大的情况下(现在我已经有将近50万行代码了)。

当初是怎么想到无限星辰这样的想法的?我记得你当时是在开发一个赛车游戏,然后有了无限星辰的第一个想法。你是怎么从赛车跳跃到行星渲染的?

我在无限星辰的前一个项目是一个科幻类的高速悬浮赛车游戏,代号“光速”。它也已经进入"Alpha"阶段了。当时已经有一个赛道可以玩了。但最终还是放弃了,因为游戏内容不够,而且一个组员要去读大学,他也没时间再完全扑在这个项目上了。也差不多就是在那个阶段,我认识到靠别人是靠不住的,特别是你没有工资付给他们的时候。当时,我还在实验一个过程生成的行星渲染器。所以我就决定我的下一个项目要内容尽量少(讽刺的是,现在无限星辰已经是我经手的内容最多的一个游戏了),所以当时就决定做一个过程生成的太空游戏。而且我尽量地去避免需要复杂动画和人物的游戏。这也不是技术上有限,而是资源上的考虑(要得到好的动画师,比找好的建模和美工都难)。

当你刚开始做无限星辰的时候,你有想过要把它做成一个游戏吗?

一开始,这只是个实验。但后来越来越复杂,我也马上意识到它可以做成一个很好的太空模拟游戏。所以也就几个月后,我就一直想要编一个游戏。

现在无限星辰已经开发多久了?

很难给你一个精确的数字。因为,如果没记错的话,2004年刚开始这个项目的时候,我没有完全集中在这一个项目中。直到后来,05年底左右,我渐渐把注意力都放到了无限星辰上。所以说,开发应该少于5年。因为我本人也是有本职工作的,无限星辰只是一个兼职开发的项目,所以跟别人那种有资金和专职团队的开发项目相比,无限星辰的进度比较慢。

现在有多少人在做这个项目?你一个人吗?还是说你拉了其他一些人来承担部分工作?

程序方面,应该说还是我一个人。确实有些人主动提出要做一个独立的原型开发(比如说现在有一个很复杂的经济系统,已经做了差不多一年了)。其他方面,有一个5人的团队来负责内容的开发,美术,声音,剧本等。设计方便主要还是靠大家。

还有,我们有一个贡献机制。感兴趣的人都可以提交他们的3D模型,贴图,音乐,声效等。有些人提交了很多,而且都是具有专业水平的作品。所以我们现在已经收到上百人提交的相当多的作品。虽然其中只有一部分最终会被用在游戏里,但这比我一开始做梦想要的内容都多。

你是怎么协同团队成员间的工作的?

也正因为核心团队很小,所以基本上任务都是按照大家的专长分配的。我们都不是在一起办公的。每天的沟通都是通过IRC和论坛进行的。资源管理靠的是FTP,网站,还有wiki。我觉得最大的问题还是沟通。因为大家都是在不同的时区,还要忙于现实生活中的其他个人事务。

无限星辰里一个很有趣的特色是过程生成的行星渲染。你可以谈谈是怎么想到这个的,还有你是怎么做的?

这个想法完全是受到Elite: Frontier的启发,在加上我的思考。“他们是怎么在两张A盘上做到那么高级的技术的(在一个模拟真实的宇宙中无缝登陆星球)?而且还是在15年前”。这就是为什么我当时开始钻研过程生成技术,和地形生成/渲染。

这个算法本身还是比较容易理解的,当然其中的细节很值得深究。它是基于四叉树的分支,和地形纹理细分(geo-mipmapping)技术类似(当我写的时候我还不知道什么是地形纹理细分)。其中一个最大的不同是它会变形成一个球形的面,而不是平面。就像一个立方体先转变成一个球形,再用高度图表示。当然,最难的是实现无缝登陆星球。在这中间你会碰到各种各样的小问题。比如,怎么处理个地形间的接缝,光照怎么处理,怎么用过程生成的方法生成高度图,法线贴图和材质生成,怎么保证高分辨率来做成一个真实大小的行星等等。

对你来讲,行星在画面方面的真实程度有多重要?

相当重要,但我更注重看起来舒服并且富有艺术性。代入感可能是影响真实度最重要的因素。举个例子,孢子使用了类似的技术,不过这款游戏当中的星球看起来很单薄并且卡通化,非常像玩具。在无限星辰当中,我打算创造出真实尺寸的星球,玩家们如果愿意的话,可以在星球上探索数个小时。这种真实的比例感觉是很少有游戏能成功营造出来的,并且我认为无限星辰会在这一领域留下令人深刻的印象。

游戏的真实性似乎在逐步增强,甚至在向模拟真实的宇宙方向发展——你真要用经典物理学去定义宇宙、恒星、行星、星系和诸如星云这类的现象吗?

不,经典物理学只会应用在飞船和人体上。而宇宙则是基于现代天文学和天体物理学来构建,并利用开普勒定律计算星球的运行轨道。在星系当中的程序上的实体的规模将会用统计学来得出。你会看到气体巨星、聚星系统、尘埃环、小行星带和表面覆盖冰或火山或者是啥也没有的行星,当然还有Gaian(类地球)行星。它们的存在全都符合真实理论,所以你不会看到一个类地球行星处于其恒星的适于居住的区域之外。所有的实体都做实时运动,所以你可以欣赏到外星球上的日落。

你一定对天文学非常感兴趣——你花了多长时间去研究你要实现的这些特性背后的理论?

是的,我的确对天文学非常感兴趣。过去6年当中,我每个月都会定期去读天文学和物理学方面的杂志。在实现新特性的时候,我会花几个小时重新读一下以前的杂志,再到网上搜一些统计数据和图片,这些可以让我了解我要实现的东西究竟该是什么样。然而,如果有些东西不想预想的那样发展的话,我不会这样固执,如果我们在beta中发现有些东西不起作用或者很无聊,我会立刻去调整这东西,以便让它玩起来更有趣。真实以及代入感,这就是我们的目标,但这并不意味着我们要不惜一切代价去达到这个目标。一个典型的例子就是类地球行星。这些行星在游戏中的出现频率可能比现实中要高,因为这些行星是玩家们能探索和互动的最有趣的行星。

太空,很大,真的很大。用编程来实现如此大规模的模拟一定会把人吓倒——你是怎么解决这个问题的?你用了特殊的数据结构和测量单位来帮助你吗?

正如你所想象的,单独使用一种单位已经不起作用了。我使用了一种分等级的单位系统。在星系等级,用的是光年(LY)。在恒星系统等级,基础单位是千米,并且采用双精度浮点数来表示坐标。在渲染的时候,顶点都以单精度浮点数形式生成,但会被转化到摄像机空间以使大数带来的精度损失降至最低点。

无限星辰将会是一款MMO(大型多人在线游戏)——你是什么时候决定要在游戏中加入MMO元素呢?

项目刚开始的时候,在我完成第一个无缝行星引擎之后。一个程序上的沙盒宇宙在设计方面是一个很有趣的挑战,同时也是一个完美的科幻MMO背景设定,所以这个决定并不奇怪。

你是打算像EVE那样采用单一服务器模式运行,还是打算将负载分散至多个有人数限制的服务器?

实际上两种都有。服务器是类似于EVE的集群式单一服务器,但是出于对于潜在因素的考虑(游戏是基于“实时”的,而不是“指向与点击”),将来可能至少有三组服务器,在欧洲、美国和亚洲各设一组。由于经济和现实上的原因,发布游戏时可能只有一台服务器(在欧洲)并按需求进行扩展。

到目前为止,你在处理MMO元素方面遇到了什么样的挑战?

开发的可扩展性和复杂性(不同的服务器节点间要进行异步数据交换)。服务器部分目前还没有完成,目前为止,可扩展性仍然是并且可能一直是主要问题。举个例子,在MMO当中,客户端是不可信的,所以要在服务器上进行碰撞检测。这种检测非常复杂,因为我们的飞船有不同的碰撞模型(每个推进器,每件武器,甚至是船体的不同部分都有不同的碰撞模型)。在平衡武器的时候,你不仅要考虑武器的类型和伤害,同时还要考虑到在武器高射速的时候对服务器造成的压力。降低SQL请求的次数和缓存数据也是一个问题。

网络通信和客户端/服务端的代码也是你自己写的吗?

是的。网络部分是基于UDP编写的,并带有一个可靠的信息传输层。另外,我用了诸如curl等库来实现HTTP请求和补丁下载等功能。

是什么促使你发布了无限星辰战斗原型这个技术预览?发布这东西的目的是什么?你在这个技术预览当中获得了所有需要的东西了么?如果没有的话,将来我们会看到什么变化?

ICP将不会有升级,因为如果把维护ICP的时间投入到游戏开发当中的话,会让游戏更早的完成。 ICP的主要目的是测试网络模型,测试经典物理学引擎,和对战斗的初步认识。第二个目的就是让社区在等待开发当中能有些动力。ICP能让社区看到漫长的等待是值得的,并且能让社区知道无限星辰并不是一个有始无终的项目。

在无限星辰的开发当中,你用第三方中间件技术了吗?

我用了很多第三方库。比如,我用OpenGL/DirectX来渲染,用OpenIL来载入图像,用OpenAL来处理声音,用ODE来实现物理效果,用TinyXML来处理XML文件,用squish来实现DXT压缩,用Curl来下载文件和存取网络上的数据,用ZLib实现ZIP压缩……还有一些,我已经想不起来了。

你将来打算把你的技术授权给其他工作室使用吗?

是的,我一直是这么打算的。不过,对外授权需要引擎足够成熟,尤其是在文档和工具方面,现在我打算把更多的时间投入到无限星辰的开发当中,以便尽早放出alpha版。对外授权最后肯定是要做的。

在设计无限星辰这样的一款游戏的过程当中,对于这么庞大的游戏区域,你是怎么创造剧情的呢?

一开始,游戏区域可能看起来很大,但是实际上能找到NPC和任务的区域并不大。故事主要发生在人口密集的地区,而星系的其他地方,都是给探险者们准备的礼物。

对于剧情,我们已经有了一个大致的结构,并且已经开始对其进行完善。我们的目的是创造一个富饶且真实的宇宙,在这个宇宙当中,会有复杂的政治阴谋,会有不同势力之间甚至是内部的紧张关系。我们想为玩家提供各种各样的任务,一些是程序化的,另一些则是更加高级的,和前后任务有关的。这个程序上的宇宙的一个特点就是能让你避免遇到大量静态的NPC,所以即使是某些普通任务也能把你带向未知的领域。

这个游戏的剧情是由涵盖一切内容的单一故事组成,还是由好多小故事交织而成?

两样都有!单一故事部分仍处在试验阶段,目前还没写成。然而,我们的计划是提供一个和单机游戏类似的进化的剧情,并且希望剧情能聚焦到某一位玩家身上。故事会被分成几章,并且会有每个玩家都能完成的目标。当然,参与主线剧情是自愿的。

除此之外,会有大量的小任务,有些会是很普通的任务,更多则是更高级的任务,甚至会与上一个任务有关,也可能与前后任务都有关。我们还打算创造一些PvP任务,两个(或多个)玩家可能会同时得到相冲突的任务目标,这样他们就需要竞争才能完成任务。

游戏中有什么派系可以供玩家参与或者扮演吗?

游戏中有三个主要派系。人马座集团,德尔塔联邦和斯塔弗同盟。他们都是人类。我们很早就决定不引入外星种族,因为在大部分游戏或电影中,他们被表现的有些俗气和夸张,而且设定他们依赖于很多专门的内容。除此之外,游戏中还有很多存在利益冲突的较小的派系、组织和公司。

游戏的规模决定了它必须表现出一些令人感兴趣的挑战——你们是如何让它变得有趣的?

这个问题不好回答,因为“有趣”的定义对每一位玩家都是不一样的。一般而言,确保游戏不是对某个人有趣的最好办法,就是尽量使它对每个人都有趣。所以,我们的主要目标就是制作我们认为有趣的游戏,并希望多数玩家可以理解我们的想法。

更明确的说,有些特色是我们非常想要在游戏中体现的,这些特色就是我们对“有趣”的一些非常坚定的理解。例如实时战斗模式(你可以直接操纵自己的飞船飞行,而不是只用鼠标滑动和点击,然后干巴巴的看着飞船战斗),牛顿学物理系统,拥有华丽爆炸效果和各种特效的“星球大战”近程战斗,有行星/卫星实时运行的精确而逼真的宇宙系统,不受制于星门的太空探索的自由等等。

在游戏中,玩家到底能做什么呢?

无限星辰主要是一款沙盒游戏,所以各种不同类型的玩家都可以找到很多事情去做。而战斗将依旧是游戏的重要部分,但我们不会错误的设计一个空沙盒游戏,所以玩家在其他方面也有很多选择。例如贸易,采矿,工商,运输,飞船制造,太空探索等等。当然,所有的任务/探索都与背景故事/人物派系息息相关。

作为玩家,我们可能会四处飞行而永远碰不到其他人——你们有什么方案,可以帮助人们聚集在一起共同游戏吗?

这一点非常正确,但是游戏中,我们把人类聚居的地区称为“核心”。在那里,你将会找到城市,NPC,探索任务,服务,社会活动等等。那里也是新手玩家的出生地。我们非常希望玩家会紧紧围绕这些地区生活。最后,通过某些游戏过程,给外太空探索制造一些危险和麻烦。例如,燃料补给需要填充收集器或者一颗恒星或气体巨星,因为附近没有太空站可以补充燃料。

站在玩家的立场上,你们会设定怎样的因素去激励他们探索丰富的宇宙和奇观?

是利用未知性。因为所有星系都是通过程序生成的,玩家将有机会看到其他人(甚至是开发者)不曾看到过的事物。玩家还可能发现稀有矿藏,或者拜访一些奇异的新区域。这其中的某些地方可能直接包含在故事线中,比如对失落地球的探索。

你认为游戏中社会性方面的内容对玩家重要吗?玩家将通过什么样的方式进行互动?

是的,我认为这将是游戏中很重要的一部分。我们将会提供各种工具来鼓励玩家组队或相互配合。例如,飞船可以装备各种传感器/扫描仪,并通过检测能量排放物来发现其他飞船(由此,飞船隐形也是可行的)。玩家可以组建公司/组织,可以共享飞船/空间站/城市,可以创建自己的规则/法律,可以加入任务小队,或者是大型会战的舰队中。

你们将会如何处理MMO环境下的星系间、行星间的太空飞行?像Elite的那些游戏,会允许玩家加速游戏时间来快速到达目的地。而MMO环境下的所有人都在同一条时间轴上,这办法恐怕就难以实现了。

我们现在的计划是使用3个系统。低速飞行适用于标准航行,曲线跃迁适用于星系内航行(行星至行星),可达到光速。最后,超空间跳跃适用于星际航行或者远距离行星间的跳跃。我们将尽量平衡游戏参数,以保证星系之间的跳跃用不了几分钟时间。

游戏中也有HIPs(跃迁门)将核心连接在一起。这里我们所谈到的是飞船自身的跳跃引擎不能轻易完成的远距离星际航行。

你们有一个庞大而活跃的社区,他们对无限星辰现在和未来的发展方向起到了怎样关键的作用?

他们起到了举足轻重的作用。没有社区的支持,无限星辰不会获得今天(以及将来)的成果。除了提供关于各种想法和设计的反馈信息以外,社区还通过捐献系统,直接负责游戏故事主要内容的设计。

有时候,我会感到有些不知所措。社区给予了我们很多的帮助,但是近几年,大肆的宣传和过高期望让我很担心,游戏的测试版本可能会让一些玩家感到失望。无限星辰现在不是,而且将来也不会是完美的,况且每个人都有自己对游戏的理解。

你如何为无限星辰的开发筹措资金的?有没有外部投资?

我们没有外部投资。近几年,我一直在为游戏的启动存钱。我的计划是从小的起步着手,刚开始可能限定几千名玩家的成本,而后随着时间逐渐发展,增加一些新的服务器以支持更多玩家进行游戏。在这方面,很高兴游戏在社区之外并不怎么出名。因为如果真的有几百万人在期待这款游戏,恐怕我就要重新修订我的计划了。

目前为止,你对游戏的营销策略你有什么打算呢?有传言说游戏已经在PC Gamer之类的杂志上推广了——这是个有意的行为,还是恰巧“发生了”?

这差不多刚刚发生。目前我们还没有积极地推广这款游戏,但如果有杂志或网站有兴趣对我们进行一次访谈,我们将荣幸之至。

对于游戏的收费方式,你有什么意向吗?(预付费,免费,其他?)

我们很有可能采用月付费,无计时限制的收费方式。客户端只提供网站下载,不销售光盘,没有游戏初始费用。

你对数字空间产生的最新想法感兴趣吗?例如微型交易或其他更灵活的收费方式?

微型交易似乎很容易被业余玩家接受,但铁杆玩家则不以为然。我认为,无限星辰作为一款依赖于口碑相传的游戏,走这条路是很不明智的。

关于alpha/beta测试的开始时间有什么消息吗?最终发行版本呢?

Alpha测试将在2010年开始,但有些特性还不完善。beta测试可能会向所有人开放(尽管可参与测试的区域有限),不过在2010年年底,甚至2011年之前应该不会展开beta测试。至于发行版本…..做完再说!

你已经参与无限星辰的开发很长时间了——在紧张的开发过程中,你通常会采取什么方式放松自己呢?

玩游戏,最近我在玩《龙腾世纪》和《求生之路2》;看电视连续剧,比如《豪斯医生》和 《嗜血法医》。我是艾萨克 阿西莫夫的忠实粉丝。

最后,你能根据自己目前的经验,给那些想开发出自己的游戏的朋友一些忠告吗?

仅仅声明一下,我将要说的内容仅仅适用于那些有网络志愿者帮助的独立开发者。

我最想要说的的一点:凡事要从小处着手,循序渐进,逐步成长,尽可能避免对别人的依赖。作为一名程序员,理想的状态就是拥有独立完成程序方面所有内容的技能,并可以使用临时的艺术/音乐素材进行开发,一旦这方面的人才加入了你的项目,你就可以用真正需要的东西来替换临时素材了。有时候,我看到一些项目领导人在任务之初就倾力召集20~30人,很显然,这样的开始就注定了他们的失败。最后一点,你必须坚定不移的遵循你先前做出的决定,即使这不是最好的选择。例如,你可能会发现正在使用的3D引擎有些未预见的局限性,这时你要试着应付这些局限性,而不是更换一个引擎,或者自己制作一个引擎,这会更糟糕。

原文链接:http://www.gamedev.net/reference/business/features/spotlightFB/
文章翻译:Infinity汉化组:415494616,zhaozdi,heloc, zbyzhlsp;部分润色校对:FreemanGL