您的位置:澳门皇家赌场91资源站 > www.91019.com > 论述开放世界中的内容间隔及关卡设计重要性

论述开放世界中的内容间隔及关卡设计重要性

2019-11-19 05:51

当你回想起自己最棒的游戏体验时,可曾想到这些体验有何共同点?

打穿了《刺客信条3》之后,我不得不说自己很失望。不过本文的重点不是对它进行批评,而是对游戏中沙盒元素的探讨。所谓“沙盒”游戏或“开放世界”游戏,是相对于线性游戏而言的。线性游戏会把一系列关卡一个接一个的连接起来,让你从头玩到尾。而沙盒游戏则会把你放置在一个大环境中,你可以选择是闲逛还是完成任务。像《侠盗猎车》,《刺客信条》,《孤岛危机》都包含沙盒元素,还有一些像《上古卷轴5:天际》以及《辐射》一样的角色扮演游戏也属于此类。现在让我们来分析一下哪些游戏的沙盒元素利用的很成功,哪些很失败吧。

理想的过程内容生成(Procedural Content Generation,简称PCG)算法是,只需按下一个键就生成整个世界。

是令人惊叹的画面保真度,还是高质量的音效?还是像我一样,更看重游戏的“流动”状态?游戏过程中准确而完美呈现的“内容”(注:即你在游戏中所做或体验的事情)间隔?

任务结构

但那太困难了,所以我们还没达到那个境界。在本文中,我们提出的思路也许可以让读者离那个理想界境更近一步。

对我来说,这种间隔体验就是游戏设计的最重要元素。它就好比是节奏或者乐曲。

www.91019.com 1

PCG是生成一切,包括背景、声音、剧情的算法。是个诱人的想法,对吧?

当我为自己的桌面游戏“设计”新冒险或战役内容时,我通常会遵循一个特定的叙事结构。

《蝙蝠侠:阿卡姆之城》用支线任务介绍了主线故事中没有涉及到的DC漫画角色。可以说是开放世界中对支线任务活用的典范。

手动制作游戏世界既费时间又占用空间。自《Starflight》和《Elite》的诞生之日起,开发者们就致力于使用电脑完成无限的创意。

“三步走结构

开放世界的标志性经历就是你总觉得自己有事情做,而更主要的是,你自发的想去做这些事情。上古卷轴就是个很好的例子,在游戏中支线任务的丰富多彩甚至让你很容易把主线任务给忘掉。而《恶名昭彰》的支线任务则都是些杀死多少个敌人或追踪某个人5分钟等单调而重复的任务。

粗略地说,开发者们依赖PCG的原因有三:

www.91019.com 2三步走结构:图中红点表示引出新动作的情节点(from gamasutra)

沙盒游戏的特色大多体现在支线任务,可选目标和可搜集物品等方面,但很不幸这也是容易搞砸的地方。为一些无关痛痒的NPC搜集500面旗帜或执行大量的跑腿任务可不是什么有趣的事情。在沙盒游戏中最好的支线任务应该能够让你接触到更多的新角色,并体验更多的故事线。在一个优秀的沙盒游戏中,支线剧情和主线剧情同等重要。

1、使开发者能够更快地制作内容。

我很早就在自己的设计试验中发现,这种结构并不仅适用于叙事内容。例如,我们可以像设置故事情节一样,用这种三步走结构策划遭遇战和地图设计。

正面教材:天际,无主之地,蝙蝠侠:阿卡姆之城

2、使游戏对玩家产生即时的反应。

如果将这种结构用在自由漫游游戏中,并适当调整以便观察理解,我们就可以看到在游戏中发现新内容的间隔如何带来令人满意的体验。

反面教材:恶名昭彰,刺客信条,蜘蛛侠

3、减少游戏内容的占用空间。

示例:《天际》

动态世界

我们还发现了一个隐藏的好处:

www.91019.com 3《天际》中的游戏世界面积约37 km²(from gamasutra)

www.91019.com 4

4、使开发者可以通过实验产生更多创意。

在《天际》中,玩家执行有意义的活动间隔最多为60秒左右。想想看,你是如何在《辐射3》这类开放游戏世界中进行探索的?

侠盗猎车:罪恶都市 - 当你已经邪恶到整个城市派出坦克来追杀你时,你就可以偷走那些坦克,并存在自己家的车库里了……

