地形系统(翻译)

引擎研发学习之路•锲子 学校毕设的任务不断传来,正巧在这一天,看到了OpenGPU论坛里面“刀神”的一篇帖子,介绍自己的引擎gkEngine!真的,当我看到了那个画面,设计的接口,再次有了当初看到CE3的感觉,就是它了! Download->编译->失败->配置->失败->配置->失败->读bat->配置->编译->运行->失败->自认为路径bug->修改->引擎成功!->读源码->做笔记->做笔记->接口设计->CE3->场景管理->渲染队列->Ogre->做笔记->删除物理->删除VR->删除网络->删除动画->删除Ope 阅读详情
构建地形系统

  地形系统是一块薄片,我们在这块薄片上面调制我们关卡的美味大餐。嘿!那是粗俗的味道还是其它什么味道(来,品尝一下?是美食?还是平常菜?)

  不管是否是平常口味,那是确实的。如果你关卡中的任何部分发生在户外,那么你就需要地形系统了。而槽糕的地形系统将会是论涂一通并且玩家也会有不厚道的评论(还是尽量让他们温和一点吧)。所以如果你希望把地形系统做得出色的话,那么你就需要在它的里面做很多的努力了。实际上,专业的游戏开发者在游戏中做的绝大多数的努力是直接地把地形系统制作的尽可能的美观,尽可能的真实。

  在这一章节中,你将会学到:

  ■你可以用来制作地形系统的不同方法

  ■对于如何制作真实的地形系统的一些诀窍

  ■利用地形系统来为你的游戏性服务

  ■给地形系统刷上贴图

  ■在地形系统上放入一些小道具来充实你的游戏世界

  地形系统的重要性

  伴随着游戏中的角色变得越来越饱满,越来越细节化,游戏中的地形系统也随着时间的推移变得越来越漂亮了。

  来看一下过去五年中游戏中对水的描绘手法吧,它从一片蓝色的面片,发展到带有明显边界的波纹面片,再到通常比真实的水还漂亮的表面。在任何关卡中,地形系统都是非常重要的一个部分。人们在地形系统上以基本的规则行走。我们所知道绿草、大树和杂草就是应该像看到的那样;我们知道峡谷的峭壁很少是光滑的;石头就该乱堆在地上;在泥地上我们留下脚印;而水、风和重力混合在一起形成了一个到处凌乱的环境。

  但游戏空间是很少混乱的。这是它的强项也是它的弱项。最简单的地形系统的模型到处都是平地和非常圆滑的拐角。这样的地形系统就像一位有洁僻的女士却被给予了神的力量。换句话说,它压根就不现实。

  所以,构建地形系统的部分工作是把它制作地足够的混乱来使得它可信。然而,这样伴随着一个很明显的问题。杂乱意味着许许多多的多边形,而基本的建筑物已经占据了计算机生成的全部3D物体。而且计算机处理器需要渲染的多边形数量越多,游戏就变得越慢。有太多多边形的话,计算机就会档掉。

  对游戏的全部3D模型来说,地形系统实际上扮演了平衡一个真实性与流畅运行游戏之间的角色。好消息是每年计算机的处理速度都在上升,而坏消息是它目前还不能即时运行100%真实的地形系统。所以作为一名关卡设计师,你永远都要注意这个平衡的角色。

  制作地形

  当前,游戏工具有好几种方法来制作地形系统。每一种方法都有它的优势和弱势。它可以使你的任务像吮手指那么简单,也可以像解开戈耳迪之结(指非常复杂的死结)那样困难。没有什么比制作一张几方里的地形更花时间的了,而且工具的错误设置会使你感到你正拿着一把铲子来清除你身上的泥土(并不是大块的,而是你在沙滩上造沙堡时所留下的颗粒)。

  高度图

  高度图是一张简单的2D图片,由黑色,白色和之间的254种渐变灰度所生成(见图3.1)。地图制作者和地质学家们用卫星生成的高度图来制作地形的系统的3D地图。这种方法的原理是每一种级别的灰度表示了不同的高度。色彩越亮的地方,地形就越高。以米为单位,每一种等级的颜色对应各自的不同高度,根据程序获得的图片这个单位是可变的。

  用高度图来制作地形是相当简单的,而且它可以生成一些最为真实的地形结构,在游戏中也是如此(见图3.2)。但也意味着会出现一些最难看的地形结构,这取决于游戏引擎和地图制作者的专业技术。来自于高度图的地形结构看上去可以是高低不平的,或者是非常平坦的。混合这两种不同类型的地形结构可能会是场噩梦,然而,通常还是会用以下的这两种方法来制作高度图:1)从卫星图片上取一张已经存在的高度图并把它用到你的游戏中。这种地形的结构很类似地球或它某个邻近的星球上的某个部分。2)在图形编辑器中制作,比如Photoshop,这个花费的时间会长一些,但是非常有趣。

  

  图3.1 一张美国地质调查局(USGS)的高度图

  

  图3.2 由图3.1的高度图所制作的地形图

  高度图的优势:

  ■制作简单

  ■方便快速地做出大的变动

  ■修改快速

  ■真实

  劣势:

  ■很难做出小的修改

  ■为了恢复正常可能会花费相当多的时间

  ■最后的地形图会很类似于由其它高度图所形成的地形图

  手动调节

  接下来制作地形的方法是手动来调整这个模型。很明显这是一个十分花费时间的工作。3D模型师在一个半英亩大的虚拟地面上花费了几个月的时间只是为了使它正确。然而,这种方法可以生成你能得到的最漂亮的,最恰当的地形结构。外星世界,魔法王国等超现实的场景都可以被制作地如此真实以至于让玩家忘记呼吸。

  手动调节的地形通常是在3D模型软件中创建的,像Discreet的3D Studio Max或者Alias Wavefront的Maya。美工首先制作一张大的平坦网格并用造型工具把这个平面扭曲成大致的山体和山谷。然后他再润色不同的区域,花费越来越多的注意在越来越小的细节上面,直到他对结果感到满意为止。在这里,通过对所有美工用来制作地形的多边形的了解,主程序员可以有个大概的概念。所以美工不得不开始选择需要切掉什么,简化什么,和保持什么。这个循环会开始持续下去。

  手动调节地形结构的优势:

  ■可能是最佳的细节水准

  ■最好的用户化级别

  ■容易做一些小的修改

  ■超现实的效果

  手动调节地形结构的劣势:

  ■很难做出大的改动

  ■花费大量的时间

  ■如果美工不注意的话会影响游戏的帧速

  混合使用

  因为两种地形编辑都存在弱点,所以游戏公司有时候会制作他们自己的地形编辑工具,试着结合高度图在制作大区域地形上的舒适和手动调节的良好控制。但这些工具有时候会难以使用,而且它们并不像单独使用的时候那么有用,那么简单。

  主要的3D软件,Maya和3D Studio Max,允许导入高度图,并会有一些效果,它们会给你一些控制来做一些非常好的调节。但是它们是昂贵的,复杂的工具,并且对于普通的模型制作者来说可能很难买得起得起一个版本,这个版本给了他们实际上所需要功能。虽然还存在一些相对便宜的软件,但是越低的价格可能带来越少的功能。我建议你尽可能地多试验这些软件来了解哪个是最适合你的。

  混合地形工具的优势:

  ■ 结合了两种基本工具的优点

  劣势:

  ■昂贵

  ■通常单独的效果没有特定的工具来得好

  ■使用复杂

  自动生成

  接下来的是程序自动生成的地形(见图3.3)。当玩家不需要与地形经常互动的时候,自动生成地形就能派上用场了,当然还是要知道这是什么地方的。模拟飞行有时候就是使用自动生成的地形,因为玩家一般是把他的时间花费在云层上方的。

  自动生成地形的优势:

  ■ 你不需要为地形操心了

  自动生成地形的劣势:

  ■ 极小的调节功能

  

  图3.3 由Planetside软件的Terragen程序所随机创建的美丽地形

  铺砖地形

  很多第三人称的游戏,包括像《帝国时代》(Age of Empires)这样即时战略游戏和《无冬之夜》(Neverwinter Nights)这样的角色扮演游戏,都使用了铺砖来制作它们的地形(见图3.4)。铺砖是预先生成的地面方格,他们可以互相衔接来制作出无限变化的场景。

  使用铺砖是相当简单的。设计师选出一块铺砖,把它拖到他想放置的位置上,然后返回去拖其它的铺砖。一些游戏允许你修改铺砖,改变贴图和场景的类型来制作沙漠,草原或森林。当玩家不会贴近地面去看的话,铺砖是一个非常好的制作地形的方法。但是这个方法不能给地形带来丰富的高度变化。

  铺砖地形制作的优势:

  ■使用简单并且有趣

  ■制作快速

  铺砖地形制作的劣势:

  ■受铺砖栏中的铺砖和地形物件的制约

  ■通常只能用于使用固定顶视角镜头的游戏

  ■不善于制作出大的海拔变化

  

  图3.4 Bioware的《无冬之夜》的Aurora设计工具,显示的一块铺砖地形

  地形和游戏性

  制作地形可能是非常有趣的。在你轻微地调整地形使之正确的时候,它慢慢地成为了一种微型的操作策略游戏,这是一个有创造性的任务。就因为这样,所以很容易就忘记了制作地形的主要目的:使得游戏更加有趣。在你努力制作漂亮场景的时候,你也许就无意地在你的游戏中造成了一些缺陷。玩家可能发现他们迷路了,泄气了,或者更糟。他们可能发现你关卡中的漏洞,并用这个来作弊。为了避免出现这种情况,时刻注意什么是你关卡中的核心游戏性,而且你需要制作地形来适合这个游戏性。

  制作地形结构时的一些提示:

  ■ 只制作你所需要的地形结构。不要创建一些你“之后”会加入复活节彩蛋(Easter Egg)的空间。相信我,在你的计划部分之外,这些空间将会自我呈现。另外,制作巨大的空间意味着玩家有许多的活动范围,但同样也意味着你有大量的工作要做。

  ■ 迷宫并不有趣,除非它是这个游戏的重点。

  ■ 把道路隐藏起来是会令人受挫的,谨慎地使用它们。

  ■ 不要制作一些不会奖励玩家的道路。如果玩家沿着一条路走,那么这条路就应该通往某个重要的地方或者有一些有乐趣的东西。

  ■ 始终保持一贯性。如果一个地方的某个斜坡是不能通过的,那么其它任何地方像这个角度的山坡应该都是不能通过的。如果一个地方的某个密度的森林不能通过,那么其它地方相同密度的也不应该可以通过。

  地形结构的另一个目的:阻拦玩家

  到目前为止,我们已经谈论了地形结构是可以让玩家在上面行走的。然而地形结构可以有第二个作用:定义玩家可以探险的区域限制。很多时候,关卡设计师会把他的关卡放置到一个峡谷或山谷里面,那里有着险峻的山坡和悬崖来阻止玩家穿越关卡的边界。另外一些时候,一片不可以游泳的海洋或一块标记明显的荒地,比如一块沙漠,给了玩家一个形象的感觉:他不能到达那里。

  当你在你的关卡中设置“阻挡”的时候,记住以下的提示:

  ■ 始终清晰的标记出玩家不能去的区域。通常来说,你的阻挡是会让玩家感到沮丧的。没有人喜欢被禁止去他们想去的地方。然而,如果你使得阻挡很容易辨认,那么玩家就会明白这个是游戏的一部分,并不仅仅是游戏设计师一时的兴致来禁止玩家去那个地方探险。即使是一道无形的墙阻止了玩家进入一个贫瘠的沙漠,这也是可以的,只要这条阻挡线被清晰的标记了。

  ■ 不要在阻挡的另一边放置任何有趣的东西,除非它明显是到达不了的,例如某些事物离得太远而到不了,比如一个浮空的地方或者是远方的山脉。没有比你想去某些地方探险但是却发现没有路来得更糟糕的了。把一个建筑物,一座雕像,或一个洞穴放置在你阻挡的另一边会使得玩家认为他应该去那里搜索一下。他会浪费很多的时间试着到达那里,但是当他认识到这是不可能的时候他会很不开心。就是因为你认为这个并不重要,但不意味着玩家也这么认为。

  不能通过的区域

  有些时候你应该在玩家的前面放置一些障碍,来确定他不会在你的世界中迷路,或者去那些你不希望他去的地方。在大多的游戏引擎中,你可以创建一块不能通过的区域,来阻止玩家再向前进。

  不能通过的区域通常是不可见的,玩家可能会气恼为什么走不进去。因此,你应该花很多心思在放置这些区域的地方。确保玩家明白为什么他会被阻止去他想去的地方。你需要了解为什么他是被禁止的,所以你可以放置一面篱笆,创建一堵墙,改变地面的颜色,使森林变密,或者做一些其它明显的事情。

  有些游戏引擎允许玩家走上任何小于90度的斜坡。你可能要在全部的斜面上放置不能通过的区域,这些斜面对玩家来说是太陡峭而不能爬上。关于哪个角度玩家可以爬上哪个角度玩家爬不上,始终要确保你是一致的。即使是一个细微的变化,玩家可能也会注意到,从而打乱他连贯的感觉。

  这个也适用于地形的类型,你制作的不可通过的区域取决于设定的危险地形,比如熔岩,泥泞的沼泽地。要肯定地确定是以很容易区别可通过的区域和不可通过的区域的这样的形式来给地形结构贴图的。

  制作真实的地形结构

  自然界是混乱的。它并不是由有组织的线条和理想的曲线所组成。然而,在绘制所有的多边形和保持游戏的可玩性之间有着一个平衡的准则,花费大量的时间用工具来制作混乱,这个工具是使用直线和理想的曲线来作为建筑块的。所以你必须集中细节较多的场景到一个地方,而这个地方是玩家乐意去的。举个例子,如果玩家被限制进入峡谷的底部,那么最好从上面的地面到正好视线之上地面开始细化,然后到达上面的时候简单地绘制一下底部。

  同样,要确保你有着很好的材质来源。拥有一些关于你正试着制作的地形类型的好图是很有帮助的,这样你可以尽可能地把地形做得逼真。国家地理和旅行手册是地形照片最好的来源。

  对于特定的地形类型,这里有一些提示。

  山脉:

  只有很少的游戏引擎可以制作出真实的山脉。真实的山脉大多覆盖了很大面积的地表,而且很多是直立的,这样就对所有的游戏引擎增加了限制。然而,山坡在游戏中是非常受欢迎的,尤其是作为阻挡的墙壁。关于山脉的另一个好处是它看上去可以是参差不齐的,这个游戏引擎可以做得非常好。但是请记住一件事,在山坡上打斗通常不是很有意思,特别是在近战的游戏中,在这些游戏中玩家是肉搏战斗的。对于这些战斗,你要确保提供一些平坦的场地。

  丘陵

  游戏引擎对丘陵和其它起伏的地形也同样可以做得非常好。如果做得好的话,丘陵对遮蔽遭遇很有效,直到玩家正面撞上其它角色时才发生遭遇。然而,丘陵也会遮蔽路标,所以要确保你的地形结构是有用的,如果当玩家发现他迷路的时候可以重新定位方向。

  沙漠,平原,北极荒地和其它平坦的陆地

  平坦的陆地很少是完全平直的。它们有小山坡和小山谷,而且他们可以是江河和山涧的尽头。即使最无聊的地形结构也有着一些混乱在里面。试着把细微的高度偏移,战略设备(在那里是恰当的),和一,二座提供路标的丘陵混合在一起。

  河流与湖泊

  如果你所使用的游戏引擎允许玩家游泳,那么他们就会希望进入任何你放置在他们前面的水域。始终确保玩家可以从任何他们进入的地方出来,特别是河流和湖泊。不要把岸堤做得太陡峭,以至于玩家在跳入河中去看那里是否有一些弹药在水底之后就回不到岸上了。

  如果你的游戏引擎不允许游泳,那么你要确定在比人高的水上面设置了不可通过的区域。这样可以保持如果玩家真想过去还是可以游过去的幻想。再说一次,不要在水的另一边放置任何有趣的东西,除非你为玩家准备了一条路通往那里。

  深坑,峡谷和沟壑

  如果玩家掉入裂缝或深坑中,那么那里应该有一条路让他出来。即使你认为那样掉下去就意味着死亡,但还是提供一些单向的秘密通道或传送点吧。那样的话,那些设法计算出如何到达下面的谨慎的玩家就可以回到上面,而不用再鬼鬼崇崇的了。

  峡谷和沟壑是一个非常好的方法来让玩家通往地想让他们去的地方。那就是为什么几乎每一个游戏都有他们的原因。试着想办法来避免过度使用这种地形类型,这样你就不会受相同陷阱的影响,之前已经有很多其他的关卡设计师犯了这类的错误了。

  使地形有趣

  取悦玩家是游戏制作者的基本职责,这是当然的了。在你制作游戏的时候,你所做的一切事情都应该对准这个目的,包括制作地形系统。

  建立心境:

  地形系统主要是用来建立气氛的。最好的话,它可以让玩家沉浸在游戏世界中,让他觉得他是在真实地攀登山脉或在潮湿的丛林中披荆斩棘。为了达到这种效果,你应该在给定的游戏引擎上尽可能地把地形制作得逼真,而且玩家遇到的人物应该是恰当的。举个例子,玩家不应该在沙漠中看到企鹅(除非这只企鹅戴了太阳眼镜)。

  地形可以制造出压迫感:

  通过隐藏即将到来的遭遇战,或通过里面自然的危险,地形可以用来制造出压迫感。一些岩石地形或灌木密集的树林可以掩饰潜伏的敌人,或者可以是在一个小箱子中装有一个颇有价值的资源。熔浆池或险峻的悬崖可以增加危险的感觉,要求玩家在留意附近危险的同时警戒他要去的地方。当玩家使用同样的地形来躲避经过敌人的视野时,同样可以制造压迫感。

  地形可以缓解压迫感:

  在一长串的战斗结束之后,隐藏在树丛中的宁静水池或安宁的遗迹可以提供片刻的放松。试着让你地形的节奏从压迫到缓解变化。这样比一直压迫的经历来得更有游戏性。

  地形可以讲述故事:

  在岩石表面的一个雕刻,切割掉的一个圆形物,树上完整的一条线条,一条壕沟,一个足迹,一条道路,和雪地上的轨迹,全部都可以讲述故事。在玩《卡米洛黑暗纪元》(Dark Age of Camelot)的时候,我特别喜欢的一个时刻是当我和一个朋友到达山顶的时候,注意到一个巨大的公牛图案蚀刻在另一座附近的山上,我马上问到,“谁刻上去的?这意味着什么?”

  在地形上奔跑和驾驶是有趣的:

  在你可以驾驶载具的游戏中,你应该提供一些不会有致命撞击的地方来给玩家一些他们车轮底下的空间。在跳跃类解迷游戏中,一排石头对于玩家可能是有趣的,他们就是希望四处走动。不过,那些不连续的和难以通过的地形可能破化玩家的游戏乐趣,特别是当游戏中有很多这种地形的时候。

  地形可以是漂亮的:

  地形可以使玩家充满敬畏和惊讶。漂亮的地形增加了游戏的乐趣。除了变得漂亮,地形还可以是令人恶心的,令人厌烦的,或你关卡中需要烘托的任何气氛。

  地形结构与策略

  中国著名的兵法家兼将军孙子曾说过,“疆土的自然屏障是士兵最好的盟友。”军事学家很早前就已经研究了在不同的地形类型上固有的战略上的优势和劣势。

  如果你正在制作战役的关卡,那么在把它做得漂亮的同时,你需要记住你地形的战略方面。随着科技的进步和计算机每秒运算能力越来越强大,游戏的物理计算正在接近真实的水平。伴随着这个射出去的子弹有了地球引力和空气的影响;爬上山坡变得困难,但下山却变得容易;有了游戏中的一个物体可以影响另一个物体的真实系统。全部的这些意味着在游戏环境中,对于贯穿历史发展的地形和环境的战术上的课题将变得更加重要。

  高度优势:

  这是你可以用来压倒敌人的基本优势。站在山顶上意味着你的箭和子弹可以射得更远,而你的敌人就会有一段艰难的时间来冲到你的位置。这对于你军队的撤退也变得更加容易,只要那里有一条不是直接通向敌人的下山路。然而,因为山丘通常是稀松的,所以在你隐藏到凹地之前,小山头会把你的存在暴露给敌人。而且如果你的军队规模太小的话,很容易被包围。

  通道优势:

  像峡谷或难以通过的山谷这样的区域可以为你带来优势,受限于你位置上的通道,你的敌人不可能一下子把他全部的兵力投放进来。然而,这通常也意味着你的撤退不会很容易。再说一次,这种类型的地形优势意味着你把你的军队坚守在一个狭窄的区域,但在那里你的军队可能被包围。

  平坦地形的优势:

  平坦的地形允许你最大限度的移动和配置你的军队。这种地形对骑兵和车辆是有利的,因为它们能更加机动地在战斗中发挥作用。

  地形的危险性:

  很多类型的地形是有危险性的或是阻碍军队移动的。沼泽地和松散的沙地可以相当大的降低你军队的速度,冰天雪地和茂密的森林地形也是如此。

  玩家会辨认战略上有作用的区域并使用它们来作为自己的优势。一步步地来制作地形,把它们放置在有趣的战术位置上,比如安排一小队的敌人从悬崖的边上朝你射箭,或者在没有其它通道的沼泽上,通过一系列小的,相互连接的岛屿来进行战斗。给玩家机会让他自己拿出解决办法,那么你将会被当作这块领域的天才。

  给地形贴上图层

  就如我之前提到的,地形结构一般是通过加入适当的贴图或图片来改进的,这些贴图和图片被放置在3D物体的表面。一张贴图可以是一种颜色的单调色,也可以像人脸那样复杂。在专业游戏制作中,美工被雇佣来专门制作贴图。相信我,一个好的贴图美工是值这个价钱的。

  在你制作地形的时候,你需要在构建完地形之后为它附上贴图。虽然对于在3D表面上附上贴图,每一种引擎和3D工具有着它们自己的工作方式,但是还是有一些通用的方法,你可以考虑一下,这将对你会有所帮助。

  ■ 始终只选择那些设置恰当的贴图。在你沙漠的关卡或北极的关卡上的绿色贴图会使得它看上去像春天中绵延的山岗。

  ■ 确定你的贴图片正确。当你需要一个重复贴图的时候,在每一个分割处之间就会有一条缝,除非这些贴图的边缘混合良好。这就是为什么那些贴图美工那么值钱的原因。制作无缝贴图是很难的。

  ■ 暗色贴图应该尽量少用。很多移动的物体,通常它们本身是十分灰暗的,与暗色贴图对照时就会消失。看不到他们敌人的玩家很容易受到挫折。如果你想让这些东西变得灰暗,使用暗色的光照而不要用暗色的贴图。

  ■ 保持简单。地形系统意味着丰富关卡,而不是取代关卡。用明亮的,不协调的色彩加上反光的表面来为你的关卡着色可能会使一些玩家将来避开你的作品。同样,像玻璃或者金属这种需要额外处理的反光表面可能在其他一些地方用到更好,比如允许你的玩家每过几秒移动一个以上的步伐。

  放置地形上的小道具

  在你构建完地形并附上贴图之后,你要开始用像树,草,岩石,小房子,墙和其它任何你觉得必要的东西来点缀地形。然而,你必须谨慎地规划你使用的物件和你如何放置他们,为了让它们对玩家产生最大程度的效果。

  在你的地形上放置物件

  始终如此,当你在你的游戏中放置任何物件或物品的时候,你必须考虑它对游戏速度的影响。在过去的几年中,很多像树林和灌木这样的东西不是在处理渲染方面的耗费太昂贵了,就是当它们便宜的时候太难看了。所以很多游戏不会为它们而费心,除非是十分必要的。但是现在的处理器速度已经增加得足够大了,你可以在不降低太多帧速的情况下在关卡中放入很多小道具。但是把这些东西做得廉价还是有很多窍门的。

  游戏引擎其中的一个限制是它们不能在同一时间处理大量不同类型的物体。那是因为引擎需要在渲染之前,把每一个物件载入到内存中。然而,大量的拷贝,举个例子,一个占用资源少的物件,程序只需要载入这个物件一次,之后就可以为每一个拷贝反复地使用那些信息。不幸的是,这会使得关卡看上去非常不自然。毕竟在现实世界中,你不可能看到两棵完全相同的树。不过,你还是可以使用一些技巧来稍微地削减一下这个问题。

  ■ 在同一角度上,不要把看上去完全一样的东西放置得彼此靠得很近。两块完全一样的巨石放置在一起很容易被察觉到。例外的是人为的物件,比如圆柱或墙壁,这些玩家不会认为有什么不妥。

  ■ 其次,如果你必须把一个物件的二个拷贝放置在相邻的地方,那么旋转它们中一个物件的角度是很有帮助的,这样玩家看上去就会觉得不一样。如果这个物件是十分复杂的,比如树木,那就会更有效果。

  ■ 不要去创建一组物件的拷贝,如果你有一堆四棵树的树丛,然后沿着路下去还有另一堆看上去完全一样的四棵树的树丛,那么你的关卡看起来会很假。

  在游戏中,制作地形物件的另一个廉价的方法是自动生成。通常,它们是小型的,重复用到的,不需要碰撞的物件,比如青草,小树丛,或者杂草。有的时候,大的物件也可以这样处理,比如树木和岩石。为了实现这个操作,你需要在你的地形图上创建出一个区域来告诉游戏引擎在这个区域中随机生成一堆确定物件的拷贝。然而,因为它需要用到重复的物件,所以有时候这个会导致之前描述的问题发生。

  提示

  真正降低处理器运算速度的一样东西是碰撞。当一个物体有碰撞的时候,它就意味着玩家不可以穿过它,比如一面墙或者一棵树。游戏引擎需要经常监控它来了解是否有东西跑进了它的里面。玩家不希望地形上的某些物体阻止他们的前进,比如草和灌木,那就不需要碰撞,所以你可以多使用这种类型的物件。另一方面,树木和岩石需要有碰撞,所以他们使用起来就昂贵一些。

  地形物体的游戏性作用

  当你在你的地形上放置物件的时候,这里有一些需要考虑的事情。

  始终只使用那些对设置有意义的物件。棕榈树不会出现在北极,而冰冻的石笋也不会出现在热带的岛屿上。

  不要让你的地形妨碍到玩家的视线,特别是在玩家很可能会在那里战斗的“白热化地带(hot zone)”。 虽然在树林中设计一场跑动的战斗可能是很吸引人的,像电影《兽兵卫忍风贴》(Ninja Scroll)和《窝虎藏龙》(Crouching Tiger, Hidden Dragon)中那样,但是对于玩家来说,如果他不能马上发现谁在伏击他并做出反击,那么他会感到灰心。同样当玩家看不到地上的他想捡起的物体,或者他可以掠夺的敌人的尸体的时候,他也会感到无趣。

  地形上的小道具可以用作为路标来使用。一件重复的物品,比如特殊形状的石头或者枯树,可以帮助玩家认出道路,而这条道路正是你希望他走下去的。然而,请小心这些,并只是作为路标物件来使用它们。随意地放置有记号的石头会迷惑或误导你的玩家,而且他可能再也不会相信你的路标了。

  地形上的小道具应该被认为是你关卡中最低优先级的物品。如果你的关卡运行速度很慢,而且你完全不能缩减关卡中地形的大小,那你就应该优先减掉这些物件。

  实例:普洛斯彼罗岛的构建

  为了举例来说明地形系统构造这个事情,我将会构造普洛斯彼罗岛,在上一章节中我已经在纸上设计好这个关卡了。我选择Crytek的沙盒(Sandbox)关卡编辑器来制作它,是因为1)对于创建岛屿,它有着独特的设计;2)它是捆绑在《孤岛惊魂》(Far Cry)里面的,这是一个相当好的游戏;3)它实际上的使用相当灵活。许多时候,随游戏捆绑的关卡编辑器可能是非常有问题的而且难以使用。而沙盒却有着它独到的设置,适合我的需求,而且相当好用。

  首先第一步是创建本身的地形结构。沙盒可以使用高度图来作为开始,然后我可以在本身的关卡显示中做一些调节。因为制作高度图的工具有一点笨拙,所以我决定用在Photoshop中做的图来代替,然后再把这张高度图导入到游戏中去(见图3.5)。

  这里有一片小的海滩区域,通往一个像死火山一样的地方。我决定把这个关卡制作得非常地小,只为一些遭遇战留出空间,因为它的目的只是为了演示而已。

  然后我把这张地图导入到沙盒程序中(见图3.6)。

  

  图3.5 最初的高度图

  

  图3.6 转变过后的高度图

  在这之后在关卡编辑器中进行渲染,并做一些调节来处理一些褶皱(见图3.7)。

  现在地形的结构已经做好,是时候给它附上贴图了。我决定在原由的基础上粘上三层贴图:岩石贴图,草地贴图,和沙滩的沙地贴图。沙盒编辑器有一个地形贴图工具(见图3.8),使用起来非常棒。它允许你通过高度来设置贴图,这就意味着你可以把陆地上的0-16米设置为沙地的贴图,16-17米设置为草地,余下更高的设置为岩石。

  再说一次,这个方法并不是完美的,我需要在编辑器里面调节并描绘一下来达到我所希望的效果。在修整完所有的贴图之后,我这块东西看上去就更像真实的岛屿了(见图3.9)。

  

  图3.7 岛屿的基本状态

  

  图3.8 沙盒的地形图层工具。这是我到目前为止用到过的最好的地形贴图工具

  

  图3.9 在附上贴图之后,这个岛屿看上去就更真实了

  已经设置完贴图层了,现在是时候为地形系统加入小道具了。现在朝着火山口,玩家有一个清晰的目标,那里就是他将要去的普洛斯彼罗住的地方。我希望这条道路稍微直一些就可以了,那么他就不能笔直地到达那里,而且我还希望放置一些僵尸和野猪在路上。我决定在岛上放置一些巨石来制作出一些弯路(见图3.10)。

  从玩家在海滩上的出生点开始,他现在有了多条道路了。

  接下来,我需要放置一些植物来让这个岛屿变得更加真实。在沙盒编辑器中放置植物是相当容易的(见图3.11和3.12)。你可以每次放置一棵,或者使用类似笔刷的工具来放置大批树木。我不会骗你,只需花费一小会的时间,就可以掌握编辑器中的植被设置了,然后把你想要的物体放置到地形上,但不要让它们看上去像克隆的那样。

  

  图3.10 火山的岩石所创建出来的狭窄道路,让玩家有所选择

  

  图3.11 加入植被制作出更加真实的体验,并可以遮掩玩家的视野,增加神秘和危险的感觉

  

  图3.12 在岛的内部增加一个树林,在这个视野里就可以看到非常多的树木了

  现在这个岛看上去终于像个样子了,开始下一个步骤:普洛斯彼罗的庄园!

  你学到了什么

  在这个章节中,你学到了以下的知识:

  ■ 制作地形的不同方法:高度图,手动模型,自动生成,二者混合,和铺砖。

  ■ 地形系统如何影响游戏性。

  ■ 如何把你的地形制作得有趣并有战略上的挑战。

  ■ 如何为你的地形附上贴图。

  ■ 如何在你的地形结构上放置静止的,装饰性的物体,比如植物或岩石。

   

 
