V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DreamerQQ
V2EX  ›  程序员

从零开始的 RPG 游戏制作教程(第六期)

  •  
  •   DreamerQQ · 2020-12-25 17:04:13 +08:00 · 1639 次点击
    这是一个创建于 1429 天前的主题,其中的信息可能已经有所发展或是发生改变。

    往期回顾

    前言

    第一期:制作基础场景

    第二期:让勇者和怪物登场

    第三期:基础的数值设计

    第四期:从理论的角度简单聊聊关卡

    第五期:制作物品和技能

    本期继续先前没有完成的内容。

    第六期:设置怪物掉落物并部署关卡怪物

    设计一个比普通的狗头人强大的狗头守卫

    由于在先前的教程中我们已经细致地说明过很多次物体编辑器的操作方式,接下来的讲述中,为了讲述的效率,我们将不会再对物体编辑器的操作流程进行过多赘述。

    在第一关我们需要一个 [狗头人守卫] 来作为守门的 BOSS,玩家必须击败这个 BOSS 才能获得钥匙从而打开边境大门。 打开物体编辑器,我们找到 [狗头人] 。

    6-1.png

    复制粘贴它,获得一个自定义的狗头人,改名为 [狗头人守卫] 。

    6-2.png

    为了区别它和常规的狗头人,我们可以修改其模型大小和颜色,使得其更符合 [ BOSS ] 的直观感受。

    6-3.png

    得到的结果如下:

    6-4.png

    这样我们就得到了和普通的 [狗头人] 有明显 [区分度] 的 [狗头人守卫] ,我们的玩家就可以非常直观地直接从视觉上就知道这个怪物和其它怪物不一样,它不好惹。

    为了让战斗更有挑战性,我们提高 [狗头人守卫] 的生命值为普通狗头人的 5 倍,并将其攻击力提升为普通狗头人的 3 倍。

    6-5.png

    这样我们的玩家就必须在面对 BOSS 之前,先收集足装备、药水来与之对抗。 这就引入下一个我们要讲的内容:设置怪物的掉落物。

    设置关卡中怪物的掉落物

    如果勇者击杀怪物后没有办法成长,无论击杀多少个怪物,勇者都不会变得更强,我们的战斗设计就会变得非常难以进行。 因为这种情况下,玩家控制的勇者只会在战斗中受伤并且得不到恢复,即便操作水平再强,也会被怪物们杀死。

    因此我们必须设计一种方式能够让勇者在打败怪物后能够恢复自己的血量、提升自己的战斗力。 典型的手段便是在玩家击杀怪物后,让怪物可以掉落物品。

    回到我们的场景中,找到放置在地图上的任意 [狗头人] ,双击它。

    6-6.png

    在打开的 [单位属性] 窗口中有 [掉落物品] 这一分页。 在这里,我们可以针对某个单独的怪物设置其可能的死亡掉落物。

    6-7.png

    在魔兽争霸 3 中,一个单位的死亡掉落设置是通过 [物品列表] 来实现的。 我们可以创建 [通用物品列表] 来方便多个怪物都使用指定的物品列表,也可以针对特别的单位(往往是 BOSS 或者会掉落特殊任务物品的单位)使用 [自定义物品列表] 。

    让我们先介绍 [通用物品列表] 。

    在怪物的 [死亡掉落物品] 属性栏处选择 [从物品列表中查找] 。

    6-8.png

    可以看到目前我们的地图中没有任何物品列表。 让我们点击 [编辑物品列表] 来创建新的列表。

    6-9.png

    在弹出的 [物品列表] 窗口,点击 [添加列表] 按钮,我们可以得到新的物品列表。

    6-10.png

    按照我们的需求来修改命名。

    6-11.png

    其中 [彩蛋] 和 [稀有装备] 我们暂且不管,先制作 [低级补给] 和 [低级装备] 。 选中 [低级补给] 后,在右侧点击 [新设置] ,并在创建了新设置后点击 [新物品] 来为其添加掉落规则。

    6-12.png

    上图的 [物品设置 2 ] 中的 [随机 等级 1 可购买 物品] 仅用于举例,说明我们不光可以指定掉落特定的物品,还可以直接随机掉落符合指定分类的所有物品,如下。

    6-13.png

    在一个单独的 [物品设置] 中,会按照总共为 100%的概率进行 N 选 1 的随机判定。 不过一个物品列表中可以包含多个物品设置,意味着击杀一个怪物的时候,这个怪物可能会掉落最多和列表包含的怪物设置数量相同的物品。 比如,按照下图设置,我们的玩家在击杀拥有此物品列表的怪物时,这个怪物会有 40%*10%*5%的概率掉落全部 3 个小型生命药剂。

    6-14.png

    [低级补给] 让我们暂时就这样设置,同时 [低级装备] 如下:

    6-15.png

    修改完成后点击确定,回到怪物窗口的 [掉落物品] 分页,可以看到现在有 4 个物品列表可供选择。

    6-16.png

    根据我们的需要来选择其中一项。

    6-17.png

    点击确定,回到场景。

    6-18.png

    一个白色的标记环出现在了怪物脑袋上,这说明这个怪物拥有 [掉落物品] 的设置。

    此外,如果我们同时勾选这些狗头人,我们可以同时编辑多个怪物的 [掉落物品] 设置。

    6-19.png

    6-20.png

    这样一来,这 3 个狗头人都会在死亡时,遵循 [低级补给] 的掉落物品规则进行演算并给予玩家奖励。

    接下来我们找到刚才放在场景上的 [狗头人守卫] 。

    我们对 [狗头人守卫] 使用 [自定义物品列表] 。

    我们需要 [狗头人守卫] 在死亡时掉落 [大门的钥匙] ,不过这个物品现在还没有制作。 让我们先到物体编辑器中制作它。

    在物品的 [战役] 分类中,我们可以找到 [月之钥匙] 。 复制粘贴它,改名为 [大门的钥匙] ,并修改相关描述。

    6-21.png

    6-22.png

    你可能会好奇为什么我没有修改 [文本 – 提示工具 – 基础] 的文本。 这是因为这个文本对应的是当该物品被放置到商店里进行出售时的标题,在我们的游戏中, [大门的钥匙] 只会在击杀 [狗头人守卫] 时掉落,所以我们并不需要修改此处。

    回到场景,找到先前放置的 [狗头人守卫] 。

    6-23.png 6-24.png

    如此设置后,当玩家击杀这个狗头人守卫,这个守卫就必然会掉落 [大门的钥匙] 。 不过,如果我们重新创建一个新的狗头人守卫(注意不是复制已经设置好自定义物品列表的狗头人守卫),你会发现新的狗头人守卫并没有这个自定义物品列表。

    6-25.png

    这是因为自定义物品列表是针对 [单个单位] 的,并不会绑定到 [特定单位类型] 上。

    远景剪裁

    在进行后续内容之前,我们补充一个知识: [远景剪裁] 。 魔兽争霸 3 是一个上帝视角的 3D 游戏,在游戏内使用 [镜头] 作为玩家的观察视角。

    6-26.png

    如图,在 [镜头] 中有一个属性是 [远景剪裁] ,决定当前镜头能够看到的最远处。 当你在地图编辑器中将鼠标滚轮向后滚动时,游戏镜头会变高,从而能够看到更广的场景。但如果高到一定程度,就会出现如下图的黑色交界线。

    6-27.png

    但在设计关卡时,有时候我们需要将镜头拉高以便于总览关卡的整体,因而需要消除这黑线。

    6-28.png

    使用 [ Ctrl+鼠标滚轮向后滚动] ,可以增加编辑器中镜头的 [远景剪裁] 的值,这样你就能够总览整个地图。

    基于克里夫的强度放置怪物,分布到场景中

    回到正题,现在我们已经制作了克里夫的物品和技能、制作了守门的怪物、能够设置怪物的掉落物。 换言之,我们现在具备了第一关的基本材料了。

    先前我们的场景是上下开放的,这在场景上说得过去,但游戏关卡不是纯粹地制作风景,因此我们需要按照关卡需求来调整我们的场景。

    我们希望塑造的体验是: 1 玩家刚离开村子后便会陆续发现零散的狗头人(离开村子后会遭遇轻量级战斗) 2 在抵达边境大门的路上,会有数个散落的狗头人村落(经历了轻量级战斗后,玩家需要学会如何应对群落) 3 边境大门是狗头人营地,存在大量狗头人(对抗守卫之前的挑战,同时也是用于积攒最终对战的道具) 4 有一条小路可以绕过营地来到后方,直接和狗头人守卫战斗(最终战)

    这一流程的目的是为了塑造前期的轻量级战斗用于教学和让玩家熟悉,逐渐提高的难度则用于磨炼玩家的战斗技巧,并使用狗头人守卫来作为最终测试。 而我们保留一条小路,则是为了给那些熟练 RPG 的、想要直接挑战 BOSS 的玩家一个分支选择。这种小路的设计并不是必须的,但它会一定程度的影响关卡的节奏,进而影响一部分玩家的游戏体验。同时,它也是 [探索] 的一环,对于多周目的玩家而言,这就是一种新的体验。

    好了,按照现在我们的关卡需求,先前的场景是不符合我们的要求了——我们不能让玩家一开始就可以选择。 让我们堵上一开始村子向下的路。

    6-29.png

    然后在其下方,把原本闭塞的树林处打开一条通路,能够拥有两条路线。

    6-30.png

    最后,我们设定下方是小路,上方是狗头人营地,因而为了让营地更大,我们再做一些修改。

    6-31.png

    我们扩大了左侧的通道,缩小了分岔路口的大小,同时扩大了上方作为营地的区域。

    最右侧的小道,则保留作为和最终 BOSS 单独战斗的通道。不过这个通道现在非常靠近营地区域,在战斗时会很有可能吸引到上方营地的怪物,因而我们要修改通道,使其纵深更长,使得战斗可以更远离营地一些。

    6-32.png

    然后回到最上方,我们要堵住上方的路口,以避免让玩家认为最上方是可以抵达的地方。

    6-33.png

    经过一番摆放,我们得到了如下的分布图。

    6-34.png

    从上方出发,零碎地分布狗头人,直到下方出现分岔路,分岔路的一边是大量狗头人,另一边是少量狗头人。最后来到守卫处。

    6-35.png

    在守卫处,除了守卫,我还额外放了 2 只普通狗头人,并且这两只狗头人不会掉落任何物品。这么设计的原因,是因为这两只狗头人是纯粹用于增强关尾挑战性的。它们存在的目的不是为了给予玩家奖励,而是为了将游戏难度拉高。

    根据目前的放置的普通狗头人数量来计算,我们可以大概知道玩家可以获得多少药水。 按下 F11,我们可以打开 [物体管理器] 。

    6-36.png

    我们可以在物体管理器中查看诸多地图相关的信息。 来到 [单位] 分页,并找到 [中立敌对] - [单位] ,我们可以查看当前地图上一共放置了多少个单位。

    6-37.png

    排斥掉守卫身边不掉落任何物品的狗头人,我们现在有 34 个狗头人会掉落物品。

    如果按照我们的 40%+10%+5%的概率来计算,整场战斗下来假设 34 个狗头人全部都掉落药水,那么我们的玩家将大约能够获得 34x0.55=18.7 瓶药水。 我们每瓶药水可以恢复 100 点生命值,换言之地图上的补给是 1870 点生命值。 按照先前教程的计算,394 点生命值便可以让我们的勇者在硬碰硬的情况下干掉 2 个狗头人,因而简单地计算,1870 可以让我们的勇者通过硬碰硬的方式干掉 9 只狗头人。 不过后来我们为勇者添加了 [重拳] 和 [王国的力量指环] ,因而战斗难度还会进一步下降。 显然,接下来我们要么重新测试勇者可以在携带技能和指环的情况下对抗多少个狗头人,要么直接进行游戏。 前者可以让我们从数值的层面得知大致应该放多少怪物,而后者则可以通过将自己变成游戏玩家,直观地感受关卡的强弱。

    不过,在粗略计算了数值后,我们不希望一关下来遍地都是药剂,因而我们可以在开始测试之前,将数值从 40%+10%+5%修改为 30%+5%,这样我们大约就只会获得 9 瓶药水,并且大部分在营地里。营地里由于怪物数量众多,因而战斗会更激烈,药水的获取难度也就会更高。在激战中不断战斗并获得回复药剂,我们认为是可以接受的体验。

    6-38.png

    在面对营地的战斗之前玩家可以遭遇很多零碎的怪物,但我们不希望这些怪物全部都掉落生命药剂。生命药剂能够恢复生命值,但不能直接提高战斗力。 因而为了奖励那些选择清缴进入营地之前所有怪物的玩家,我们将左侧一个怪物设置为必定掉落 [铁剑] 。

    6-39.png

    同样,为了达成这个目的,我们需要修改先前的物品列表,将 [低级装备] 修改为 [必定掉落低级装备] ,并调整概率。

    6-40.png

    6-41.png
    这样子,玩家就必定会从这个狗头人身上拿到一把能够提升 6 点攻击力的铁剑。

    如此,我们的舞台就初步搭建好了。

    3 条回复    2020-12-28 17:52:41 +08:00
    chainsR
        1
    chainsR  
       2020-12-25 18:19:33 +08:00 via Android
    这是,自娱自乐起来了? doge
    Lemeng
        2
    Lemeng  
       2020-12-26 15:46:42 +08:00
    都 6 期啦,支持一下
    quan01994
        3
    quan01994  
       2020-12-28 17:52:41 +08:00
    支持
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1323 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:43 · PVG 01:43 · LAX 09:43 · JFK 12:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.