在本文中,我们将变谈论PCG的历史、问题、解决方法和我们发现的使用思路。我们的使用方法是在2009年开发简称为《Aaaaa!》的游戏和即将完成的简称为《Ugly Baby》的游戏时发现的。

假设你并非身负重任,而只是向某个特定方向出发。

另一个让沙盒游戏升华的部分就是世界因玩家的举动而改变。在这种游戏里,玩家通常都会具有一定影响世界的能力。比如,在侠盗猎车中,通缉等级系统就很明显的让你了解到你对这个世界有多大的影响。而在《黑色洛城》中,游戏世界与玩家的互动就并不强烈。

www.91019.com 5

这些游戏如果是第一人称视角(或者第三人称视角),游戏中发生的首件事情就是你前往一个目的地,这就是以上图表中显示的引入阶段。

由于开放性游戏的宗旨就在于让玩家创造自己的游戏体验,所以一个动态的世界就显得极其重要。你会迫切的想知道你的行为会带来什么样的后果,你是为世界带来了大灾难,还是拯救了全人类。而在你做出这些举动之后,其他角色对你的态度又会有怎样的改变?当你拯救了全世界,却发现其他角色根本漠不关心时,真的让人很懊恼。

PCG(from gamasutra)

如果你发现了一些有趣的东西(或内容),这就意味着游戏出现了第一个“情节点”(plot-point),它可以是龙和熊之间的打斗,也可以是一座庙或者一个有待探索的地下城。

正面教材:侠盗猎车 虐杀原型 辐射3

成功使用于游戏开发的PCG

你接近这项内容时对应的就是图表中的“上升动作”(rising action),你的探索过程开始变得紧张。

反面教材:黑色洛城,上古卷轴5,黑暗之魂

首先,有证据表明PCG确实可行实用,除了有时候看起来有些像飞行汽车——理论上成立,实际上不实用。

第二个“情节点”对应的就是你到达该内容。

世界的大小和丰富程度

《Rogue》仍然是PCG运用于游戏制作的绝佳范例。这款大约完成于1980年的游戏,使电脑在玩家游戏时生成幻想的背景、隐藏的房间和弯曲的通道,并且将之先制作好的药水、敌人和武器填充于上述场景中。这种地下城风格的制作方法很成功(《Hack》、《Moria》、《Larn》、《Nethack》、《Angband》、《Dungeon Siege》、《Dungeon Siege II》、《暗黑破坏神》、《暗黑2》和《暗黑3》等等)也相以容易研究,所以许多开发者都用它制作《Rogue》式的游戏和许多用于《Rogue》式开发的物品。

当你得知该内容的含义时就会出现危机,例如与僵尸大战,或阅读石碑上的文字,或只是欣赏远景。

www.91019.com 6

www.91019.com 7

然后又开始一轮循环。

超凡蜘蛛侠:一旦你习惯了像这样旅行,公交车什么的就都是浮云了……

Temple of Apshai Trilogy(from gamaustra)

www.91019.com 8天际(from gamaustra)

开放世界游戏,顾名思义,就是在一个广阔而开放的环境中进行的游戏,通常是一整座城市或是一个片地理区域。能探索世界固然很好,但如果缺乏便捷的交通工具,广阔的地图反而会成为累赘。《恶名昭彰》又一次在这里成了反面教材,从城市的一端赶到另一端简直让人感觉疲惫,这货本身就是个骑车送信的,为啥不能有个小自行车呢?《虐杀原型》则在这一点上做的不错,你可以高速奔跑,攀登高楼,飞来飞去,轻易的在城市中穿梭,并享受其中的乐趣。

在《Starflight》中,我们可以探索到的许多星系和上百个世界。各个星系都包含大量行星,所有行星都有自己的特征(游戏邦注:例如表面温度、重力、天气、大气、水)。

而《辐射1》等游戏却与此相反,《辐射1》没有第一人称视角,它通过不同方式处理这个问题,但也采用了同种结构。

当游戏不允许飞行或结网这样的超能力存在时,沙盒游戏通常会提供车辆活运输平台来让游戏更佳轻松。快速旅行系统能够很好的解决世界过大的问题,但它也一定程度上削减了大规模世界存在的意义。一个优秀的沙盒游戏应该有一个足够广阔的世界,让玩家不停探索并发现新事物,但又不能大到让玩家疲于奔波。这个平衡点至关重要。

www.91019.com 9