使用Tiled制作2D游戏关卡 原创文章,转载请注明: 转载自All-iPad.net 本文链接地址: 使用Tiled制作2D游戏关卡来自于Lime的一篇教程,如何使用Tiled来制作2D游戏关卡,很值得学习。原文地址:http://www.justaddli.me/tutorial.php?t=0&id=0Tiled,也叫Tile Map Editor,官方网站http://www.mapeditor.org/ 阅读详情

相关推荐

雅思练习总结(十)

本文章是雅思练习总结(十),总结了文章《Advantages of public transport》,内容包括原文精翻,文章脉络总结,单词扩展学习3个部分

qq_48717745的博客 1071

Unity3D地形系统一口气讲完!谢啦!!☆⌒(*^-゜)v

在三维游戏世界中,通常会将丰富多彩的游戏元素融合在一起,比如游戏中起伏的地形、郁郁葱葱的树木、蔚蓝的天空、、凶恶的猛兽等,营造出身临其境的游戏沉浸感,让玩家置身游戏世界,忘记现实。地形作为游戏场景中必不可少的元素,作用非常重要。Unity 3D 有一套功能强大的地形编辑器,支持以笔刷方式精细地雕刻出山脉、峡谷、平原、盆地等地形,同时还包含了材质纹理、动植物等功能。通过地形编辑器可以让开发者实现游戏中任何复杂的游戏地形。

