创建整合的时间、天气及季节系统

0 点赞
RPG Maker MV
转载

你是否希望在游戏中加入动态时间系统,包括昼夜循环、天气系统和季节变化?在本指南中,我将逐步向你展示如何创建我在自己项目中使用的此类系统。 简介: 如果你是RPG Maker的新手,可能会认为项目中需要使用随处可见的固定不变地图,除非你具备熟练的脚本编写技能或找到其他人制作的插件。 在本指南中,我将向你展示如何让基础地图变得生动起来,打造一个完全整合的世界,包含昼夜循环、天气机制和季节变化。这一切都无需插件、脚本或其他任何工具。 要求与建议: 要求: 插件:无。 DLC:无。脚本:无。 附加程序:无。 我在这里要展示的所有操作都不需要插件、脚本、DLC或附加程序。我要展示的一切都只是基础事件编辑。 建议: DLC:取决于美术风格,可用于实现潜在的季节变化。 我不会告诉你具体使用哪些DLC,市面上有足够多的选择,你可以根据自己游戏的美学需求来挑选。不过,如果你想为游戏世界打造功能完整的季节系统,最好不要局限于默认素材。 我不是说没有DLC就无法实现,只是拥有更多素材会让季节系统的制作过程更轻松。其他工具:Gimp,免费使用,能够完成本指南中我提到的所有操作。 开始设置: 首先,我们需要创建一组变量和开关,用于控制游戏世界的时间、天气和季节。你可以自由命名这些变量和开关,我这里使用的是我自己项目中的命名,这样当我展示我的事件示例时,你能更好地理解。 变量设置: 1. 区域 2. 天气 3. 分钟 4. 小时 5. 日 6. 月 7. 年 开关设置: 1. 黎明前 2. 黎明 3. 白天 4. 黄昏 5. 薄暮 6. 夜晚 7. 春季 8. 夏季 9. 秋季 10. 冬季 11. 时间开始需要说明的是,你可以根据自己期望的系统复杂程度来增减开关的数量。例如,如果你决定不设置季节,那么7-10号开关就没有必要了。另一方面,如果你希望时间流逝感更强,可以大幅增加基于小时的开关数量,即1-6号开关。 我将这些开关作为基准,以便你了解我的设置,然后根据个人喜好进行调整。但最终这是你的游戏,你需要决定如何才能最好地让你的游戏生动起来。 室内或室外: 现在,首先也是最重要的一点是,我们需要区分室内和室外。 显然,我们不希望酒馆里下雨,也不希望地穴里日出日落。所以在我们对这些外部区域添加所有修改之前,我们需要一种机制来确保它们不会被不必要地应用。 这是我们【区域】变量的主要用途之一。我们的时间和天气系统都将依赖于至少两个【区域】值,一个室内值和一个室外值。不过,根据你期望的系统复杂程度,后续可能会实现更多的变化。 我想让你做的第一件事是在你的某个地图的左上角创建一个事件;无论是地下城、室内、室外还是世界地图,哪种类型都没关系。

我希望你这样做的原因有很多,不过现在我们先来说说其中几点。 1) 这样一来,这类事件控制就总能位于所有地图的同一位置。 2) 如果你正在制作像《塞尔达传说》那样相互连接的野外或地牢地图,它们也不会碍事,因为你必须先触发其右侧或下方的传送事件。 3) 但最重要的原因是我说要这样做,而且我总是对的,不信可以问任何人。 现在你已经放置好事件,请将触发方式设为并行,优先级设为低于角色,不要为图像文件分配资源,移动路线设为固定,也不需要踏步或行走动画。它的作用只是应用我们将在数据库公共事件中设置的情境相关控制。

创建事件后,打开内容,你需要第一页中标记为【游戏进度】的部分,标题为【控制变量】。

根据你的区域类型(例如我使用七种不同的区域类型来控制不同海拔的天气),你需要在此处设置区域ID,方法是将“Region”变量设为特定数值。 目前,我们先使用两种类型:0 = 室内,1 = 室外。因此,当你处于建筑物内部或地下城时,将你所选的区域变量设为“0”;当你在室外暴露于自然环境中,且能看到太阳或月亮时,将你所选的区域变量设为“1”。

然后只需复制粘贴该事件到所有共享该【区域】值的地图,例如,如果是室内地图,就将其复制粘贴到所有室内地图的相同位置。然后在其中一个室外地图中创建相同的内容,重复此操作。 现在,既然你所有的地图都有了各自的【区域】值,是时候向游戏确切解释这些值的含义了。 现在是什么时间? 是时候制作时间系统了,对吧? 你是否已经确定了我要求你准备的所有开关和变量?如果还没有,请现在完成,然后再回来。没有它们,你将无法进行下一步操作。也许你在想,好吧,我有了所有这些变量,但这如何构成一个时间系统呢。请向你的游戏准确解释这些变量的含义,并让它理解这些数值是如何协同工作的,方法如下。