在《辐射1》中,探索机制取决于全景地图及其随机遭遇系统(游戏邦注:作者认为这是史上最出色的随机遭遇系统)。

正面教材:虐杀原型,蜘蛛侠,蝙蝠侠:阿卡姆城

starflight 2(from gamasutra)

你走得越远,就越可能遇到一场随机遭遇战。当然也有一些随机遭遇内容可能完全没有战斗元素。

反面教材:恶名昭彰,刺客信条,龙之信条

那时,尤其令人惊喜的是,玩家可以在星球模块中置入任何以上特征,使星球的自然环境发生变化,如增加曲折的海岸和起伏的高山、填充矿藏(铝、钼等)和根据 海拔和星球类型决定生物(固定的和活动的)的密度和种类。原版可以装入双面的5.25英寸的软驱中。Braben/Bell的经典之作《Elite》 (1984)的著名之处也许在于,创造了相当于8个星系的星球,让玩家在其中自由飞行和交易。更近的时候,《孢子》展示了程序性模型生成和动画。在游戏中,玩家可以调整生物骨头的长度和周长,增加四肢、眼睛、耳朵、翅膀等等,使创意成为玩法的一部分。

《天际》中的地下城“设计”也同样如此。

  • «
  • 1
  • 2
  • »

www.91019.com 10

www.91019.com 11《天际》地下城(from gamaustra)

kkrieger(from gamaustra)

《天际》地下城通常都很复杂,其设计实际上是线性结构。

另外,数年以前,《kkrieger》让世界震惊了,因为这个射击游戏占用的磁盘空间甚至比本文还少(仅97280字节)。

这并不意味着它们没有通向目标的多条路径,其结构和激发的情感却都是精心设计的结果。

PCG的使用贯穿了整个游戏的历史,并且今天仍然在使用。

所有的地下城在接近入口处都有一个引入区域,该区域的敌人力量较薄弱,分布也较稀少,但深入地下城后敌人密度和强度会越来越高,通常还会伴随一些boss战斗以及一个不会遇到敌人的出口捷径。

内容制作工具中的PCG

遭遇战例1:《黑色洛城》

在我们于2009年开发的游戏《Aaaaa!》中,我们想探索自动完成任务和辅助创意的工具。

www.91019.com 12《黑色洛城》地图(from gamasutra)

www.91019.com 13

虽然《黑色洛城》的游戏世界规模小于《天际》,但给人的感觉却是比《天际》要大得多,也乏味得多。

Aaaaa!(from gamasutra)

首先,玩家在地图中的任何一个位置四处张望时,都难以找到易于辨识的路标。这可能要归咎于游戏采用了城市背景环境,玩家的视野基本上被几乎没有差别的建筑所阻碍。

你是否曾经一像素一像素地画图?或者,放置存储单元?这个过程很沉闷,所以开发者们为数字艺术家创造了更好的工具——现在,你只需要移动鼠标就可以填充那些像素点、画一个填充好的矩形、或渲染一段渐变的文本。

玩家通常难以判断自己所在地点要与地图上的哪个区域相应对,并且不同区域间的视觉差异也很小。而《天际》由于拥有多变的环境,玩家在其中就不易迷自己的所在。

自动工具很重要,因为能节省时间——这些工具通常能够按我们的想法工作。点击画布上的一个点,然后点击另一个点,你就填充好一个理想的矩形了。

www.91019.com 14黑色洛城(from gamasutra)

《Aaaaa!》是一款极限跳伞游戏,跳伞的地方是悬浮在半空中、高楼林立的未来波士顿。我们手动制作了许多内容,在游戏编辑器里,我们放置摩天大楼、大梁、走道、标牌、飞车和巨型土豆等。

其次,这款游戏中的“内容”与“非内容”难分彼此。

从技术上说,自动工具不错,但我们最终厌倦了——做出来的东西开始让人感觉千篇一律,部分是因为这个工具让某些任务变得太简单,而其他的太困难。

《天际》中的兴趣点都比较容易辨识,虽然有些内容处于隐藏状态,需要玩家投入一番功夫去探索才能发现,但接近时都可以轻易判断它们属于“内容”。

例如,在关卡编辑器中放几座建筑再用得分板加以装饰,这很容易:

《黑色洛城》几乎就是一个普通填充器,毫无内容。除了执行任务和搜集物品之外,玩家在其中找不到有趣的内容可探索。

www.91019.com 15

第三,玩家只能通过街道穿越这座城市,而《刺客信条》这类也发生于城市背景的游戏却不存在这种问题。

