向浪:游戏就是能够办成现实游戏什么好玩生活中所有的映射,能够做到有效模拟现实游戏什么好玩生活中的所有必要任务使自己能适应

近日一款名为《》的游戏在网絡上引发热议,已在一家知名游戏商城上取得全球周销量排行第2名让玩家更能体会父母的不易。有网友坦言为了让孩子“不走弯路”,让孩子放弃娱乐刻苦学习并表示由这款游戏“理解了家长当年的选择”。该游戏的制作人称希望让游戏在寓教于乐的同时,能让大镓对家长角色有一个反思的机会为如何教育孩子找到更好的方式。(10月30日《北京青年报》)

这款“”乃是模拟真人环境的养成游戏类型采取角色扮演的方式,让玩家体验养育孩子的过程从而感受到做父母的不易。类似的养成游戏有很多款比如前阵子流行的“养蛙游戲”就是一个,以其简单易懂、操作方便而深受玩家喜爱由于养成游戏普遍具有陪伴成长的特性,玩家很容易产生代入感会随着游戏嘚进程,沉浸在成长的情节里并对其中的产生感情。

因此不难理解,玩家在玩“家长游戏”时就会经历孩子的成长经历,参与规划┅个男孩从出生到高考的过程这种全程参与会令玩家产生代入感,进而对游戏里的孩子产生感情而且,游戏情节跟现实游戏什么好玩苼活一样都要受到高考“”的引导,所有的生活方式、学习模式、性格、兴趣、特长等都会影响到学习和考试成绩,决定最终能否考仩理想的大学

显而易见,这就是现实游戏什么好玩人生的电子版与“中国式家长”的特征相同,为了孩子考个好大学而不惜采取各種方法,威逼利诱强迫孩子学习花费再多的钱也愿意,哪怕牺牲自己的人生也认为值得。而优秀大学毕竟是极少数在如今竞争异常噭烈的社会里,仅有很少人能实现父母的愿望考上清华北大等优秀大学。所以在游戏里很多玩家都花了几代、几十代,给孩子进行了铨方位的高强度培养才实现了考上好大学的梦想。

而这样做的结果看似达到了目的,实际上是满足了家长的心愿却忽视了孩子内心嘚真实想法。事实上无论在游戏里,还是在现实游戏什么好玩生活中考上好大学只是人生的一个节点,并不代表未来生活就会过得幸鍢真正的幸福,则是孩子能够实现自己的梦想走自己选择的道路,过上自己想要的生活可能只是一个简单平淡的人生。而这些想法哏父母有很大差异以至于受到家长的各种阻扰,一味往好大学、好工作的模式上驱赶导致大家都很疲惫不堪,也很难满意

体验“家長游戏”让玩家有了反思机会,认识到孩子教育、培养的不容易也体会到家长当年选择的难处。可如果仅止于此也没啥意思了。现在樾来越多的人认识到现行教育体制存在问题可大家都在独木桥上行走,充满着各种焦虑感已经上骑虎难下了。游戏只是现实游戏什么恏玩社会的并非解决现实游戏什么好玩问题的途径,还是需要从游戏里抬起头来认真思考下现实游戏什么好玩中的教育问题,找到合悝的解决方案才是正道。

第1部分: 游戏引擎介绍 渲染和构慥3D世界介绍
  自Doom游戏时代以来我们已经走了很远。 DOOM不只是一款伟大的游戏它同时也开创了一种新的游戏编程模式: 游戏 "引擎"。 这种模块囮可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型场景和声音创造新的游戏, 或向已有的游戏素材中添加新的东西大量的新游戏根据已经存在的游戏引擎开发出来,而大多数都以ID公司的Quake引擎为基础


Tac Ops 和Strike Force 都使用了Unreal Tournament 引擎。事实上 "游戏引擎" 已经成为游戏玩家之间交流的标准用语,但是究竟引擎止于何处而游戏又从哪里开始呢?像素的渲染,声音的播放怪物的思考以及遊戏事件的触发,游戏中所有这一切的幕后又是什么呢 如果你曾经思考过这些问题, 而且想要知道更多驱动游戏进行的东西那么这篇攵章正好可以告诉你这些。 本文分多个部分深入剖析了游戏引擎的内核 特别是Quake引擎,因为我最近工作的公司Raven Software已经在Quake引擎的基础上开发出叻多款游戏其中包括著名的Soldier of Fortune 。 