首先在数据库的公共事件中创建一个名为【时间】的公共事件。将其设置为并行处理,并在开关【Time Start】开启时激活。此开关应在游戏开始时,玩家首次控制角色时打开。只需将其整合到开场文字滚动、过场动画或任何你用于游戏开场的内容中。 接下来,我们需要将内部【世界时间】锚定到游戏能够理解的实际计量单位。为此,打开该公共事件的内容,然后进入可用选项的第二页,找到【等待】指令。

点击它

注意比例。六十帧等于一秒。现在大多数游戏都采用压缩时间尺度,即游戏中的一小时远非现实时间中的一小时,我们这里也会这样做。所以我们将等待时间设置为300,然后再次使用【控制变量】选项,通过给变量【Minute】加1来改变该变量。由于我们将其设置为并行,它将继续循环。 因此,每300帧(即五秒),我们的分钟数就会增加1。现在我们需要设置小时,所以我们需要向游戏说明【hours】与【minutes】的关系。因此,再次打开内容的第一页,这次点击【条件分支】。

点击它

现在我们需要设置条件分支的属性,以便开始增加小时数。当分钟数大于或等于60时,我们将使用控制变量功能,将分钟数重置为0,并将小时数加1。这与之前等待300帧后将分钟数加1的操作方式相同。 查看本节的第一张截图,你应该能明白接下来的步骤。为每个变量选择所需的重置为零的节点,设置条件分支,并将该重置与下一个变量加1的操作结合起来。例如,24小时转换为1天,28天转换为1个月,13个月转换为1年。不过要记住,你不必拘泥于这些数值,你可以设定一个科幻世界,比如一天有36小时或8小时,一个月有10天或100天。这些只是作为模板,让你了解我在自己的项目中是如何设置的,仅此而已。 从黄昏到黎明,甚至包括黄昏: 当你完成所有时间变量(分钟、小时、天、月等)的循环设置后,就该将昼夜循环关联起来了。 如果你还没有设置好我之前列出的所有开关,请现在就去设置,因为在这一部分你将需要用到其中的大部分。 现在,是时候通过屏幕色调调整,将昼夜循环添加到【时间】公共事件中了。在“时间”公共事件的内容中向下滚动,找到与我们之前创建的条件分支无关的空白区域,打开内容,然后在第二页找到【屏幕色调调整】选项。

点击它

如你所见,该程序提供了多种预设级别,以及创建自定义色调的选项。因此,我们需要确定一天内要进行多少次颜色转换;正如你从之前创建的开关中可能已经推测到的,在本指南中我们将设置为六次。 不过,你始终可以根据自己的项目修改我们此处的设置。可以设置少至两次转换,或者多至每小时一次,一切都由你决定。但你需要确保不要勾选“等待完成”选项,这样玩家就能在光线过渡时继续移动。 接下来,我们需要创建六个条件分支,每个分支都基于我们将要分配给预期转换的不同“小时”值。通过控制我们标记为【黎明前】、【黎明】、【白天】、【黄昏】、【薄暮】和【夜晚】的开关。当与条件分支相关联的每个【小时】变量值达到时,之前的每个开关都会关闭,后续的开关则会开启,具体如下。

设置好“小时”触发器后,你需要设置分层条件分支。第一层条件分支由【区域】变量值定义,第二层则基于当前激活的触发器,具体如下。

你需要一个未应用任何活动效果的条件分支图层,对于所有室内和地下城地图,可参考上述截图中的【区域0】。此外,对于所有室外地图,每个已识别的【区域】变量类型都需要一个条件分支图层。 在设置好【区域】变量条件及其各自的触发次级图层后,返回【屏幕色调】选项,并为你创建的每个开关应用所需的色调。同样,可参考上述截图中的示例。 天气预报: 既然我们已经建立了昼夜循环和时间系统,现在是时候在数据库中创建第二个公共事件了,即我们的天气系统。就像我们已经创建的时间系统公共事件一样,将触发条件设置为并行处理,当开关【游戏开始】开启时激活事件。现在我们需要填写内容。 首先,与创建昼夜循环的方式类似,我们将使用分层条件分支来构建天气系统。第一层按【区域】值划分,第二层按【天气】变量值划分,具体如下:

Second, we must determine the level of variety we want to have in our weather system, for any given region, based on the "Weather" variable values. Personally, I recommend a one thru ten level system, based on an RNG mechanic. Perhaps you're wondering what that means, simply put, we're going to allow the system to assign a value to the "Weather" variable, between "1" & "10". Like so,

然而,我们需要确定的问题是如何应用这种随机数生成机制。显然,我们希望天气系统能够动态变化,让游戏世界充满活力;但同时也不希望天气变化过快,以免显得不合常理或导致故障。 解决方案是将“天气”数值的随机数生成机制整合到时间系统中。具体来说,使其以“小时”为周期,即当“分钟”归零时,“小时”增加1,此时“天气”将被设定在1到10之间的某个数值。具体如下:

然后为这些变量值分配不同的天气效果。同样,可参考本节中的第一张截图。 一旦我们设置好“区域”值条件分支层和“天气”值条件分支层,就需要向游戏解释这些值的实际含义了。打开每个条件分支下方的内容,进入第二页,选择【设置天气效果】选项。