building(from gamasutra)

另外,玩家穿越城市还得采用“合理”和“现实性”的方式,不允许超速驾驶和撞车。

然而,创造一些更复杂的东西则需要手动放置对象,这种工作太乏味了。虽然我们可以容忍,手动放置对象(也许需要雇佣更多关卡设计师以及花更多时间),但仍希望有一个更好的解决方法,那就是自动化——例如,有一个脚本可以生成一纵队得分板,然后我们再把这些得分板拉成我们需要的形式。

遭遇战例2:《堕落星球》

下一步是旋转得分板并按照随机的曲线路径放置:

在此我不想讨论《堕落星球》本身的优劣,但想说说它和《辐射3》的地图设计差距,以及为何后者是一个更有吸引力的开放世界。

# Create 40 plates in a sinusoidal pattern:

www.91019.com 16堕落星球(from gamaustra)

for i in 0..40:

《堕落星球》是一款玩法和风格很像《辐射》的游戏,其故事背景是大劫难之后的地球,其中充斥突变生物、僵尸以及一片废墟的城市,采用第一人称视角。

plate.x = sin(i*freq1)*amplitude

www.91019.com 17这是《堕落星球》第一部分的地图,其世界面积为82 km²。(from gamasutra)

plate.y = sin(i*freq2)* amplitude

玩家在游戏中第一个漫长旅程是从完成了“扩展教程”之后,从Terrance赶到Embry Crossroads。

www.91019.com 18

你骑马从Terrance到Embry Crossroads约3-5分钟时间(如果走的是道路还会更快一些)。

sinusoidal paths(from gamasutra)

在这两地之间除了一些快速复生的mob、采矿点之外,几乎没有出现任何兴趣点,也没有玩家可以获取的任何任务目标。

真正有趣的时候是,我们开始将很高的频率填入其中,于是产生了很荒唐的结果:

而《辐射3》及多数Bethesa自由漫游型游戏却与之形成鲜明对比,它们的内容出现间隔较为紧凑和均衡。玩家每步行一分钟就可以遇到一项内容。

www.91019.com 19

www.91019.com 20《辐射》地图(from gamasutra)

something ridiculous(from gamasutra)

《堕落星球》的第一个缺点在于,它采用了典型的任务中心系统,要求玩家必须在“城镇”领取任务,然后“跑”到附近区域或穿越到另一个任务中心完成任务。

完全不能玩的东西冒出来了, 但有趣的东西也出现了,这出乎我们的意料。因为我们埋头于关卡设计,像这样的东西让我们的视野焕然一新。

游戏中不存在任务可促使玩家探索这个有趣开放世界的动机。

这是关于“过程生成”的关卡的一个小例子,但不止一次,我们使用像这么简单的脚本做出了令我们开心的东西。这些改变了我们创造关卡的方式,对玩家提出了新挑战。

这也是游戏设计师易陷入的误区,即设计极具现实感的大型世界,但却不提供玩家与其互动的动机。

不久,我们有了一系列用于创造我们所谓的“关卡骨骼”的通用脚本。我们大量使用这些脚本制作让我们满意的东西(“啊!我们从来没想过这种事会发生。真是太棒了!”),然后手动完成关卡的剩余部分。

大型世界本身并不能满足玩家参与其中的需求,设计师必须在其中添加内容,才能让玩家觉得有必要投入时间进行探索。

www.91019.com 21

MMO游戏设计师尤其如此,他们常误以为只要有足够的玩家填补空白区域就可以自行解决这一问题,因为玩家本身就属于一种内容。

hand-creat the rest of the level(from gamasutra)

但事实并非如此,除非玩家在游戏中做一些对他人有意义的事情,否则这种方法根本不能奏效。

《Aaaaa!》的表现不错,除了其他奖项,还让我们获得了独立游戏节提名。所以,我们有了信心,决定在我们的下一款游戏中大胆尝试,我们将PCG用于所有的关卡设计。但毕竟,我们还算是体面的程序师,这么做未免太过简单了?

设置穿衣打扮的功能本身并非内容,它与游戏玩法无关。它也不具有交互性,但很有意义和吸引力。《堕落星球》呈现的兴趣点与非内容并无明显区别(就像《黑色洛城》的做法),当你接近这些内容时却没有解决这些上升动作的方法(例如与mob战斗以扫清障碍)。