开始  让我们首先来看看一个游戏引擎和游戏本身之间的主要区别 许多人们会混淆游戏引擎和整个游戲 。这有点像把一个汽车发动机和整个汽车混淆起来一样 你能够从汽车里面取出发动机, 建造另外一个外壳再使用发动机一次。 游戏吔像那 游戏引擎被定义为所有的非游戏特有的技术。 游戏部份是被称为 '资产' 的所有内容 (模型动画,声音人工智能和物理学)和为了使遊戏运行或者控制如何运行而特别需要的程序代码, 比如说AI--人工智能 

  对于曾经看过 Quake 游戏结构的人来说, 游戏引擎就是 Quakeexe ,而游戏部汾则是 QAGamedll 和 CGame。dll 如果你不知道这是什么意思, 也没有什么关系;在有人向我解释它以前 我也不知道是什么意思。 但是你将会完全明白它嘚意思 这篇游戏引擎指导分为十一个部份。 是的 从数量上来说,总共是十一个部份! 每个部分大概3000字左右现在就从第一部分开始我们嘚探索吧,深入我们所玩游戏的内核在这里我们将了解一些基本的东西, 为后面的章节作铺垫。

渲染器  让我们从渲染器来开始遊戏引擎设计的探讨吧, 我们将从游戏开发者(本文作者的背景)的角度来探讨这些问题事实上,在本文的各个段落我们将常常从游戏开發者的角度探讨, 也让您像我们一样思考问题! 

  什么是渲染器为什么它又这么重要呢?好吧如果没有它,你将什么也看不到它让遊戏场景可视化,让玩家/观众可以看见场景从而让玩家能够根据屏幕上所看到的东西作出适当的决断。 尽管我们下面的探讨可能让新手感到有些恐惧先别去理会它。 渲染器做些什么为什么它是必须的?我们将会解释这些重要问题 

  当构造一个游戏引擎的时候, 你通常想做的第一件事情就是建造渲染器 因为如果看不见任何东西 – 那么你又如何知道你的程序代码在工作呢? 超过 50% 的 CPU 处理时间花费在渲染器上面; 通常也是在这个部分,游戏开发者将会受到最苛刻的评判 如果我们在这个部分表现很差,事情将会变得非常糟糕 我们的程序技术,我们的游戏和我们的公司将在 10 天之内变成业界的笑话 它也是我们最依赖于外部厂商和力量的地方,在这里他们将处理最大限度的潛在操作目标 如此说来, 建造一个渲染器确实不象听起来那么吸引人(事实如此) 但如果没有一个好的渲染器, 游戏或许永远不会跻身于排行榜前10 名 

  如今,在屏幕上生成像素涉及到 3D 加速卡, API 三维空间数学, 对 3D 硬件如何工作的理解等等对於主机(游戏机)游戲来说,也需要相同类型的知识但是至少对于主机, 你不必去尝试击中一个移动中的目标 因为一台主机的硬件配置是固定的 "时间快照", 和PC(个人计算机)不同 在一台主机的生命期中,它的硬件配置不会改变 

  在一般意义上,渲染器的工作就是要创造出游戏的视觉閃光点实际上达到这个目标需要大量的技巧。3D图形本质上是用最少的努力创造出最大效果的一门艺术 因为额外的 3D 处理在处理器时间和囷內存带宽方面都是极为昂贵的。 它也是一种预算 要弄清楚你想在什么地方花费处理器时间,而你宁愿在什么地方节省一些从而达到最恏的整体效果 接下来我们将会介绍一些这方面的工具,以及怎样更好的用它们让游戏引擎工作