爱编程的鱼的博客 2400

C#SharpGL实例——灰度三维山脉成像(带颜色分层)源码程序

NeHe教程改编,移植至C#平台的SharpGL开发,第34课,灰度山脉成像

CSharpGL实例——灰度三维山脉成像(带颜色分层)源码程序介绍

C#SharpGL实例——灰度三维山脉成像(带颜色分层)源码程序介绍 去发现同类优质开源项目:https://gitcode.com/ 本文档提供了基于C#语言和SharpGL库的灰度三维山脉成像源码程序。该程序改编自著名的NeHe教程第34课,经过移植至C#平台,利用SharpGL库进行了开发。 程序特色如下: 利用灰度图生成三维山脉地形,直观展示地形的高低起伏。 通过颜色分层技术,展现山脉的...

gitblog_06759的博客 440

Synopsys安装教程Ubuntu22.04版本

在Ubuntu22版本上安装Synopsys等系列工具,安装DC,VCS等等

qq_59529218的博客 5731

研一脑电小白日记 之 EEGLAB预处理实战指南

本文为脑电研究新手提供了一份详尽的EEGLAB预处理实战指南。从MATLAB与EEGLAB环境搭建、使用NeuracleEEGFileReader插件导入BDF格式数据开始,逐步讲解了电极定位、滤波、降采样、ICA去伪迹等核心步骤,旨在帮助初学者高效完成脑电数据预处理,为后续分析奠定坚实基础。