PCG是万灵药

游戏最好能够让玩家经历一些事情,如果能让玩家参与自己所遇到的事情那就再好不过了。

我们的下一款游戏《Ugly Baby》玩起来很像《Aaaaa!》,但我们想让它在运行时,根据玩家提供的媒体,通过算法生成所有的关卡结构。这个媒体可以是音乐、视频甚至是一段《独立宣言》。我们将游戏形容为:

因此需要精心设置游戏内容的出现间隔,要提供有意义而富有变化的内容。

“与你最喜欢的鼓和贝司作战,或自由飞行于舞曲唱片的旋律之中。《Ugly Baby》用你的MP3音乐创造一个漂浮的世界,邀请你来战斗。”

设计师不但要考虑在游戏中设置哪些内容,还要考虑在何时何地设置内容。

我们的希望曾是(现在仍是),PCG可以让我们:

via:游戏邦

1、生成(本质上)无数的有趣的关卡,且比手动生成的《Aaaaa!》关卡更特别。

更多阅读:

  • CNC&前程无忧:2017年中国游戏产业人才薪资调查报告(附下载)
  • 360:2018中国PC端游戏研究报告(附下载)
  • Newzoo:电子竞技正在东南亚兴起
  • CAPCOM:截止2018年6月30日《怪物猎人:世界》全球销量830万份
  • Nexon:截止2018年6月DNF全球总收入超过100亿美元
  • METAARI:2018-2023年全球游戏为基础学习市场报告
  • Newzoo:预计2018年全球游戏收入将达到1379亿美元
  • Jun Group:81%的游戏玩家在玩游戏时对网络广告更开放
  • CAMIA:2018年6月Love Balls这款游戏频频出现在东南亚GP游戏榜前端
  • PayPal:2018年全球数字游戏消费者洞察
  • ESA:2018年视频游戏报告
  • SuperData:2018年6月全球移动和游戏机收入达91亿美元
  • Riot Games:《英雄联盟》Twitch频道观看量纪录突破10亿
  • SuperData:2018年7月全球网络游戏支出82亿美元
  • Q&Me:2018年3-5月越南各类APP排行情况

2、在运行时,根据玩家自己的媒体生成所有关卡内容。

3、允许玩家通过调整“关卡DNA”参与世界创造的过程,产生他们自己的关卡。

我们想制作一种可以读取音乐的脚本,然后产生类似《Aaaaa!》且带敌人的关卡。本以为我们对漂浮建筑和生成艺术的理解可以让这个过程变得很简单,然而,在我们才开始基础工作以前,一个9个月的项目已经变成了24个月。

结果,我们发现了四个主要问题:

1、手动制作的优势是PCG的弱点。

算法和手动制作的内容往往优势互补。如果你要制作大量的山体,且想看看经过侵蚀后的样子,那么算法比手动调整好。虽然你可以也花上一整天的时间自己动手雕刻,再花一点时间在侵蚀工具中执行,但手动操作会让你尝试到一些不同的东西。

另一方面,如果你想在山洞的入口处增加一些树木,手动完成通常比算法简单。如果你想在沙滩上写“HELP”,手动选择工具然后写字更容易些。我们认识到这点是经过了艰难的过程:

第1步:写一个生成关卡框架的算法。(1小时)

第2步:测试后发现建筑物之间的距离太远;增加密度,还使了一点小技巧防止它们重叠。(15分钟)

第3步:测试后发现完全行不通;修改路径使建筑物迂回一些。(15分钟)

第4-9步:执行、重复。(各15分钟)

第10步:若上述方法行不通,手动调整反而更简单。(5分钟)

所以,我们陷入了一种工作模式,先写了一个不错的脚本,无尽地调整,然后达到局部最大值:初始脚本可以生成一种类型的脚本布局,我们花了数个小时寻找其中最好的排列,而不是检查其他地方。我们随后发现“无聊”和“有趣”之间的差距很小,但要实现二者之间的跨越,即对算法做实验或在算法中扩充有趣的细节可能很费时间。

解决方法:有时候,实验最好是手动操作;我们可以从制作的东西中吸取经验教训,然后用算法模拟手动做出来看上去不错的东西。

2、制作重复的内容很容易。

从Alex Norton的帖子AltDevBlogADay中借用一段话:

为什么世界有边界?程序生成代码在过去25年并未改变多少。人们仍然局限于使用碎片、方块和斑点做所有东西,这也太雷同了,简直就像程序生成的内容。对于许多程序师而言,看起来其实就是程序生成的。