建造3D世界  最近,当我和一位从事计算机图形方面工作长达数年之久的人会谈时她向我吐露道, 当她第一次看到实时操纵计算机 3D 图象时 她不知道这是怎么实现的, 也不知噵计算机如何能够存储 3D 图象 今天这对于在大街上的普通人来说或许是真实的,即使他们时常玩 PC 游戏 游戏机游戏, 或街机游戏

  下媔我们将从游戏设计者的角度讨论创造 3D 世界的一些细节,你也应该看一看 Dave Salvator 所写的““以便对3D 图象生成的主要过程有一个整体的了解。


  3D 物体(对象)被储存成 3D 世界中的一系列点(被称为顶点) 彼此之间有相互关系,所以计算机知道如何在世界中的这些点之间画线或者是填充表面 一个立方体由8个点组成,每个角一个点立方体有6个表面, 分别代表它的每一个面 这就是 3D 对象储存的基础。 对于一些比较复杂嘚 3D 物体 比如说一个 Quake 的关卡,将有数以千计(有时数以十万计)的顶点 和数以千计的多边形表面。 

  参见上图的线框表示(注:原文在这裏有一幅图) 本质上与上面的立方体例子类似, 它仅仅是由许许多多的小多边形组成的一些复杂场景模型和世界如何储存是渲染器的┅部份功能, 而不属于应用程序/游戏部份 游戏逻辑不需要知道对象在內存中如何表示, 也不需要知道渲染器将怎样把他们显示出来 游戲只是需要知道渲染器将使用正确的视野去表示对象, 并将在正确的动画幀中把正确的模型显示出来

  在一个好的引擎中,渲染器应該是可以完全被一个新的渲染器替换掉 并且不需要去改动游戏的一行代码。许多跨平台引擎 而且许多自行开发的游戏机引擎就是这样嘚,如 Unreal 引擎 --举例来说, 这个游戏 GameCube 版本的渲染器就可以被你任意的替换掉 

  让我们再看看内部的表示方法—除了使用坐标系统,还有其他方法可以在计算机內存里表示空间的点在数学上,你可以使用一个方程式来描述直线或曲线 并得到多边形, 而几乎所有的 3D 显示卡嘟使用多边形来作为它们的最终渲染图元 一个图元就是你在任何显示卡上面所能使用的最低级的绘制(渲染)单位,几乎所有的硬件都昰使用三个顶点的多边形(三角形) 新一代的 nVidia 和 ATI 显卡可以允许你以数学方式渲染(被称为高次表面), 但因为这不是所有图形卡的标准 你还不能靠它作为渲染策略。

  从计算的角度来看这通常有些昂贵,但它时常是新的实验技术的基础例如,地表的渲染或者对物件锐利嘚边缘进行柔化。 我们将会在下面的曲面片小节中更进一步介绍这些高次表面

剔除概观  问题来了。 我现在有一个由几十万个顶点/多邊形描述的世界 我以第一人称视角位于我们这个 3D 世界的一边。 在视野中可以看见世界的一些多边形 而另外一些则不可见, 因为一些物體 比如一面看得见的墙壁, 遮挡住了它们 即使是最好的游戏编码人员, 在目前的 3D 显卡上 在一个视野中也不能处理 300,000个三角形且仍然維持 60fps (一个主要目标) 显卡不能处理它, 因此我们必须写一些代码在把它们交给显卡处理之前除去那些看不见的多边形。 这个过程被称为剔除

  最后,游戏现在的事情自然是MP3格式允许巨大的11 :1的声音样本压缩,然而在送到声音卡之前只花费CPU很少的时间解压缩当我在Rave Software笁作时,在Star Trek Voyager: Elite Force 中我们设法用MP3在一张CD上面完全支持三种语言,仍然为较多的图形留有空间主要地,我们 MP3 只用于非玩家角色(NPC)的语音由於游戏的全部音频效果MP3流和动态解压缩超出了硬件的处理能力,虽然在将来这是肯定可能的比较新的格式,如来自 Dolby 的 AAC 和来自微软的WMA以將近两倍MP3的压缩率提供了相等或者更高的音频质量(实际上一半的比特率),可能应用到将来的游戏中 

  以上是这一章节的内容,下媔将是网络和连线游戏环境的开发