点击它

现在,你需要决定为每个“天气”值分配哪些天气效果(如果有的话)。要明白,在这部分中并没有真正的“错误”答案,这取决于你希望该区域的天气如何运作。 不过,我有一些建议。第一,在不同的值之间改变天气效果的强度等级,这会让天气效果更具随机性。第二,使用BGS(背景音效)来配合这些天气效果,为你的天气效果提供更强的真实感。第三,如果你确实将BGS与天气效果结合使用,要像改变天气效果强度一样改变所使用的BGS。第四,将帧数设置为999,使天气效果持续到下一个“每小时”周期。 此外,有两件事是你必须做的。首先,取消勾选【等待完成】选项,你需要让这些天气效果在后台运行,而不是阻止玩家移动。其次,对于任何不会产生活动天气效果的【天气】数值,为其添加设置天气效果,但将【类型】设为【无】。这包括你用于室内和地牢地图的【区域0】控制条件分支。第三,如果你使用BGS为天气效果提供音频,那么在没有活动天气效果的【天气】数值上,将播放BGS设置为【无】,包括在用于室内和地牢地图的【区域0】控制条件分支中。

如果你不完成这两件事,那么当你本想设置为【无活跃天气效果】的【天气】数值被我们已创建的随机数生成机制激活时,天气效果和背景系统(BGS)将继续运行。这可能会导致一些有趣的场景,比如室内暴风雪和地下雷暴。 季节主题: 现在我们来讨论本指南中创建最简单但实施最困难的部分。 如果你已按照本指南前面的内容完成了所有设置,那么你几乎已为季节变化做好了所有准备。这可能会让你问,为什么接下来的部分是最难的? 答案很简单,这部分可能严重依赖下载内容(DLC)或你自己创建的资源。根据你期望的视觉多样性程度,你至少需要四种不同配色方案的默认外部资源。因为虽然你可以用默认资源创建不同季节,但除非你购买、获取或创建更多可用部件,否则选择会非常有限。 这里我不会深入讲解如何创建这些物品,因为本指南的单个章节无法充分说明。这类主题需要多个指南来阐述,具体取决于你想要实现的目标。不过,如果你决定尝试创建所需资源,我会为你推荐一个帖子,帮助你了解可以使用哪些工具来获取一些思路。如果这对你没有吸引力,我建议你在Steam上查看一下DLC,以及官方网站论坛上的资源主题帖。 创建季节性素材的可能选择 接下来开始制作季节。 首先,我们需要将季节与已创建的时间系统关联起来,为此需要【春季】【夏季】【秋季】【冬季】这几个开关。如果你还没有创建它们,现在就去创建。 你猜到我们要做什么了吗? 我们要为时间系统添加另一个组件,并将你创建的这些开关与特定月份关联起来,就像我们的昼夜循环与特定小时关联一样。具体如下:

其次,我们要赋予这些开关实际意义。你可能会问怎么做?还记得你之前在地图左上角创建的那些小型事件框吗? 我们要用到它们。具体来说,我们将使用一个已激活的并行事件,并为其添加另一层逻辑。也就是添加一个条件分支,用于检查哪个季节开关处于开启状态,然后为我们选择对应的图块集。操作如下:

现在你可能会问,如果我在地图上时季节发生变化,那看起来会不会很奇怪?是的,坦白说,那看起来会很奇怪。如果你想避免这种情况,我可以提供一个解决方案,但这个方案需要你做更多的工作。 具体来说,不要使用“更改图块集”选项,而是必须使用不同的季节图块集来创建四张不同的地图。请注意,我不是让你绘制所有四张地图,而是创建一张,制作三个副本,然后更改它们所使用的图块集。 然后在地图之间的传送点,创建四个条件分支,每个分支取决于特定的季节开关是否开启,从而将你传送到相应的季节地图。这样你就不必担心在地图界面切换地图时破坏沉浸感了。不过,这会大幅增加你的工作量。所以,选择哪种方案由你自己决定。 总结: 如果你已完成我列出的所有步骤,你的游戏现在应该拥有正常运行的时间、昼夜循环、天气生成和季节变化系统。但要知道,你可以在此系统基础上进行扩展,将其应用到不只是时间和天气相关的领域。NPC对话、商店开关门、地图上出现的敌人类型,所有这些以及更多内容都可以与你为这些系统创建的变量和开关关联起来。所以,不要害怕充分利用它们。此外,正如我之前所说,你不必非要遵循我在这里列出的模板,你可以根据自己的需求简化或加深其复杂程度。本指南的目的不是让你按照我的方式进行构建,而是向你展示我是如何以自己的方式构建的,这样你就可以按照自己的喜好构建属于你自己的内容。 最后,请记住,所有这些开关初始都处于关闭状态,所有变量初始值都为零。因此,请记得开启【游戏开始】开关,并可能将【时间】设置为你希望玩家开始他们旅程的时刻。