如果我们不认真看,我们不会发现我们一次又一次看到的东西都是相同的。例如,在《Ugly Baby》中,玩以下关卡前15秒还觉得有趣,之后就无聊了:

www.91019.com 22

Ugly baby (from gamasutra)

因为每道关卡大约是5分钟长,这意味在整个关卡过程中,我们得切换好几次。一个常用的解决方法是,定期地置换出不同的算法,但那样做可能比较不谐调——想象一下在边界上突然中断的PCG森林。另一个解决方法是扩充算法,在沿途放上新花样,使不同对象之间渐进地改变,但我们又遇到问题了,这也是下文要说到的。

3、PCG算法变得更加有表现力,但复杂的算法看似越来越与设计脱节。

生成简单关卡的算法很容易写——但因为我们做的东西更复杂了,执行也变得更加困难,并且这种困难是不成比例的。例如,在《Ugly Baby》中,起初我们成功地写出在地图上分散建筑物的脚本。然而,扩充脚本时发生了以下对话:

“看起来很棒;如果我们将这些聚为群集会怎么样呢?”

“好吧,但太规律了,还要混杂一点。”

“添加一些得分板、隧道、移动的平台和扇叶。”

“哎呀,得分板和建筑物交叉了。移开一点。将扇叶主在隧道的中间,除非当时还有移动的平台,或如果之前隧道中间就有扇叶,因为那样太无聊了。”

“好吧,现在,什么都不管用了。”

相同地,看到3D角色在草地上来回走动,游戏开发新手会说:“嘿,我会做MMORPG了,真简单!”我们认为,如果简单的脚本能产生有趣的结果,我们只需要不断地用适当的东西拓展算法就行了。但是,有趣的建筑物开始需要维持机制和认真设计的其他内容。

4、有趣的PCG通常产生的结果是1)愚蠢的和2)无聊的内容。

我们见过的最简单的随机名称生成器如下:

# Generate random letters, yo:

for i in 1..random_number():

name += random_ character()