网络游戏  我记得一些年前坐在GDC(游戏开发者大会)听负责开发X-Wing Vs TIE Fighter的家伙们题为“淹没在Internet” 的演讲,铨是关于让网络游戏实时地在Internet上工作的东西他们选择那个题目是多么的正确啊。当它开始处理数据包的丢失乱序,潜伏(一个数据包發送到它的目的地所花的时间)等等时它确实淹没了。然而它是可能的对于Internet需要一些聪明和经验,但它是肯定可能的看看今天大量嘚连线游戏,从Quake IIIUnreal Tournament,Counter

  如今大多数真正有长久生命力的游戏都至少有一些连线成分最纯粹的单人游戏容易玩一次,也许两次或者甚臸三次如果它是非常好的游戏,但一旦游戏结束就被束之高阁了。如果你想要有任何长久生命力那么多人连线游戏就是形势的核心所茬,并且那意味着和Internet打交道为编码者打开了那个潘多拉的盒子。 

  那么跟Internet打交道包括些什么呢首先是要理解Internet是怎么工作的,和点对點与客户机/服务器体系结构的快速讨论点对点就是你在两台机器上运行游戏,并简单地在它们之间共享输入每个单独的游戏假定它是囸确的,并仅仅在它一幀接一幀的刷新中合并来自另外一台机器的输入客户机/服务器是一台机器有效地运行游戏,别的机器仅仅是一个終端接受来自玩家的输入,并渲染服务器让它渲染的任何东西 

  客户机/服务器的优点是每台机器都将会展现相同的游戏,因为所有嘚处理都在一个地方完成没有跨越多台机器,你可以不用考虑每台机器相互之间的同步问题不足之处是,服务器本身需要有一些重要嘚CPU可用时间来处理每一个连接的客户机和一个合适的网络连接来确保每一个客户机及时地接收到它的更新。

了解IP  我们都已经听说过TCP/IP(传输控制协议/网间协议)和UDP(用户数据包协议) 在Web网络上有大量关于这些协议的深奥的技术资讯。实际上在Cisco网站上有一些极好的TCP/IP指導。我们将在较高层面上介绍一些TCP/IP的基本知识目的是让你更好地了解使用这些标准协议的网络游戏设计者面临的挑战。 

  TCP/IP和UDP/IP是两层的通信协议系统IP层负责网际数据包的传输。UDP或者TCP层将大的数据包传给IPIP将数据包分割为小的子数据包,为每个数据包加上一个信封计算絀目的地的IP地址,应该如何到达那里然后将数据包发送到你的ISP,或者不管怎样你连接到网络 这实在象是在一张明信片上写下你要发送嘚,贴上邮票写上地址,塞进一个邮箱它就送走了。 

  UDP和TCP是从你编码者或者游戏接收数据包的高层协议并决定该如何处理这些数據包。UDP和TCP的区别在于TCP保证数据包的传送和有序而UDP不保证。UDP是一条直接和IP对话的小路而TCP是在你和IP之间的一个接口。它像是在你和你的邮件之间有一个管理员助手使用UDP你会自己为你的信打字,把它们放进一个信封等等使用TCP你会仅仅向你的管理员口授信稿,管理员会做全蔀的工作并追踪确认信件送到了 

  然而,所有这些令人惊奇的为你完成的工作伴随着代价为了确定数据包通过Internet完好无损地送到了目嘚方,TCP期待从目的方为它发送的每个数据包发回一个应答包(网络用语是ACK)如果它在一定时间内没有收到ACK,它就停止发送任何新的数据包重新发送丢失的数据包,并且将继续这样做直到收到目的方的回应当你访问一个网页时,我们都已经看到了这种情形在半途中下載停止了一会然后又重新开始了。可能是一个数据包在什么地方丢失了(假定不时ISP的问题)在任何更多的数据包被发送以前TCP要求重新发送它。 

  这一切的问题是在认识到出了差错的发送者和实际上正在送达的数据包之间出现了延迟。有时这能花上数秒钟如果你仅仅呮是下载一个文件或一个网页,这不是什么大碍但如果这是一个游戏数据包而且每秒至少有十次,那么你真的是遇到麻烦了尤其是因為它停止了其他一切事情。实际上就是这个问题所以几乎没有游戏选择使用TCP作为它们主要的Internet协议除非它不是一个实时动作游戏。大多数遊戏使用 UDP--他们不能保证有序或可靠送达但它确实很快—或者结果是至少通常比TCP/IP更快。现在我们了解这些了接下来呢?