weixin_29230649的博客 563

[Unity3D]地形系统的创建与简单设置

学习Unity脚本推荐:Unity3D官网索引 本章我们将会了解到如何使用Unity3D自带的地形系统简单的创建地形,使用的版本为Unity4.0版本。 先来创建一个新项目,命名为TankWar,以后的相关文件都放置在这个文件夹下面。 创建完毕之后是一个空白的工程,只有一个Camera在场景中。 CTRL+S将该场景存档为TankWar0.1,做好版本控制。

汪海的实验室 1万+

STM32F030F4P6实战:LL库+DMA驱动WS2812全流程(附避坑指南)

本文详细介绍了如何使用STM32F030F4P6的LL库和DMA驱动WS2812 LED灯带的全流程,包括硬件选型、CubeMX配置、LL库与DMA关键实现、数据格式转换及调试技巧。特别提供了避坑指南,帮助开发者避免常见错误,提升开发效率。

weixin_29194693的博客 484

地形系统

地形(Terrain)支持以笔刷绘制的方式实时绘制多种地形创建地形

小昕成长史 428

手把手教你打造CTF动态靶场

公司想搞一个CTF比赛,需要一个竞赛靶场,于是这个任务就落在了我的身上,平台是利用CTFd框架,基于docker搭建的动态靶场,搭建过程中遇到的坑比较多,这里我会把每一个遇到的坑都指出来。我搭建的是CTFd的3.X的版本。第一次搭建的话,搭建的过程会有些痛苦,但是搭建完成后会越来越熟练,这个平台的可用性还是很高的。由于搭建的过程中遇到的坑太多了,各种各样的问题,所以决定写下这篇文章,把所有的坑都指出来,也算为后边想搭这个平台的小伙伴指一条路。Taps:资源来源:星海安全实验室如果你也对网络安全&黑客。

Python栈 4935

MagicDraw-用例图

MagicDraw-用例图

木头征的博客 3131

构建地形系统(翻译)1

 FW: http://www.sf.org.cn/design/Design_Tutorial/design_19213.html地形系统是一块薄片,我们在这块薄片上面调制我们关卡的美味大餐。嘿!那是粗俗的味道还是其它什么味道(来,品尝一下?是美食?还是平常菜?)不管是否是平常口味,那是确实的。如果你关卡中的任何部分发生在户外,那么你就需要地形系统了。而槽糕的地形系统将会是论涂一通并且玩

1550

SAP-ABAP:SAP Open SQL 分页技术深度解析:语法、性能陷阱与最佳实践

SAP Open SQL 分页技术深度解析:语法、性能陷阱与最佳实践

baidu_35680696的博客 636

构建地形系统(翻译)2

 FW: http://www.sf.org.cn/design/Design_Tutorial/design_19214.html实例:普洛斯彼罗岛的构建为了举例来说明地形系统构造这个事情,我将会构造普洛斯彼罗岛,在上一章节中我已经在纸上设计好这个关卡了。我选择Crytek的沙盒(Sandbox)关卡编辑器来制作它,是因为1)对于创建岛屿,它有着独特的设计;2)它是捆绑在《孤岛惊魂》(Far C