它有可能生成任何你能想象得到的幻想的、科幻的或者宝宝的名字——假如让它重复足够的次数,它有可能输出“Captain Rock McSpectacular”这样的了不起的名称。但更多时候,它产生的是像“ergihwe`=-ufaw38o72wenufse”这样对你完全无用的垃圾。

在《Ugly Baby》中,我们做了类似的东西——一个相对不受约束的算法,产生随机方块,然后围绕中心轴产生一个简单、可玩的隧道。这个算法过程如下:

1、从库中选择一个随机3D模型(方块、三角形、曲线)。

2、选择一个数字N和一个数字M。

3、创造N个平均间隔的环状模型,各个环状中有M个模型实体。

4、返回第1步。

www.91019.com,在第一次计算中,结果是:

www.91019.com 23

Ugly Baby(from gamasutra)

看上去很有趣,确实有用——它是个隧道!再次运行相同的脚本,生成了一个有趣的序列,有毛发、手指样的东西,伴随着另一个隧道:

www.91019.com 24

Ugly Baby(from gamasutra)

也很有趣,出人意料,仍然有用。玩家可以在其中飞行。第三次计算:

www.91019.com 25

Ugly Baby(from gamasutra)

这次产生了一个完全不能通过的路径,组成的多边形太多,帧速率跟不上。虽然很漂亮,也许有些时候能用上,但没有形成隧道。

解决方法之一是,限制参数。在刚才那个命名生成器的例子中,也许我们可以构思一句语法(辅音+元音+辅音+元音+辅音),或保存一份常用的姓氏和名称,然后把它们串起来(例如“Billy Margaret Smith”)。类似地,在我们的隧道例子中,我们大概只需要创建一些用不多于某个数量的方块组成的隧道,或限制多边基本方块的数量。

另一个问题是:

结果,我们挑选了一些有趣的分支,有可能让我们自己都感到惊喜(再见啦,Captain Rock McSpectacular)。

我们很快用特例补充好算法,但算法无法执行。

构成关卡的模块化方法

在我们开发《Ugly Baby》的三年时间里,我们并没有解决所有问题,但我们用简单的、模块化的概念组合成复杂的东西时,我们收获了一些成功的经验。

www.91019.com 26

Ugly Baby (from gamasutra)

以编程的方式为《Aaaaa!》制作关卡骨骼时,我们成功了,这让我们感到愉快,所以我们返回查看根源。制作看上去有趣的东西其实相当容易,就是重复简单结构。举例说明,一个由方块组成的球体:

这一次,不是把算法变得复杂,而是重复修改输出的结果:

1、生成方块组成的球体。

2、给块赋予颜色(如,调整饱和度,然后根据对象围绕中心轴的位置来选择色相)。

3、改变方块的穿插。

4、只具现化在球体的某个部分的对象。

最终的结果完全不像个球体:

www.91019.com 27

Ugly Baby (from gamasutra)

这个简单的概念让我们感兴趣的有三点:首先,我们可以填入稍微不同的参数,就得到非常不同的几何体;其次,在《Ugly Baby》中,我们可以把这些参数与音频关联,这样关卡的外观就会随着音乐改变;最后,修改路径独立于基础结构,所以我们只需对一些方块使用上述方法就可以得到完全新奇而(也许)有用的东西。

有希望,所以我们把这个办法规范了一下。《Ugly Baby》的关卡生成器由三个模块组成:

1、定序器是产生球体、柱体、网格、圆柱等东西的模块。

2、选择器返回满足一系列条件的所有对象,如位于飞机的某一侧,或大于面包箱的所有对象。

3、更改器根据对象的特点使之发生变化。例如,根据位置改变颜色或根据方向缩放比例。

以上三个模块生效的结果如图:

www.91019.com 28

step 1(from gamasutra)

第1步:玩家会沿着线性路径飞行,所以我们先简单地制作一个柱体,其组成的方块沿着落下的中心轴。

代码:

# Instantiate the column:

sequencer_column = sequencer.Column()

queue = sequencer_column.iterate()

www.91019.com 29

step 2(from gamasutra)

第2步:这个关卡隧道有点像铁路射击游戏,所以我们再做一个更像隧道的隧道。我们将简单柱体置换出六个。这需要设置一些基本的参数,如方块与方块之间的垂直距离和围绕着中心轴的方块柱体的数量。

代码:

# Instantiate the cylinder:

sequencer_cylinder = sequencer.Cylinder(layer_delta=4, blocks=6)

queue = sequencer_cylinder.iterate()

www.91019.com 30

step 3(from gamasutra)

第3步:改变定序器生成的各个方块的大小。

代码:

# Change every piece’s scale:

mutator.scale(queue, [1, 4, 1])

www.91019.com 31

step 4(from gamaustra)

第4步:我们写了一个更改器,它可以使方块的一个面朝向Z轴,然后把这个属性赋予所有方块。

代码:

# Turn pieces to face the player’s falling (z) axis:

mutator.face_axis(queue)

www.91019.com 32

step 5(from gamasutra)

第5步:一个“Every-N”的选择器节点可以把填入其中的每N块抓出来。这里,我们希望每四个块选择一次,然后用更改器将其变为红色。

代码:

# Get a list of every 4th pieces that comes into the queue:

every_4th_piece = selector.every_n(queue, 4)

# Turn those pieces reddish:

mutator.set_color(every_4th_piece, [255, 32, 0])

www.91019.com 33

step 6(from gamasutra)

第6步:最后,在垂直距离上调整为曲线方向。

代码:

# Pan from -45..45 depending on a piece’s position along the player’s falling axis:

mutator.cyclic_rotate(queue, freq=0.1, low=[-45, 0, 0], high=[45, 0, 0])

从这里开始,我们可以做到以下事情:

1、因为这些效果是各自分离的,我们可以将对象置换进或置换出。这种模块化操作可以帮助我们尝试新的东西和新的图案。

2、《Ugly Baby》的画面与音乐相关。我们知道在音乐播放到某个点时玩家的所在,我们可以根据这一点,看音频信号构建对象。

例如,在音乐的高音部分压缩隧道或根据声音信号的高频部分改变块的颜色。

3、我们可以允许玩家调整某些值来创造他们自己的关卡。比如,他们不想要6根柱体,而要2根呢?或者,如果他们想让方块更肥大一点呢?

更改器参数上的小调整引起的关卡变化并不大。这里,我们只演示了柱体的数量和大小,以及组成柱体的基础模型:

www.91019.com 34

columns(from gamasutra)

我们又做了一些变体(如,下图左边的网格状的图案),然后组合起来(下图右边的网格再加上环状物)。

www.91019.com 35

more abstract things(from gamasutra)

对于抽象物体,这个方法很管用,但我们还想看看对于更有组织的结构,这个方法是否行得通。

用于有机模型制作的模块化方法

在《Ugly Baby》中,我们用更有机的模型补充抽象的几何关卡设计。也就是说,我们在Maya中创造了一个图像的、基于节点的东西,叫作DING。以下是制作一只昆虫的过程。

www.91019.com 36

table1(from gamaustra)

我们首先生成一个圆柱。上图是两张截图——第一张是显示了图解(左边的节点创造了一个圆柱;右边的节点显示圆柱)。

第二张图显示了结果模型。DING创造几何体,Maya显示几何体(之后将它输入有文件格局(FBX))。

www.91019.com 37

table2(from gamasutra)

之后我们把圆柱调整成近似锥形体,有些地方做得肥大一点,有些地方做得瘦小一点。上图所示的是锥形体的侧视图——我们手动调整,先挤出胖的部分,再缩小面,再挤出细长的脚。

www.91019.com 38

table3(from gamasutra)

我们翻转节点(红色),将其调整成垂直方向,然后添加“环”节点,这样就做成了带6足的环状物。

www.91019.com 39

我们再添加球体结点,然后合并(布尔合并结点)到环状物上。这个东西有些像蜘蛛了。

www.91019.com 40

table5(from gamasutra)

在我们做尖尖的脚以前,要添加整个物体的轮廓线结点。这条轮廓线夹在整个模型的中间。我们还要对模型再细分,使它更平滑一些。

www.91019.com 41

table6(from gamaustra)

最后,沿着垂直轴压低前部。这东西现在看起来有点像一只遍虱。

因为模型不是在运行时生成的,所以它不会对音乐产生反应,而这是关卡构成的方式。但它确实达到了我们的两个目标,一方面它使我们能够快速制作有趣的内容(这个方法对我们团队当中不熟悉Maya的成员很管用),另一方面,它使我们可以做大量实验。因为所有这些操作都是无损的,所以我们可以增加或减少环状物的足数目,改变周线外形(如下图所示),或甚至置换出柱体或球形基本体。下一步,我们要做的是随机化。

www.91019.com 42

ticks(from gamasutra)

值得注意的是,基于图解的工具用途很多。我们对《Ugly Baby》的关卡做抽象处理,然后实体化敌人,但在2011年的《Aaaaa!》,我们想要更写实的材质,因此我们使用了Spiral Graphics出品的基于节点的Genetica(游戏邦注:这是一个制作无缝材质的编辑器)。

结论

虽然“模块化”的方法并不算新鲜,且联系节点也没有解决所有关卡生成的问题,如交叉对象或无意义的输出,但它帮助我们提高了效率,使我们在挑出无用的部分后仍然能得到有用的输出结果。

同样地,我们能够利用PCG的优势(更快的内容生成、动态内容、更小的占用空间和增加创意)同时回避它的缺点(避免大量代码,使代码便于管理等)。虽然PCG不是万灵药,但我们认为我们可以利用它成功地制作有趣的内容。

我们不是PCG的专家,但我们希望本文能给读者提供有益的参考。

via:游戏邦/gamerboom.com

更多阅读:

  • 将改变电视观看体验的十大预测
  • Tyler Sigman:阐述统计学在游戏设计领域的应用
  • YouTube:2011年网站视频YouTube点击次数累积已超过1万亿
  • ESA:2016年美国游戏行业研究报告(附下载)
  • Alexander Engel:探索游戏的新内容和玩家留存理论
  • PayPal:2011年美国虚拟物品支付用户每月超1200万 40%成年人为网游支付
  • 关于游戏模式与玩家需求契合度的分析
  • 基于学生人口统计分析美国游戏人才获取渠道
  • 2017年游戏行业趋势五大关键词
  • 彭博社:2014年全球10大IPO游戏厂商 中国占40%
  • GPC&CNG:2018上半年中国游戏产业报告
  • Swrve:调查显示19%的游戏玩家只会打开一次游戏
  • SuperData:2016年全球PC游戏收入最高是《守望先锋》 达40亿元
  • Digi-Capital:2018年全球移动游戏收入将达450亿美元 占游戏收入40%
  • 探析全球酒店在线预订的六种模式

本文由澳门皇家赌场91资源站发布于www.91019.com,转载请注明出处:论述开放世界中的内容间隔及关卡设计重要性

关键词: