
想在你的游戏中添加随机战利品掉落系统,又不需要插件、脚本或其他任何东西吗?本指南将逐步向你展示如何创建我在自己项目中使用的随机战利品系统。 简介: 几十年来,宝箱一直是RPG类电子游戏的标志性元素之一,RPG Maker制作的游戏也不例外。事实上,RPG Maker通过快捷键Ctrl+3,将宝箱的创建设为快速事件创建热键之一。 然而,该热键设置往往对特定宝箱提供的奖励有明确规定,一旦设置完成,玩家每次探索该地图时,宝箱都会提供相同的奖励。因此,让我们为游戏增加一些重玩价值,让部分宝箱藏有拟态怪,而其他宝箱则包含随机战利品。这样一来,玩家每次挑战我们的地牢都会有不同的体验。 在本指南中,我将向你展示如何在游戏中制作宝箱,使其掉落与玩家角色等级相匹配的随机战利品,并在地牢中加入随机遭遇拟态怪战斗的机制,让地牢更具趣味性。包括逐步指导你创建一个基于该系统的宝箱,它会随机掉落与玩家等级匹配的金币、物品、 armor(装备)或武器,或者可能触发一场拟态怪战斗。 需求与建议: 需求: - 插件:无 - DLC:无 - 脚本:无 - 额外程序:无 我在这里展示的所有操作,只需要默认资源和一些事件编辑即可完成。 建议: - 插件:Yanfly's Event Chase Player - DLC:无脚本:插件脚本的移动路径插入。 附加程序:无。 在此推荐一个DLC包和一个插件,因为这两个资源能让你完全复现我在自己项目中用该系统实现的效果,即激活后让拟态怪以可见遇敌的形式追击玩家。 这并非该系统的必要部分,你可能不想使用可见遇敌,或者不想让拟态怪主动追击玩家,这种情况下可以完全忽略此处内容。 但如果你想完全模仿我在自己项目中的做法,则需要以下内容: 首先,你需要Yanfly的Event Chase Player插件,以便拟态怪在从初始战斗中逃脱后,能以可见遇敌的形式追击玩家。其次,你需要片仓响的《MV怪物集1》。你可以在Steam或官方网站上找到它。它会为你提供行走的拟态怪精灵图,这些精灵图与默认的宝箱角色非常相似,还有其他战斗图。你可以随意使用你喜欢的战斗图美术风格,我在此推荐这个DLC,是因为其行走精灵图与默认宝箱资源非常相似。 第三,建议你创建一个【宝藏房】地图,在那里你可以创建游戏中所有的宝箱变体。这样在开发游戏时,你就可以简单地将这些宝箱复制粘贴到任何你想要的地图中。开始设置: 在进行其他操作之前,你需要确保数据库中的【武器】、【物品】和【 armor(装备)】标签页已完整且可正常使用。请注意,这并不意味着之后不能再向这些标签页添加内容,但你需要先拥有一套可运行的物品、武器和装备来搭建此系统。此外,你还需要在数据库的【队伍】标签页中创建拟态战斗。 同时需要了解,对于物品、武器、装备和队伍,它们不必处于可立即使用的状态。它们可以只是带有名称的占位符,你可以在后续开发中再完善细节;但这些占位符是搭建此系统所必需的,没有它们系统将无法运行。这就是为什么我们要在数据库中设置这些事件,然后在地图上使用事件来激活这些公共事件;而不是在地图上设置单独的事件。这样,我们就可以在数据库中修改公共事件,并且修改会普遍应用到所有调用这些事件的地图上。 此外,你需要确定武器、防具和物品的类型;还要决定像生命药水这类物品打算设置多少品质等级,以及武器和防具的品质等级数量。例如,在我要展示的系统中,我使用了四个物品品质等级,以及五个武器和防具品质等级。不过要记住,本指南和我的其他所有指南一样,并非要告诉你必须如何在游戏中设置这些系统,而是提供一个我在自己某个项目中设置这些系统的示例,并为你提供必要的信息,以便你为自己的游戏构建类似的系统。 设置好盔甲、武器和物品后,你需要在数据库中指定公共事件,这些公共事件将用于各种宝箱事件。具体设置取决于你希望游戏拥有的多样性程度,以及你是否打算在这些事件中使用宝箱怪。

例如,在这个项目中,我使用了四种不同的拟态怪部队变体,以及五种战利品类型事件。具体包括金币、道具、 armor(装备)、武器,以及这四种的组合。这就产生了五种没有潜在拟态怪战斗结果的战利品版本事件,以及四种拟态怪变体各自对应的五种战利品版本。 不过,无论这些事件有多少种变化,在我们的示例中,它们的触发器和开关设置都是相同的。即,将触发器设置为【无】,因为我们将使用单独的事件来调用它们。 现在,你已经指定了用于游戏中各种战利品变体的通用事件,接下来是时候设置这些事件将要操作的变量了。我将在这些变量中使用的术语基于我自己的项目,并且我会在这里使用它们来对应截图;显然你不需要为你的变量使用这些名称,但你需要在自己的项目中使用具有相同用途的变量,所以现在就设置它们。 1) 宝藏 2) 金币 3) 物品 4) 武器 5) 防具 6) 等级 7) 敌人(可选) 第一个随机数生成序列: 既然我们已经确定了所需的变量,并指定了预期的公共事件,现在是时候创建我所说的条件分支树中的第一个分支了。其设计原理与俄罗斯套娃颇为相似,即通过随机数生成器序列激活对某个变量的操作,然后根据这些变量各自的数值分配不同的条件分支。 在我们的示例中,第一步是通过公共事件【控制变量】为【Treasure】变量赋值,并将其数值随机设置在两个数字之间。在本示例中,范围是1到5。


在我们的示例中,这些数值的用途如下:【1】将激活拟态怪战斗序列,【2】将激活武器掉落序列,【3】将激活 armor 掉落序列,【4】将激活道具掉落序列,最后【5】将激活金币掉落序列。 但需要再次强调的是,这个公式并非强制要求遵循,原因有二:一是你需要根据自己的游戏进行调整;二是这些数值会影响结果的概率。 例如,如果我们想提高获得金币、武器、armor 和道具的几率,同时降低遭遇拟态怪战斗的几率,可以将数值范围从 1 到 5 改为 1 到 10。然后将我们的金币、盔甲、武器和物品序列分配到数字6到10,同时将模拟战斗仅设置为【1】的结果。 一旦第一个随机数生成器序列建立,就为指定范围内的每个值分配一个条件分支,在我们的示例中是1到5。这样我们就有5个分支可以使用。


你可能会疑惑,为什么我们要从最大的公共事件开始;毕竟,先设置较小的版本不是更容易吗?我们选择先设置所有示例中最大的公共事件,原因很简单。 一旦你设置好了这个包含所有序列的最大变体,就可以直接将这些序列复制粘贴到较小的公共事件中。例如,如果你要制作一个只包含金币、不会触发拟态怪伏击的宝箱,只需复制粘贴“宝藏=5”条件分支之后的内容即可。 这样你就完成了,因为你已经在第一个也是最大的事件中完成了所有序列的设置工作。无处不在的拟态怪: 现在你已经为我们的系统指定了所需变量,在数据库中为你的公共事件选择了用于各种宝箱变体的槽位,并基于“宝藏”变量值设置了五个条件分支,我们已准备好创建模板宝箱。 要执行此操作,请前往你创建的“宝藏房”地图(任何地图均可);在事件编辑模式下,右键点击某个地格,然后选择快速事件创建“宝藏”,或按下快捷键Ctrl + 3。这将打开宝箱创建菜单。

你可以选择任何你喜欢的东西放进箱子里,这并不重要,重要的是事件公式的创建过程中需要加入什么。

也就是事件的格式。这将在我们所有宝箱变体中保持一致。宝箱开启时的移动路径和音效。宝箱是定向固定的,不会根据玩家角色的相对位置转向“面向”玩家角色。激活触发器为动作按钮。优先级与角色相同。以及由“自开关A”激活的第二个事件页,宝箱在被清空后会切换到该页面。 对于任何不包含拟态怪战斗机制的宝箱变体,你只需使用此预设模板,然后将“内容”部分替换为你在数据库中创建的公共事件之一。移动路径和音效可以复制粘贴到公共事件第二个随机数生成序列的每个结果中,就像我们设置的那样。因为所有宝箱图像文件的布局都相同,所以无论选择哪个宝箱图像文件,移动路径都能正常工作。 或者,你可以保留预设生成的移动路径和音效,然后删除自开关命令、对话框和预设的物品添加,并用公共事件替换它们。 不同结果之间唯一会变化的是描述玩家获得物品的对话框内容,你可以编辑它以反映不同的结果,以及玩家物品栏的实际变化。思路是先设置一个通用的大型公共事件,然后将相关部分复制粘贴到各自更具选择性的公共事件版本中;接着将每个公共事件附加到地图上的模板【宝箱事件】上。之后,我们只需将这些模板复制粘贴到所需的任意多个地图中,而无需从头开始重新创建所有事件。 现在,打开你应该已经创建好的模板公共事件,找到条件分支【Treasure = 1】,并点击其下方的空白区域。在公共事件的第三页中,找到【战斗处理】选项,然后按如下方式设置拟态战斗。


设置好战斗处理后,复制展示宝箱开启的移动路径和音效,将其直接粘贴到条件分支“宝藏=1”下方,但要放在战斗处理之前。这样在触发拟态怪战斗前,宝箱开启的视觉效果就能保留。然后在战斗处理中打开内容,在第一页找到控制独立开关的选项。

胜利条件为开启独立开关C,逃跑条件为开启独立开关B。操作方式如下。

通常,独立开关是在事件本身中设置的,但由于我们要通过宝箱的激活来调用公共事件,因此可以在数据库中通过指定公式来操作事件本身的独立开关,而无需使用普通开关或每次都对事件进行编程。只需清空宝箱模板第一个事件页的内容,替换为调用我们的模板公共事件即可。 现在,由于我们要创建一个可能触发拟态怪战斗的宝箱,需要在模板中额外添加两个事件页。一个由独立开关B激活,另一个由独立开关C激活,这两个开关我们已在公共事件中设置好。最终效果如下。




现在,你可能已经猜到了,初始页面显然是我们普通事件的激活页面,就像那些不会出现拟态怪的宝箱一样。通过独立开关“A”激活的第二页面是后续页面,用于处理当宝物变量结果不为“1”(即不会触发拟态怪遭遇)时的任何操作。通过独立开关“B”激活的第三页面,用于玩家触发拟态怪但随后从战斗中逃跑的情况。事件的第四页也是最后一页,用于玩家触发拟态怪遭遇并赢得后续战斗的情况。 需要明白的是,如果你不希望玩家能够从拟态怪战斗中撤退,那么第三事件页面就无关紧要,因此你无需创建它。此外,如果你打算提供撤退选项,请在“逃跑”后添加“等待”指令,这样玩家才能与拟态角色拉开距离。尤其是当你使用我推荐的Yanfly事件追逐玩家插件或其他具有同等功能的插件时。否则,玩家会陷入无限循环,刚逃跑就会立即被之前逃脱的拟态角色重新拖入战斗。 另外,移动路线中的脚本代码旨在配合Yanfly事件追逐玩家插件使用,这里不再详细说明。你可以随意使用任何系统,也可以让拟态角色保持固定位置,甚至在玩家逃离战斗后消失。重要的是等待足够数量的帧的函数,这样如果玩家想逃跑,就能拉开距离。并且不要勾选【等待完成】,否则玩家将无法移动。 最后,我强烈建议你按照我的示例设置一个空白事件页,将【自开关C开启】作为胜利条件;而不是像打开宝箱那样,在打开后用其他内容替换宝箱事件。原因是,如果事件追击并与玩家交战,然后被击败,它可能会阻挡玩家的移动,并可能形成无法通过的障碍,阻止玩家前进。甚至可能导致游戏进程陷入【死局】。战利品随玩家等级的缩放: 现在我们已经确定了宝箱怪在模板公共事件中的运作方式。接下来需要建立一种根据玩家等级进行缩放的方法,以及一个用于决定玩家获得物品的随机数生成元素。那么,让我们在模板公共事件中向下滚动到“Treasure = 2”部分,开始设置武器相关内容。 显然,我们不希望玩家在1级时就获得终局武器,因此需要一种方法根据他们当前的游戏进度来筛选可能获得的物品。那么该如何实现呢? 起初你可能会想:“我知道了,我可以基于玩家的等级创建一个条件分支。” 这是个不错的想法,让我们来尝试一下。