1270

基于多传感器融合的智身四足机器狗楼梯环境SLAM系统设计与实现

本文设计了一种基于多传感器融合的四足机器狗楼梯环境SLAM系统。系统采用Jetson Orin NX为主控制器,集成RealSense D435i深度相机和Livox Mid360激光雷达,在ROS2框架下实现平面定位精度<5cm、楼梯环境下导航不漂移的目标。通过多层次传感器融合策略、运动学约束优化和状态切换机制,解决了楼梯环境下的定位累积误差问题,实现了平面与楼梯环境的自动识别切换及精度复位功能。硬件设计注重传感器布局优化和精确标定,软件架构采用分层设计,确保实时性能。该系统为四足机器人在复杂地形中

huanghm88的专栏 244

全志F1C100S/F1C200S学习笔记(11)——spi-flash 启动全流程适配烧录及踩坑指南

SPI Flash 系统编译 spi-flash 启动适配 分区规划: 分区序号 分区大小 分区作用 地址空间及分区名 mtd0 1MB (0x100000) spl+uboot 0x0000000-0x0100000 : “uboot” mtd1 64KB (0x10000) dtb文件 0x0100000-0x0110000 : “dtb” mtd2 4MB (0x400000) linux内核 0x0110000-0x0510000 : “kernel” mtd3 剩余 (

丨晋丨 1万+

音诺ai翻译机控制RK3588与MIMO天线提升山区信号增强性能

音诺AI翻译机采用RK3588与MIMO技术,通过硬件协同、智能调度和实地优化,提升复杂地形下的通信稳定性与翻译实时性。

weixin_42103128的博客 844

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

算子AI原神级开放世界完全模拟 — 完整手把手教程

基于机制冗余定律,模拟原神级世界不需要显式编写:这些系统功能已自然编码在算子AI的四项基础机制中。 3. 环境搭建 4. 第一阶段:开放世界地形与元素场生成 4.1 核心映射 4.2 代码实现 创建 : 5. 第二阶段:全生命体AI引擎 5.1 NPC与野生生物系统 创建 : 6. 第三阶段:真实多语种语音合成引擎 6.1 核心映射 6.2 代码实现 创建 : 7. 第四阶段:全人类语言理解与翻译引擎 创建 : 8. 第五阶段:元素战斗与技能系统 创建 : 9. 第六阶段:主集成运行脚本

huanxinmengmeng的博客 443

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

关于Cesium 官方教程

最近一直在准备第一次QQ群的Cesium基础培训公开课,虽说使用Cesium也有段日子了,但是要说对Cesium了解有多深,还真不一定。原因是一直以来我都是用哪里学哪里。基于多年开发三维数字地球的底层的经验,对Cesium的基本原理还是很清楚的,所以这么做对我来说也没什么问题。但是既然好为人师,还是得系统得学习下Cesium,否则也讲不清楚。 最好的系统学习方式就是从官方教程开始了,为了清楚...

weixin_33802505的博客 491

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Cesium-1.143 中文版 API

Cesium-1.143 中文版 API,完整翻译了所有类、属性、函数等。

非科班Java出身GISer的博客 1559

【Houdini官方入门教程翻译】地形生成(更新ing)

文章目录0.概述1.使用Heightfields来塑造地形01 选择Terrain布局,创建一个高度场02 使用径向菜单,给高度场添加噪声并模糊边缘03 添加高度场扭曲04 添加网络框使得节点树更加可读2.使用地形特征来添加地形遮罩01 使用Mask by Feature节点来创建地形遮罩02 使用Slump节点来创建Flow层03 使用Remap节点重映射flow层高度到某个范围04 保存工程及...

方寸想法,编码宇宙 5340

[翻译]随机分形地形生成

转自http://www.cnblogs.com/lookof/archive/2009/03/18/1415259.html a.最近在学习OpenGL的东西时,无意发现了一篇关于”分形“的文章。”分形“由于以前接触过一点,记得和”过程内容生成“有莫大的关系,它强大而神奇的功能一直让我很好奇。看了原文作者的这篇文章后,我断定这是一篇学习”分形“的入门级别的好读物。 虽然文章并没

Keep Going! 1251

Cesium 之各版本更新日志中文翻译(1.63-1.139.1)持续更新中

新增 🎉 增加对 3D Tiles 上 draping 影像的基本支持。#12567 增加对 3D 纹理的支持,并添加体积云沙箱示例。#12661 修复 🔧 修复使用正交相机时的体素渲染。#12629 1.129 - 2025-05-01 @cesium/engine 重大更改 📣 和 现在以物理值而不是形状空间值指定。#12592 新增 🎉 新增 沙箱演示。#12549 修复 🔧 现在在调用回调之前将位置转换为 Cartographic,确保与 commit 53889

wokao253615105的专栏 1922

ArcGIS地形分析

ArcGIS地形分析的基本步骤如下: 1. 整理并添加带有高程属性的CAD等高线或者高程点; 2. 将导入的等高线或高程点数据转换为GIS可编辑的Shapefile文件; 3. 使用整理好的Shapefile生产数字高程三角模型TIN文件; 4. 将TIN文件转换为栅格数字高程模型DEM文件; 5. 基于DEM即可进一步进行基于地形的坡度、坡向、起伏度、汇水特征等专项分...

bao6930的博客 3241

【Houdini官方入门教程翻译】概述——地形和高度场

文章目录概述模板样式(Patterns)噪声(Noise)遮罩/蒙版(Masks)地形侵蚀(Erosion)导出选项(Export Options) 概述 程序地形生成在Houdini可以使用一组heightfield节点,让你对地形分层,添加噪声和模拟地形侵蚀来定义你的Landscape的外观。这是一个类似于合成的工作流,区别是你操作的是3D形状(Shape)。 Houdini提供了各种几何节点...

方寸想法,编码宇宙 2980

Matlab下地形图绘图包m_map安装与使用

m_map是Matlab下用于绘制地形图的工具箱,和GMT有些相似,被广泛应用于地学研究成图。那么,应该如何下载和安装m_map呢?

yangshun_cug 6万+
上一篇: 46个饮食健康常识
下一篇: 真实感图形学算法(1)(续)
Image_Graphics
博客等级 码龄20年 18粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值