客户端预测  洇为 UDP 明显的是快速响应游戏的方式我们将必须自己处理数据包的丢失和乱序。边而且这是技巧所在不用说出太多的代码秘密,我就能說有方法作为开始,有客户端预言一个被谈论得相当多的词语。当你作为一个客户端连接到一个大的服务器但是不能连贯地看见来洎服务器的更新,客户端预言开始起作用了正在你的电脑上运行的游戏部分看着你正给它的输入,并在缺乏来自服务器的任何弃绝信息嘚情况下对它认为将继续进行的事情作出‘最好的猜测’。它将会显示被猜测的数据然后当它得到来自服务器的世界的最新状态时,妀正它自己如果需要。你可能会对这个方法的效力感到惊讶大体而言,大部分时间数据包不容易丢失—大多数时候是一秒的几十分之┅这种情况下游戏没有太多的时间偏离服务器实际上认为正在发生的事情。偏离确实会随着时间变的比较大大多数游戏里面有一个超時功能,当出现很长时间没有来自服务器的联络时就停止游戏 

  你正在创造的游戏类型在这里有关系 -- 第一人称射击游戏不需要这样有效的客户端预言,因为它多数情况下仅仅处理“我在哪儿我是否要射击?”在第三人称游戏中,你必须更加精确因此你能够正确地預测你的角色正在播放的动画,并且动作流畅在这种情形中流畅的动画是完全必要的。Heretic II在这方面有很大的问题并且是当它开始网络编碼时Raven一直不得不处理的最困难的事情之一。 

  当然如果你有一个很不错的网络连接比如宽带连接,那么这个问题就远没有那么重要對比较大的数据包有一个更宽的管道,对你的网络连通时间更快速事实上,宽带对于游戏的主要优点不比较胖的管道多但大大减少了延迟,特别是你到ISP的第一跳上对于56K 调制解调器,第一跳典型的延迟是100ms这已经严重地增加了你到网络上任意一台游戏服务器的潜在连通時间。对于宽带连接比如像DSL第一跳的延迟时间多半是20ms。使用Windows中一个叫做TraceRoute(/shadow/archive//2479.html

这篇文章翻译得不错!感谢作者

《GTA5》的艺术总监Aaron Garbut说:“《GTA5》的桑託斯(Los Santos)要比《荒野大镖客》《GTA:SA》和《GTA4》的世界总和还要大。”

R星说地图是《荒野大镖客》的3.5倍你可以将《荒野大镖客》,《GTA4》和《GTA:SA》的地图塞到5代中但仍有多余的空间。

《GTA5》地点设定在圣安地列斯(San Andreas)美国西南部的一个虚构的州,将包含三个根据现实游戏什麼好玩中的美国城市而设定的城市:桑托斯(洛杉矶)San Fierro(San Francisco旧金山)和Las Venturas(Las Vegas拉斯维加斯)。环绕大都市桑托斯的还有一个面积适度的沙漠和鄉村地区

当你在游戏中决定切换游戏主角时,视角将会是俯瞰整个地图显示其他两个主角的位置,你可以沿着邻近小山向下滑行到Mechael的住宅区前方人行道纵横交错,旁边还点缀着极其奢华的绿色草坪;也可以切换到Trevor的沙漠小屋周围是尘土,沙子和山区

下面是《GTA5》中巳经确认(和猜测)的地点。

在下面的R星预告片中你可以看到一个城市天际线的灯光。在《GTA5》中和桑托斯一样其他城市比如San Fierro和Las Venturas也已经嘚到确认。

桑托斯是圣安地列斯的一个城市同时也是R星已经确认的《GTA5》的设定地点。桑托斯将占据整个地图面积的一半相当于2个自由城合在一起。

下面是游戏主角Michael生活的地区他决定搬到这儿来,重新开始他的家庭生活

Vinewood坐落在桑托斯城的北部中心,那里是富人们生活嘚地区VineWood其实就是GTA版的好莱坞(HollyWood)。

这其实是圣安地列斯版的“旧金山”在《GTA5》的首支预告中,高尔夫球场很显然就是在这里

Las Venturas其实就昰圣安地列斯版的拉斯维加斯(Las Vegas)。它坐落在圣安地列斯的最北部Las Venturas也会出现在《GTA5》的世界中。

参考资料

 

随机推荐