好吧,这真令人失望。现在我们该如何根据玩家当前等级调整战利品呢? 很简单,我们要创建一个变通方法。怎么做?很容易,我们知道条件分支可以用来评估变量;所以,我们要获取“等级”变量,并让游戏将该变量与主角的等级进行匹配,具体操作如下。


一旦我们将“等级”变量设置为与主角等级相对应,就需要根据这些变量值来设定层级。在我们的模板中,我们使用五种不同层级的武器,为了方便起见,我们将它们按五级一组进行划分。 通过使用像套娃一样的条件分支,每个分支都带有一个否则分支;要满足的条件是数值高于特定值,否则分支则是一个后续的较低值条件分支,依此类推。直到满足其中一个条件分支的标准为止。


最终结果如下: 若等级>20,则为大师级武器。 否则 若等级>15,则为专家级武器。 否则 若等级>10,则为熟练级武器。 否则 若等级>5,则为学徒级武器。 否则 等级≥1,则为新手级武器。 现在你可能会问,那我该如何设定条件分支中的“等级”标准呢? 答案很简单:你不需要设定;我也无法告诉你应该将这些“等级”标准设为多少。这就是我们使用公共事件的原因。 平衡是游戏后期开发中较为困难的阶段之一,而你的项目可能还未达到能够可靠确定这些等级标准的阶段。此外,并没有什么神奇的公式能让你一眼就能预测如何平衡游戏。由于影响因素众多,并且随着项目的开发,这些因素很可能会随时间发生变化。 不过,由于你使用公共事件作为战利品生成器,当你处于Alpha后期和Beta早期测试阶段时,只需修改公共事件中条件分支的“等级”标准,就能轻松调整玩家在地下城可获得的物品,而无需单独微调每个地点的每个宝箱。 因为对公共事件所做的任何更改,都将应用于所有调用该公共事件的宝箱。 多主角 现在你可能会问,如果我有多个主角,该如何设置等级缩放方法呢? 这将取决于你的队伍中可能有多少个主角。例如,在我用于举例的项目中,有两个可选主角,分别为男性和女性,玩家可以选择其中一个进行游玩。由于只有这两个主角,我会根据队伍中当前的主角是谁来使用条件分支。


如果你想在游戏中设置二选一的场景,比如基于多个主角,或者让英雄们分成队伍,这种方法是可行的。 另一方面,如果你打算制作一款队伍中有众多潜在角色的游戏,而这些角色是否加入队伍取决于游戏内的选择,那么你就需要更有创意一些。 首先,我建议创建一个【等级】公共事件,将其放置在我们通常的【等级】变量控制事件所在的位置。这是因为潜在的内在复杂性,同时也是为了让我们的随机战利品掉落公共事件占用更少的空间。 然后,我们就需要更有创意一些了。也就是说,不要让“等级”变量与主角的当前等级匹配;而是让队伍中每个可能的成员检查自己是否在队伍中,如果在,就将各自的等级添加到“等级”变量中,具体操作如下。


然后我们需要将队伍的总累积等级除以队伍成员数量,就像这样。

像往常一样,确定最适合你各自游戏的方法。 第二随机数生成序列武器、 armor 和物品: 既然我们已经创建了等级缩放层级并将它们附加到公共事件,现在是时候应用第二个随机数生成序列了。物品、武器和 armor 的功能基本相同。 也就是说,我们将像之前一样创建一个随机数生成序列。

然后根据这些随机数生成结果创建各种条件分支,如下所示。


然后为该结果分配一个单独的物品、武器或 armor 以添加到我们的库存,操作如下。


从机制上来说,你实现护甲、武器和物品序列的方式其实没有任何区别;不同之处仅在于第二个随机数生成(RNG)序列的总变化范围,例如武器可能是1到15,而护甲可能只有1到14。此外,品质等级的数量也可能不同,这些等级会根据玩家角色的当前等级进行调整。 不过,第二个随机数生成序列的位置可能会视具体情况而定。

如上面的截图所示,我将第二个随机数生成序列放在了关卡条件判断之上,这样它只需要创建一次,而不是跟随“等级”变量的每个后续条件分支。简单来说,这对我展示的这个项目是有效的,因为在该游戏中,玩家一开始就可以使用所有潜在的武器类型,他们的进步是通过获得更强大的变体来实现的,而不是新的武器类型。另一方面,如果玩家在游戏中后期获得新的武器、 armor 或物品类型,这种方法可能并不理想。实际上,你可能最好让随机数生成范围根据角色的“等级”层级而变化。这意味着将第二个随机数生成序列放在对应的“等级”条件分支之后。 第二个随机数生成序列:金币 最后我们来创建金币序列。 此序列与武器、 armor(盔甲)和物品序列略有不同,但许多相同的规则仍然适用。 我们仍将使用“等级”变量来调整玩家获得的奖励,并且仍会根据这些等级层级附加条件分支,如下所示。

然而,与我们的武器、护甲、物品序列不同——在这些序列中,第二个随机数生成器(RNG)序列的位置是根据必要性确定的;在金币序列中,第二个随机数生成器(RNG)应始终位于【等级】条件分支之后。因为,我们将使用【金币】变量的范围来决定玩家获得的奖励,所以每个【等级】层级将相应地拥有不同的【金币】变量范围,用于其各自的随机数生成器(RNG)。 具体如下:

我们将据此来决定玩家获得的金币数量,具体方式如下。


现在你可能会问,那我该如何创建一个对话框来描述玩家获得的物品呢?武器、 armor 和物品都很简单,我只需描述由随机数生成序列选择的物品即可。但这里,我们讨论的数量范围可能有几十、甚至几百或几千。 其实这相当简单,这也是我们设置金币变量的原因之一,在我们的示例项目中,“金币”是变量62。我们只需通过文本代码告诉对话框在消息中使用金币变量的数值,具体操作如下。

将用“金币”变量值替换文本代码,该变量值正是我们刚才用来确定玩家获得金币数量的数值。 总结: 总之,本指南旨在演示玩家打开宝箱时随机战利品生成机制的实现方法,但绝不仅限于此用途。 敌人掉落、任务奖励等也能轻松应用相同的序列。因为宝箱所固有的元素仅包括移动路径、音效以及用于改变宝箱外观和控制拟态怪战斗机制的独立开关。 移除这些元素后,该序列可轻松用于提供与玩家角色当前等级相匹配的武器、 armor(盔甲)、物品和/或金币。& 符号可用于保持支线任务等内容的相关性,即使对于后期玩家也是如此。只需将随机战利品生成序列或所选序列插入任务完成对话中,或作为战斗胜利流程的结果。 这些指南的重点不是复制我所展示的内容,而是理解如何自行创建它们,然后对其进行修改以最好地服务于你自己的游戏。
2026-02-14 22:00:13 发布在
RPG Maker MV
说点好听的...
收藏
0
0
