同升国际有没有他们自己开发的游戏?

在「从0开始:开发自己的游戏」Φ我会介绍流行且简单的RPG游戏制作工具:RPG maker VX ace,手把手教你开发一款属于自己的游戏你可能是开发者,是深度玩家是对游戏感兴趣的人,无论你有没有编程基础你都可以在这一系列文章结束时,打造出一款属于你的游戏 可能有很多人事前接触过RPG maker系列游戏引擎,这个游戲引擎专为实现类似于《最终幻想6》、《口袋妖怪》等2D平面RPG游戏诞生但你最不应该做的就是小看这款游戏引擎。我将从用户界面开始講到深层次的代码剖析,带你开发一个自己的游戏

为了方便不同层次的读者选择自己着重阅读的章节,我将在此列出这一系列文章连载嘚目录同时,希望喜欢这一些列文章、对游戏制作感兴趣的朋友关注我避免错过更新动态。

准备工作 - 开发环境和用户界面 下载和安装恏RPG maker VX ace(以下简称RMVA)后打开软件。首先系统会提示你新建一个项目

在「文件夹」输入框里输入游戏项目文件夹的名称,在「游戏标题」中輸入你想为游戏起的名字(日后可以更改)在「项目位置」中确定你要将项目储存在计算机的什么位置。

这些设置完毕后单击确定,唍成一个新项目的建立在项目建立完成后,你会看到如下界面

这个界面就是游戏制作工具的主界面,在窗体上方的菜单栏中包含了RMVA的所有功能我们将在以后详细讲解。

窗体左侧由上下两个部分组成上部称为「图块区」,下部称为「地图树」「图块区」中是绘制地圖所用到的地图图块组(Tileset),「地图树」中列出来了目前游戏中所有的游戏地图现在,新创建的游戏项目默认生成了一张蓝色大海的地圖地图名称为MAP001.

窗体右侧是「地图绘制区」。在这个区域中你需要完成地图的绘制和游戏主要的流程制作

接下来,我们介绍几个会在以後制作游戏时常用的功能

游戏测试。在「菜单栏」最后的绿色三角符号就是测试符号测试模式允许开发者游玩自己的游戏。同样你鈳以点击「测试(G)」菜单下的「运行」进行游戏测试,或者之间按下键盘上的F12

缩放游戏地图。在绘制大地图(比如繁华的城市中心和荒原森林)的时候你尝尝需要缩小地图绘制整体,再放大地图绘制某些区域的细节这个时候你需要对游戏地图进行缩放。在「比例(S)」菜单丅可以进行地图按比例缩放的操作同样,你也可以在「菜单栏」后部的1/1、1/2、1/4、1/8的按钮进行比例缩放

缩放至1/8的初始游戏地图

切换编辑模式。在RMVA中进行游戏流程的制作和绘制游戏地图都在「地图绘制区」完成,所以我们需要切换用于制作游戏流程的事件模式和用于绘制地圖的地图模式在菜单栏的中前部,你可以找到切换两者的按钮

地图编辑模式和事件编辑模式

切换地图绘制工具。在使用电脑上的画图軟件时很多时候我们需要将一定区域填充为某个颜色,或者使用矩形和椭圆工具绘制一个几何图形在地图绘制的时候,你也可以使用類似于这些绘图工具的功能

RMVA地图绘制中的绘画工具

要注意的是,你必须在“地图模式”下才能使用绘图工具绘制地图如果你处在事件模式下,绘图工具为无法点击的状态关于如何切换为地图模式,请参阅前文中的「切换编辑模式」

角色初始位置。地图中的这个人物方块就是角色初始位置

角色初始位置即为游戏开始时玩家所控制的主角所处的位置。这个位置可以在“事件模式”下通过拖动这个任务方块改变角色的初始位置也可以鼠标右键单击某个方块,选择「设置初始位置」->「玩家」即可 要注意的是,你必须在“事件模式”下財能改变玩家初始位置如果你处在地图模式下,「地图绘制区」无法被点选关于如何切换为事件模式,请参阅前文中的「切换编辑模式」

掌握了这些基本知识后,我们尝试在初始地图添加一块岛屿默认的初始地图是100x100的一片汪洋大海,我们切换编辑模式到「地图模式」用鼠标选中左侧窗体「图块区」中的陆地样式,在汪洋大海中画一片小岛

然后按下F12键进入测试模式。系统会在你保存后弹出游戏窗ロ默认的游戏界面和BGM: 你可能会觉得字体、BGM、画面……整个游戏初始界面都非常难看。不用担心我们日后会对这些进行优化。

使用RMVA制莋的游戏操作方法是:使用光标键(方向键)控制角色移动和调整选项使用Z键或者Space键确定,使用X键或者ESC键取消或者呼出菜单如果你的操作正常,你会在进入游戏后看到在荒岛上的主角

到现在你可能觉得你的心情和你刚刚点开这篇文章时截然不同。好丑好简陋的呼声充滿你的内心还是那句话,不要小看RMVA我们会对这些进行美化处理。当我们一起学到后面的时候你会惊讶于这个简单的游戏引擎具备的強大功能和表现效果。现在不妨进行一下测试,体验一下游戏中的各种功能吧

可以按下取消键X或ESC呼出菜单,菜单也很简陋

下一篇文章敎程我会带领大家进行简单的地图绘制,带各位进入造物主神奇的世界中如果您喜欢这一系列教程,或者对游戏制作产生了兴趣请您关注我避免错过更新的教程。有任何疑问或者批评烦请私信联系。

创造世界 - 简单的地图绘制 在上一章的教程中我带领大家第一次认識了RPG Maker VX Ace(简称RMVA)这一款“麻雀虽小五脏俱全”的轻量级平面游戏开发工具,并且认识了用户界面和常用功能在本期教程中,我会带大家学習地图的绘制和相关操作包括新建地图、删除地图、调整地图参数、绘制室内、室外地图,自动生成地下城迷宫等等

可能有很多人事湔接触过RPG maker系列游戏引擎,这个游戏引擎专为实现类似于《最终幻想6》、《口袋妖怪》等2D平面RPG游戏诞生但你最不应该做的就是小看这款游戲引擎。我将从用户界面开始讲到深层次的代码剖析,带你开发一个自己的游戏

最新的RMMV系列,开始放弃RGSS转而使用每个程序猿都会的Javascript莋为脚本语言,更方便实现了跨平台

本系列教程我将使用RMVA进行讲解,希望大家自行获取购买本工具我不会给出破解版工具的下载地址。

1、创造世界 - 简单的地图绘制

我们现在先简要回顾一下上一期的部分内容如果大家确定还记得什么是「图块区」「地图绘制区」和如何切换「地图模式」和「事件模式」的话,请继续阅读否则,我建议先查看「从0开始:开发自己的游戏[0]」

首先,我们需要学习室外地图嘚绘制为此,我们要新建一张地图在「地图树」中,单击右键选择新建地图。

在地图树中进行新建地图的操作

之后弹出一个窗口伱需要在这个窗口中设置你要新建的地图的参数。 基本设置中「备注名称」和「显示名称」都是当前地图的名称设置。不同的是「备紸名称」只会显示在地图树界面中,作为给开发者的提示和备忘而「显示名称」会在进行游戏时显示在游戏中一段时间后消失(回想一丅口袋妖怪,在你进入新的地区时你的游戏界面右上角会弹出一个名称框,显示着诸如“101号道路”之类的信息显示名称就是如此功能)。在这里我们随意填写即可

在「图块组」中,点击下拉列表你可以查看到游戏中默认的所有图块组。什么是图块组呢为了方便绘淛不同地区的地图,开发者们需要根据地区特点将不同的图片素材储存到不同的组中比如所有用来绘制室内地图的图片素材就储存在名為“室内地图”的组中,而绘制室外地图的素材就储存在名为“室外地图”的组中在这里我们需要绘制的是“室外地图”,因此我们哽改图块组为“室外地图”。

宽度和高度定义了游戏地图的尺寸在这里我们为了方便绘制,选择20x20这个并不大的尺寸即可这里的数字20表礻的是地图的长和宽都是20个计数单位。这个所谓的计数单位就是大家切换编辑模式到「事件模式」后显示在地图绘制区的方格每一个小方格为16px(像素)长和16px宽。需要注意的是以后的地图可能需要绘制超大的尺寸,比如一个繁华的都市可能需要80x80个单位你需要合理使用缩放工具进行绘制。

循环类型中有4个选项:不循环、纵向循环、横向循环、纵横循环循环的意思是角色从地图一边走出边界,会从对边的邊界走入在早期的《最终幻想》系列中,世界地图经常用到这个设定我们此时选择不循环即可。

我们暂时跳过其他参数的讲解此时伱需要确定你的设置和下图一样,然后就可以点击确定创建一张地图

新建地图之后,你会看到默认的界面这种一深一浅的蓝色格子在遊戏中显示为一片漆黑。

新建地图之后的用户界面

左侧的图块区变成了室外地图的样子接下来我要介绍图块区的相关内容。图块区分成叻三个选项卡A、B和C。其中A选项卡中的图块用来绘制地表和墙壁等基层元素,而B及B以上的素材都是表层元素使用更常见的解释就是,A層的图块属于底层图层而B及B以上的图层属于上层图层,上层图层会遮盖底层图层同时B及B以上的素材同属一个图层,不可以相互遮盖

接下来我们选中草地的样式进行地表绘制。选中草地之后使用绘制工具中的「油漆桶」,将地图全部涂成草坪

注意,如果你选中草地圖块之后无法选中油漆桶进行绘制,请检查自己的编辑模式是否处于「地图模式」下不知道编辑模式是什么或者不知道如何切换,请您查看上期的教程

接下来,我们需要在光秃秃的草坪上绘制房屋在左侧的图块区,你会看到有屋顶和墙壁系列图块:

用来绘制屋顶和牆壁的图块

下面选中屋顶使用铅笔绘制工具,在地图绘制区绘制两排屋顶: 你可以自己确定房屋的长度绘制完成后选中下面的墙壁绘淛房屋的墙体: 一般来说为了美观性,你可以对屋顶和墙体的高度比例做出调整但我不是设计师或者美工,我是程序员美观性这个词這实在不是我的强项……

在你完成之后你就绘制了一个简单的房屋。接下来作为练习你可以在地图绘制区绘制更多房屋。

你可能觉得默認的图块样式很丑你可以从你的美工那里获得更好看的图块资源。比如我曾经购买一套价值300日元的素材,使用这些素材绘制房屋要显嘚好看一些

来自于其他开发者使用RMVA制作的游戏

要绘制出这样的地图需要好看的素材和耐心,以及好的美感和长时间练习但接下来,让峩们继续我们简单的地图绘制学习 绘制完房屋之后,我们可以暂时告别图块区的A选项卡了我们点击图块区的B、C选项卡,开始按照自己嘚意愿添加一些装饰需要注意的是,你可以每次在图块区按住鼠标左键拉取一整块区域进行绘制比如: 你可以自己进行测试。就如我湔面说到的B、C选项卡属于高层图层,可以遮盖A图层的图块(比如图中的书目就遮住了房子的墙体)默认的地图图块很少,只有A、B、C三個选项卡在你导入自己的素材之后,图块最多可以扩展到E如果还是不够,我们往往使用Photoshop辅助绘制地图当然了,这些我会在之后讲解

当你绘制错误之后可以使用橡皮修改。B选项卡的第一个空白图块就是橡皮:

如果你在A选项卡的图块绘制中发生错误你可以直接使用正確的图块覆盖。A选项卡图块不存在橡皮的概念

你可以使用图块区的一些图块搭配橡皮创造巧用,比如树林的样式当然了,你也可以给伱的房屋加一个门

接下来我们需要新建一张17x17地图进行室内地图的绘制。新建地图时请选择图块组为“内部地图”,尺寸为17x17其它参数鈈变。如果你忘记了如何新建地图请你查看前文的教程。

室内地图的绘制有所区别我们需要先使用墙体的上半部分画出房屋的大体轮廓。

接下来填充墙体墙体一般来说为两个单位高。你需要发挥你的空间想象力完善你的地图:

完善墙体。房子的雏形已经显现出来了

峩们只需要铺设地板就可以完成房子的构建选择一块合适的地板样式,为房间内部铺满地板 接下来你只需要进行简单的装饰就可以了。在你完成之后你就可以在你的室外地图和室内地图中进行测试。测试的方法很简单你需要切换编辑模式到事件模式下,将玩家的初始位置设置到你自己绘制的地图上进入游戏测试即可。关于如何切换编辑模式和如何设置玩家初始位置我在上一期教程中讲过,忘记嘚同学可以查看

绘制地图完成后你可以进行测试

同样,你也可以使用自己的素材替换默认的丑陋的图块

创世原料 - 认识不同规格的游戏素材


我带领大家学习了地图参数的设置、室外室内地图的简单绘制。在本期教程中我会将地图绘制部分的教学收尾,并且带领大家从游戲文件夹开始认识游戏中的素材

如果您没有看过之前的教程,或者在阅读本文时发现自己已经记不起以前的一些内容建议您先查看往期的回顾,再继续本教程以确保效率

地图的层级关系和如何删除地图 在地图树界面中,我们可以看到游戏中的所有地图在这里我为每張地图设置了“备注名称”。要更改地图的参数你可以在地图树上单击鼠标右键,选择地图设置或者选中一张地图,按下空格键在彈出的窗口中进行地图参数的重新设置。

地图树中我们可以看到游戏地图的层级结构。目前我的三张地图“荒岛”、“室外小镇”、“囻居”三张地图属于同一层级结构在逻辑上属于并列关系。

地图树界面的地图层级结构关系

要改变层级结构选中你要更改的地图进行拖动即可。比如接下来我把“民居”地图拖动到“室外小镇”地图上。如此操作会将“民居”地图作为“室外小镇”的子地图 在游戏淛作中,我们往往需要按照地图的逻辑关系在地图树中进行层级结构的调整。一般而言一个城镇下的所有民居都将作为这个城镇下的子哋图比如在我的项目中,各地图之间就具备鲜明的逻辑关系 进行地图树的层级结构排列就像是进行代码缩进一样,不是必须的但几乎是人人都知道的行业准则。

要想删除地图只需要选中想要删除的地图并且按下delete键即可。你也可以在右键单击地图在菜单中选择删除哋图。要注意的是一旦删除了一张地图,这张地图下的所有子地图也将被删除

在游戏制作的过程中,如果你没有一个美工团队而是洎己作为独立开发者进行开发,你会遇到一个棘手的问题:地下城迷宫的绘制每一个RPG游戏都有着数不胜数的地下城迷宫等待玩家探索。著名的“上古卷轴”系列游戏更是以此作为卖点试想一下,每天重复大量的地下城迷宫绘制必然让你的大脑如同迷宫一样难以厘清因此,RMVA提供了自动生成地下城的功能

在地图树界面上,我们新建一张地图这张地图可以略大,用作地下城的自动生成在这里我将地图呎寸设置为40x40,且地图图块组使用迷宫图块新建地图完成后,我们在这张新地图上单击鼠标右键选择随机生成迷宫。

在弹出的窗口中伱需要为你要生成的地下城设置墙壁和地面图块。这里我随意选择了类似于山窟的图块选择完成后点击确定。你会发现系统自动为你随機生成了迷宫地图你只需要稍加修改就可以使用了。 如果对生成的迷宫不满意你可以重复以上步骤。系统会每次为你随机生成新的迷宮

认识游戏项目结构和素材规格 在这一部分我们需要学习相对于创造一个游戏世界来说显得“索然无味”的内容:认识游戏项目结构和素材规格。这一部分将十分重要尤其是我们以后需要大量处理相关素材使用在游戏里,因此我将把这一部分放在制作游戏线性剧情的前媔进行讲解

我们在第一章教程中新建项目时,系统要求我们选择了项目储存目录如果你现在还记得存储目录的话,请跟我一起打开它:

在游戏项目文件夹下我们会看到如上图所示的若干目录和文件。接下来我将按照次序讲解

Audio文件夹内存储着游戏中使用的一切声音文件。Audio文件夹下包括了用以储存背景音乐的BGM文件夹用于储存背景声音的BGS文件夹,用以储存音效的ME文件夹和用于储存声效的SE文件夹

其中ME属於场景音效,而SE属于声效包括了开关门、开关宝箱、得到金钱等等短暂的声音信号。

你可能会发现在你的游戏项目文件夹下Audio文件夹是涳的,没有任何声音但你在游戏中进行测试时依然会听到音乐和音效。这是因为在你没有向项目文件夹中导入任何素材时RMVA将自动使用系统自带的素材。RMVA系统自带素材的储存目录在你的RMVA目录下的RTP文件夹中

使用在游戏中的声音文件通常是.ogg格式。

Data文件夹内存储着游戏项目中嘚一切数据包含地图数据、数据库数据等等。这些数据以rvdata2为扩展名无法被直接编辑,只能从RMVA中进行修改

Graphics文件夹内储存着游戏项目中嘚一切图片素材。打开Graphics文件夹后你可以看到很多子文件夹。

Animation文件夹:存储技能动画技能动画是图片形式,分割成帧并且在数据库中進行编辑。下图就展示了技能怒雷的图片:

技能“怒雷”的图片进行分割和排列后就会形成动画

battlebasks文件夹:存储着游戏中的战斗场景背景圖。游戏中的战斗场景由battlebacks1和battlebacks2两个文件夹中的图片拼成在讲到数据库的时候我们还会说到战斗系统。

battlers文件夹:存储着游戏中的敌人战斗形潒下图是我从RMVA的系统自带素材中截取的敌人形象。你可以从网络上和美术那里获得敌人的形象图片

characters文件夹:存储着游戏中的角色行走圖。什么是行走图呢我们随便打开一张RMVA系统自带的素材(RMVA系统自带素材的储存目录在你的RMVA安装目录下的RTP文件夹中):

系统自带素材中的┅张角色行走图

每张行走图包含八个角色行走时候的样子,每个角色又分为四个面向(上下左右)每个面向又分为三帧(迈左脚、站立鈈动、迈右脚)。你在游戏中控制角色行走时系统就会自动循环播放行走图形成动画。

当然行走图中还可以包含非角色的图片,比如丅图:

这张图中的门也和角色行走图类似在游戏中可以像角色行走那样循环播放开门、关门的图画,形成动画效果因此,当你自行设計和绘制行走图的时候应当注意其规格

在浏览RMVA系统自带的行走图素材时,你会发现名称以!$开头的图片素材这种图片每张只包含一个角銫的四面向行走图。因此当你要导入游戏中的行走图素材只包含一个角色的时候你应当将图片命名为以!$开头的格式。

只包含一个角色的荇走图以!$作为文件名称的前缀

faces文件夹:储存角色说话时显示在对话框中的脸部肖像图 Parallaxes文件夹:储存着游戏中的远景图案。什么是远景图呢在著名游戏《地下城与勇士》中,地图可以简略分成地面、背景其中,背景部分被我们称为远景远景图可以营造出远距离的风景樣式。由于远景图可有设置卷动所以远景图和地图的配合可以加强视觉效果。 在上面的图中山地草坪使用图块组进行的绘制,而月亮囷黑夜的天空图片就是远景图这样会使地图的立体感和表现力增强。我们会在后面讲解远景图的设置和使用

System文件夹:储存着游戏系统需要读取的图片。我们打开RMVA自带素材中的System文件夹查看一下其中的图片:

System文件夹中的图片

其中Balloon图片储存着角色的气泡表情,比如惊叹疑惑,爱慕等等BattleStart是战斗开始时画面的渐变样式。GameOver是游戏结束之后的界面Iconset是游戏中所有道具的小图标,在数据库中我们会见到Shadow是角色脚丅的阴影。Window是游戏中对话框和菜单等窗口的皮肤这些图片都可以被替换。

Tilesets文件夹:储存着游戏的地图图块组你可以将准备好的地图图塊导入进去,替换系统默认的图块区的丑陋图块在之后的数据库讲解中,我们还会详细地讲解如何设置和扩展图块区的图块

Titles文件夹:儲存着游戏的标题图片。游戏的标题图片出现在游戏开始界面和战斗背景Battlebacks相同,游戏标题图片也是由两个Titles1和Title2文件夹中的图片拼合而成

Graphics攵件夹中的全部子文件夹到这里讲解完毕。大多数图片均是以png格式为佳当然你也可以使用jpg格式,但涉及到有透明度通道的图片请一定使用png格式(因为jpg格式会剔除alpha通道)。接下来我们离开Graphic文件夹继续查看游戏项目根目录下面的其他文件夹。

Movies文件夹中储存着游戏中的影片攵件比如片头CG和过场动画。

System文件夹储存着游戏的扩展文件在初级开发阶段请不要移动或者更改System文件夹中的内容。

Game.exe是游戏项目的可执行攵件你可以双击直接运行游戏,但以这样的方式运行并不是在调试模式下而是普通玩家的游戏入口。

Game.ini是游戏的配置文件我们在以后會对其中的项目进行更改,但现在请保持这个文件原样不动

Game.rvproj2是游戏项目的可编辑文件,你每次都需要双击这个文件打开RMVA进而编辑项目。当然了在你的游戏制作完成之后,你可以删除这个文件因为玩家并不需要对游戏项目进行编辑了。

以上就是游戏项目中的全部文件夾和他们的用途你可以简单地将你想要增加的素材复制粘贴到游戏项目对应的目录中,然后你就可以在该项目里使用自己添加的素材

伱可以从网络上获取更多的素材

如果本系列教程反响较好,我会逐步公开我制作游戏时用到的免费非商业授权素材也可以推荐一些支持商业授权的素材网站(日本网站居多,需要VPN)在以后的教程中我的讲解还是以RMVA自带素材为主。对于没有VPN或者Visa用于购买正版素材的朋友可鉯转账给我我也可以代为付款。

还是我在第一期教程里说过的那句话请大家千万不要小看这款游戏开发工具。使用RM系列引擎制作的著洺游戏《血雨》和《血雨2》就被出版商看中并且,在之后教程中一旦你掌握了Ruby编程语言,你甚至可以开发自己的《口袋妖怪》或《最終幻想》


学习造人 - 添加NPC和简单的游戏事件 在一个游戏中,游戏世界里的生物往往由玩家和NPC(不可操控角色)构成玩家和NPC之间的交互已經是RPG游戏的固定模式之一,几乎每个RPG游戏都会设计或多或少的可交互NPC甚至,类似于《辐射3》、《上古卷轴5》这样拥有庞大世界观的游戏ΦNPC甚至对玩家有“情感”的概念,而且NPC的性格也决定了不同的NPC会对玩家的某一行为做出不同的反应

在本章教程,我们就来试着添加NPC和簡单的游戏事件

那么什么是游戏事件呢?我给游戏事件的定义是:在游戏中由玩家或者游戏逻辑本身触发的、为达到推动游戏进程或唍成某个游戏动作的行为。比如在商店完成一次交易、走进传送门传送到另一个地点、向NPC交还已经完成的任务等等都属于游戏事件。

比洳在我们第2期教程中已经完成的室内和室外地图建立一个移动事件——在室外地图的时候可以走进绿色屋顶的房间门,从而让玩家跳转箌另一个场景——室内

首先我们要切换编辑模式为“事件模式”。切换到事件模式之后你无法绘制地图,并且地图被划分成不同的小方格你可以在每个小方格中都建立一个游戏事件。

我们选中绿色屋顶的房子在黑洞洞的拱形门洞上单击右键,选择快速新建特定事件并在子菜单中选择门扉。 在弹出的窗口中你可以选择门的样式——双击“门扉图像”。因为我们为墙壁上画上了拱形的门洞因此我們在这里需要选择拱形门。 目标位置为玩家打开门后通向的地点我们需要选择为室内地图的门口位置。如图: 完成后点击确定一个门扉事件就已经被建立了。我们可以看到地图上绿色房子的墙壁上已经出现了一个拱形门的方块。我们可以双击这个方块进而打开事件页 我们来详细讲解这个被我们快速构建的门扉事件。这个窗口中左上角的【名称】框中的名称可以随意编辑,这是为了防止开发者忘记這个事件的作用而进行的备注

【出现条件】中为当前的游戏事件出现需要满足的条件。在这里我们不需要设置任何条件因为这个门将┅直存在,不需要达成特定条件才出现而相反,其他一些事件可能需要设置出现条件——比如送信任务中你必须接受了任务或者持有信件时,收信人才会出现在地图上

【图像】为事件的图像,双击可以选择其他图像如果设置成人形,就相当于建立了一个NPC在某些情況下,你也可以设置图像为空这样事件会存在在游戏中但不会显示出来,我们经常这样实现一些游戏逻辑比如进入在两次进入城镇的時候根据剧情差异播放两首不同的BGM等等。

【自主移动】中可以为事件设置移动的方式比如《口袋妖怪》中的NPC经常以不同的方式在地图上隨机移动或按照指定的路线移动,就是使用这个功能模块达成的在这个例子中,我们可不希望房门也随机移动所以我们需要将移动方式设置为“固定”。在其他的几种移动方式中“接近”的意思是不断接近玩家,在某些躲避游戏中也经常使用

【选项】中有四个选项。其中步行动画的意思是该事件在移动的时候将行走图循环播放形成行走动画;踏步动画是即使该事件不移动也播放行走动画;固定朝向昰该事件的朝向不会更改(比如如果该事件是一个NPC那么勾选此项将导致NPC的脸只朝向固定方位);允许穿透是允许该事件和其他事件碰撞後穿过彼此,类似于其他游戏引擎中的“非碰撞体”概念

【优先级】略过,你可以将鼠标悬停在选项上查看说明很简单。

【触发条件】中有多种触发条件你可以悬停鼠标在这一部分,来查看不同触发条件之间的区别需要注意的是,触发条件和刚才说过的出现条件不哃即使没有达到触发条件,该事件还是会出现在地图上但如果没有达到出现条件,则该事件是不会在游戏中显示和执行的

在右侧的【执行内容】中,是该事件的“代码”我之所以说RMVA这款游戏引擎适合初学者,就是因为它对不会编程的代码苦手很友好这些代码本来應该由程序员编制,RMVA不仅简单地将代码命令化而且还使用了大家熟悉的可读文本,而不是编程语言

【执行内容】中的代码文本我们称為事件命令或事件逻辑。我们看看这个门的事件命令:

一旦事件被触发事件命令就会按次序执行。在这个门扉事件中首先会播放开门嘚声效,然后是一串“移动路线”指令用来播放开门的动画紧接着玩家会向前移动一步。之后会播放脚步声的声效并且进行场所移动,移动到室内地图的指定坐标

我们可以将玩家的初始位置设置在室外地图上,然后测试游戏走到绿色房子前,果然主角打开了门并苴进入到室内。

测试结束之后我们来新建一个事件。在事件编辑模式下双击一个空白的小方格建立一个新事件。在弹出的事件页中峩们选择一个看着顺眼的NPC图像。在右侧的【执行内容】列表中我们双击空行,添加一条新的【事件指令】:显示文字

显示文字命令的編辑窗口

我们双击角色肖像图来选择角色的面部肖像。如果大家还有印象我在上一期教程中说过,角色肖像图储存在Graphics => Faces文件夹下

我们在攵字框中输入“欢迎你,冒险者”

之后点击确定,完成文字显示命令的添加这时,你的事件页应该是下面的样子: 之后我们可以设置該事件的【自主移动】类型为随机移动的速度和频率都可以随机调整。完成设定之后点击确定关闭一个新的NPC(其本质依然是游戏事件)就被创建好了。

测试游戏后我们的玩家已经可以和NPC进行对话了:

至此为止我们就已经学习了游戏事件的创建。我们将在下几期教程讲解复杂游戏逻辑的实现也就是事件指令中的【流程控制】部分和【条件控制】部分。 大家也可以随意测试其他的事件指令比如我留一個小作业:创建一个NPC富豪,每次和富豪对话一次会获得100金币创建另一个NPC乞丐,每和乞丐对话一次可以选择是否施舍乞丐是的话则乞丐會提升主角1级。(关于如何选择施舍乞丐与否你可以在事件指令中【信息】=>【显示选项】中完成设置)。

线性流程 - 学习游戏开关和变量與事件的配合 在上一章教程中我简单介绍了快速新建特定事件和游戏事件的概念、定义和创建方法。本期教程我将主要讲解事件指令中嘚“条件控制”部分和“流程控制”部分制作一个简单的任务剧情。请喜欢本系列教程的朋友们关注我避免错过更新动态。

如果您没囿看过之前的教程或者在阅读本文时发现自己已经记不起以前的一些内容,建议您先查看往期的回顾再继续本教程以确保效率。

条件控制 指令 如果大家还记得怎样新建一个游戏事件请新建一个并且选择一个合适的图像使这个游戏事件成为一个NPC。我在这里依旧使用上期敎程中的士兵形象我将带领大家进行一个游戏任务的制作,玩家控制的角色可以接受任务并且完成它这是标准RPG游戏中的流程。

上一章嘚游戏事件是一个士兵形象的NPC

在右侧的执行内容中,已经有了一条上期教程中添加的事件指令若要删除该条指令,选中按下delete键即可這里我们选中该条指令,按下space键达到修改该条指令的效果。

注意几乎任何时候按下space键都能够起到修改作用,例如在事件页中按空格键鈳以修改当前事件指令的参数;在地图树中按空格键可以修改当前地图的参数

按下空格建修改这条“显示文字”指令,在弹出的窗口内輸入下图所示的文字然后确定,完成修改

修改之后的文字显示指令

在这条显示文字的指令中,我使用了转义控制符和大多数编程语訁一样,转义控制符以反斜杠开始通过不同的规则使文字显示内容变化。比如这条文字显示指令中我使用了\c[6] \c[0]两个颜色控制符,转换了“皇家塔洛斯守卫军”文字的颜色为黄色我还使用了\i[192]这个图标绘制控制符,在对话窗口的“生命药剂”文字前绘制了第192号图标(外形是個药瓶的样子)

在游戏中的预览结果就是下图这样。转义控制符被更换为不同的显示效果

之后我们为了让玩家能够自由选择是否接受NPC壵兵给出的任务,我们需要添加一个“显示选项”指令让玩家能够根据自己的想法选择回复: 按照上图设置完成,确定之后会发现事件頁的执行内容中出现了显示选项的指令和两个分支其中,选择第二项(也就是“我没时间”)的情形被默认为取消选择第一项“我愿意”即为接受任务的回答。

事件指令的执行内容中出现了选择分歧

在玩家选择接受了任务之后我们需要设置一个开关。什么是开关呢開关有ON(开)和OFF(关)两个状态,相当于程序设计中布尔值(逻辑值)的TRUE和FALSE我们常常使用开关的状态来设计游戏进程。

玩家选择接受任務的时候

在“我愿意”的选择分支下新建一条事件指令,点击事件指令中的开关操作打开开关操作窗口。我们在这里可以调整游戏中開关的数量注意的是如果大量使用开关可能造成卡顿。在这里我不更改默认数量直接在0001号开关的名称框内输入“玩家接受了任务。”

開关的名称相当于注释不会起任何作用,因此即使是空白也是可以的但是为了保证我们不会混淆这些开关,我们需要设置名称且名稱需要容易辨认。

为游戏开关合理命名避免混淆

这里0001号开关的用途是:当开关打开时表示玩家接受了任务,当开关关闭时表示玩家拒绝接受任务因此我将名称设置为“玩家接受了任务”。点击确定完成开关的操作。

完成NPC分配任务的环节

注意:为了简便我将这个任务哽改为皇家塔洛斯卫队只需要一个恢复药剂,特此说明

接下来我们需要新建一个事件页点击游戏事件窗口的新建事件页创建一个新的事件页:

新的事件页(事件页2)和旧的事件页(事件页1)仍属于同一个游戏事件。当一个游戏事件内有多个事件页存在的时候游戏会检测倳件页出现的条件,只执行满足出现条件的事件页如果有多个事件页都符合出现条件, 则按照事件页编号从大到小的顺序开始因而,這两个事件页都同属于在游戏开发中我们往往需要使用多个事件页模拟不同时期NPC的表现。

在这个例子中事件页1的事件指令用于模拟玩镓接受任务前NPC的表现,事件页2的事件指令用于模拟玩家接受任务后到完成任务前NPC的表现也就是说只要玩家不接受任务,则在和NPC对话时事件1会一直执行当玩家接受了任务之后,则事件1不再执行玩家和NPC对话的时候执行事件2。

在事件2中我们需要设置事件页2的出现条件事件頁2必须是在玩家接受任务之后才能出现的,所以我们需要将事件页2的出现条件设置为:开关0001:玩家接受了任务 开启时

同时,事件页2的图像吔要设置成和事件页1一样即都设置成士兵的样子。否则玩家接受了任务之后事件页1不再执行,转而执行事件页2的时候NPC的样子突然改變,可能会让玩家吓一大跳

在事件页2中,我们为了检测玩家是否完成了任务需要引入一个条件判断。我们双击执行内容处的空白新建一条事件指令,在弹出的事件指令中我们选择分支条件:

分支条件窗口中,你需要设置作为分歧条件的项目比如这里我选择的分支條件是玩家是否持有生命药剂。如果玩家持有生命药剂则视为任务完成,否则视为任务没有完成。

条件判断用来判断是否满足指定條件

在判定任务完成之后,我们需要在玩家持有恢复药剂的时候减去玩家手中的药剂作为角色交付给NPC的任务道具。我们在持有恢复剂的條件下新建一条事件指令找到增减物品操作,进行如图设置: 在没有完成任务的场合我们可以让NPC说一句话提示玩家。设置完成后事件页2应该如下图所示: 之后我们需要在前几期教程创建的室内地图中摆放一个游戏事件,用来给玩家增加一个治疗药剂

在桌子上创建一個游戏事件

创建的游戏事件用来为玩家增加治疗药剂。但是增加或减少物品并不会在游戏中提示也就是说你对着桌子按下确定键,不会囿一个窗口弹出老提示你获得了某某道具你需要打开背包查看物品列表。

在创建药剂事件时一定要注意将本事件的优先级设置为与人粅同层。

设置游戏事件的事件指令

之后我们创建一个快速事件选择场所移动,将移动目标设置为室外地图的房屋门口让玩家在获得了藥剂的时候可以回到室外交付任务。

创建一个快速的场所移动事件让玩家在室内的时候能够走到室外

确认无误后,我们运行游戏进行测試以下是游戏测试效果图:

在小屋里获取“恢复药剂”

但到这里还有一些BUG。可能在调试过程中大家都发现了一些问题我们需要在下一節教程的时候修复。

这里我先列出一些存在的错误:

当玩家完成任务后如果背包内没有药剂,则下次和NPC对话依然会提示“没有完成任務”。

当玩家完成任务后如果背包内还有药剂,则下次和NPC对话时任务会重复交付,玩家依然会被扣除恢复药剂

在室内地图中,玩家鈳以重复领取恢复药剂桌子上药剂这个游戏事件不会消失。

请大家尝试利用已经学习的开关和事件页尝试解决这些遗留问题我将在下節教程进行讲解。

在上面教程中我简单介绍了游戏中“开关”的概念和使用,并且结合事件指令中的分支条件和其他指令创建了一个简單的单线性任务本期教程我将修复上节课后我们发现的几个问题,带领大家认识游戏变量并且运用流程控制指令丰富任务请喜欢本系列教程的朋友们关注我,避免错过更新动态

如果您没有看过之前的教程,或者在阅读本文时发现自己已经记不起以前的一些内容建议您先查看往期的回顾,再继续本教程以确保效率

在上一节留下的诸多遗留问题,不知道诸位是否已经有了解决方案接下来我将带领大镓完善上期教程最后,我们经过测试留下的一系列问题

当玩家完成任务后,如果背包内没有药剂则下次和NPC对话,依然会提示“没有完荿任务”以及当玩家完成任务后,如果背包内还有药剂则下次和NPC对话时,任务会重复交付玩家依然会被扣除恢复药剂。这两个现象絀现的原因是在玩家完成任务之后任务NPC士兵的游戏事件中,执行的依然是事件页2的内容由于事件页2的事件指令是为了“判断玩家是否唍成任务”的,所以倘若玩家已经完成了任务就不需要再进行事件页2的判断。

要解决这个问题需要设置一个标记,在第一次交付任务の后我们可以在事件指令中进行一个开关操作,将开关0002的名称设置为“玩家已经完成任务”然后更改一下我们事件指令中的逻辑:

使鼡程序框图辅助事件指令的设计

事件指令执行内容如下: 当然,要解决上面的问题你也可以新建一个出现条件为“开关0002:玩家完成了任務 开启时”的事件页3,在事件页3中对玩家已经完成任务后的行为进行处理这里不再演示。

大家可能会觉得这样一个简单的任务就要用箌2个开关,那如口袋妖怪和最终幻想之类的RPG行业顶尖大作不得用成千上万个开关吗事实上,我们可以使用一种叫做独立开关的特殊开关

独立开关和开关一样,具有ON和OFF两个状态且作用也与一般开关无异。但相比于开关独立开关使用A、B、C、D而不是数字编号,而且独立开關是“独立在每个事件中的”也就是说,每一个事件都有A、B、C、D四个开关且不同事件中的独立开关不受其他事件中独立开关的影响。即使每个游戏事件都有A、B、C、D四个独立开关但你一定要记住,他们互相独立互不干扰。用编程方面的语言解释独立开关的作用域仅限于它所在的游戏事件。

所以我们可以对NPC士兵的游戏事件中的事件页1进行如下更改:

对事件页2进行如下更改:

更改后的事件页2注意左侧絀现条件处也要更改

至此,我们已经完成了对于这个单线型任务的更改你可以再次测试游戏。

下一个需要修复的问题是:在室内地图中玩家可以重复领取恢复药剂。桌子上药剂这个游戏事件不会消失这个很简单,我们只需要在室内地图中的药剂游戏事件中添加一个涳的事件页,并且使用独立开关进行“跳转”就可以了:

更改后的药剂事件事件页1

对药剂事件新增空白的事件页并设置出现条件

至此,仩期教程遗留的主要问题已经被解决了

每个游戏都有大量的游戏变量。这些变量用于储存游戏中的数据比如玩家生命值、某个道具的數量、玩家当前获得的成就数量、玩家的等级……

在RMVA中,操作变量的过程就需要为变量赋值或运算我们新建一个游戏事件,新建一个事件指令在事件指令窗口中找到变量操作命令,单击它弹出如下图所示的窗口:

在变量操作中,变量数量可以更改且以数值标号(从0001開始)。你可以操作单个变量也可以对多个变量批量赋值。变量在被创建时如果不赋值而直接进行算术运算,则默认初值为0.

比如我们淛作一个形象为老爷爷的游戏事件并且创建一个名称为0001:和老爷爷对话次数的变量,每和老爷爷对话一次这个变量就增加1。然后我们使用显示文字指令中的转义控制符每次输出我们和老爷爷对话的次数:

形象为老爷爷的游戏事件

在游戏中进行测试,则会发现这个变量烸次增长1.这就是我们想要的结果在更多情况下,我们还可能利用变量进行条件分支等操作比如,当我们和老爷爷对话十次之后第11次對话就会获得1金币的奖励,第12次对话会获得2金币奖励奖励数量依次累加……

为了达到如此效果,我们需要一个条件分支指令忘记的朋伖可以返回之前的教程查看。这里我直接上图:

可能有些复杂但毕竟已经不需要手写代码了,所以也没有多么复杂没有看懂的朋友可鉯看我来慢慢解释。

首先每次对话我都需要为对话次数变量0001累加常数1。如果你不是程序员那么你需要知道[变量0001:和老爷爷对话次数] += 1中,這个+=操作符号其实相当于[变量0001:和老爷爷对话次数] = [变量0001:和老爷爷对话次数] + 1

之后,我需要判断对话次数是否达到了10次这时就需要用到条件汾支指令,判断一下对话次数变量0001的大小

对话次数达到10次之后,我需要计算玩家获得的奖励这里使用了另外一个0002号变量,储存玩家应該获得的金币数量[变量0002:玩家应该获得的金币数量] = [变量0001:玩家和老爷爷对话数量] - 10。实际上这个计算等价于下面的两步计算因为我们的RMVA必须將操作的变量自身作为一个操作数,因此这个计算步骤没法一次完成

[变量0002:玩家应该获得的金币数量] = [变量0001:玩家和老爷爷对话数量]

完成之后,我们使用增减金钱的事件指令为玩家增加金钱增加的数量为变量0002的数值。

对话次数未满10次的情形

对话次数为12次的情形

对话12次一共获得3金币

测试无误后我们再进行新的一次变量操作。想象一下很多游戏里的情形:在柜子里找到了道具或者金钱但道具种类、金钱数量等嘟是随机的。这也需要变量的操作 一般来说,玩家和NPC对话时NPC的对话内容可能是随机的。我们只需要用一个随机数变量随机生成0~2三个数Φ的一种再通过条件分支判断生成的随机数是几,从而设置不同的对话内容

制作游戏的时候我们通常使用一个变量“游戏进程”来表礻游戏进度,根据游戏进程的数值判断玩家处于游戏中的进度从而控制游戏中事件的动作和表现。比如游戏进程为1的时候表示玩家刚刚創建角色进入游戏新手村的NPC都会给予玩家帮助;但游戏进程为3的时候表示玩家已经该离开新手村了,这时新手村的NPC都会对玩家的离开表礻不舍

总之,利用游戏开关和游戏变量配合多个事件页的运用,你就可以制作出更复杂的任务流程

复杂事件 - 更加复杂的任务流程制莋 为了完成本期教程的案例,您需要根据您的喜好绘制一张如下所示的森林地图如果您没有要求,也可以直接导入RMVA内置的范例地图

导叺范例地图中的森林场景

首先我们来明确一下本期教程我们需要达成的目标。我们要制作一个类似于口袋妖怪游戏开始不久时的场景 - 玩家想要离开民居走入森林中,但这时一位NPC(比如玩家的母亲)就会从屋子里冲出来挡在玩家面前说你还没有武器不能进森林blabla,然后玩家從母亲那里获得武器并装备好进入森林砍死几只史莱姆。

看起来是个很简单的情境接下来我们就动手实现这个剧情。

Step1 分析流程 对于一切没有头绪的问题我都建议仔细分析这个问题中可能出现的种种情况。我将这个情境的实现逻辑整理如下图:

Step2 进行接触检测 在游戏开发Φ有一个概念称为“碰撞检测”即检测两个游戏世界中具有物理刚体性质的物体是否发生了碰撞。

RMVA本身不具备物理引擎但依然需要处悝游戏中各个游戏事件的碰撞。我在这里引入了一个概念“接触检测”顾名思义,碰撞检测用以检测两个事件是否发生了碰撞那接触檢测就用来检测两个事件是否完全接触(即是否重合)。

RMVA提供了上述两种检测机制在游戏事件页的“触发条件”中可以选择。其中“与玩家接触”即该事件检测到自己和玩家完全接触后触发“按下确定键”即玩家在此事件前按下确定键后触发。一般而言与NPC的对话应当选擇后者而进行接触检测应当选择前者。

在玩家走入森林的必经之路上放置一个游戏事件,选择触发方式为“与玩家接触”

在玩家的必经之路上放置触发事件

在事件指令中,我们再次回想我们的目的:当玩家走进森林时一定会与此事件接触接触过后触发剧情。玩家的毋亲从木屋中出来挡在玩家面前。

Step3 编写事件指令 为了让玩家的母亲能够从木屋中“走出来”我们要先使用事件指令“打开房门”。

如哬打开房门呢请大家回忆本系列教程[3]中,我们在室外地图的房屋上快速新建特定事件“门扉”的时候曾经点开门扉事件查看了其事件指令。在快速新建该事件的时候系统自动生成了一系列事件指令,完成“开门--角色进门--转换场景”的一系列操作我们再次打开该事件,会发现负责处理“开门”这个动态效果的是一个“移动路线”指令

我们在之前的教程中说到过,门也是包含在角色行走图中的不同嘚是角色行走图里四个方向被替换为门从完全关闭到完全打开的四个样式。所以利用事件指令“移动路线”的命令可以让门事件“转向”从而达到门打开的效果。

所以负责开门的指令如下:

之后我们需要做的是让另一个NPC在本例中是玩家的母亲,从房门里走出来来到玩镓面前挡住玩家的去路。

让母亲从房门里出来需要事先隐藏母亲的形象,也就是让母亲“隐身”等房门打开时,再让母亲“出现”即鈳为了让母亲隐身,我们可以在母亲事件页中新建一个空白的、没有设置图像的事件页利用游戏开关进行事件页切换。

注意:如若多個事件页出现条件都达成则先执行事件页编号高的页中的指令。因此你需要将空白事件页设置为1,将含有母亲图像的事件页设置为2

泹是在RMVA中不允许将两个事件放置在同一个位置,也就是说我们没法将母亲事件和门事件放置在同一个方格里。所以我们只能事先将母亲倳件的位置放置在门上方一格:

母亲事件放置在门的上方

在玩家触发剧情之后先将母亲事件设置为“可以穿透”,然后设置母亲事件移動路线为“向下移动1次”如此设置可以保证母亲事件和门事件出现在了同一格中。此时就可以使用开关切换母亲事件的事件页让母亲從隐身变得可见。

使用开关切换事件页让母亲现身

接下来,让母亲走出房门走到角色面前。我们需要数一数母亲所在的位置走到角色媔前需要怎么行动然后将路线写入到“移动路线”指令中,将移动对象设置为“母亲” 然后我们添加“显示文字”指令,告知玩家还沒有武器;之后通过“增减武器”指令给玩家一把长剑我们需要让玩家装备好武器后再进入森林。

我们可以通过事件指令为玩家打开游戲菜单让玩家装备武器。但是倘若玩家没有装备武器就退出菜单我们还需要重复上述过程。因而我们需要用到循环指令

在循环指令Φ,一定要设置一个跳出循环的条件否则循环会一直执行。在本例中循环内部可以使用条件分支指令判断玩家是否装备好了武器,若沒有继续循环,否则跳出循环事件指令完成后如下图:

循环判断玩家的装备情况

当玩家装备好武器之后,我们就应该让玩家的母亲返囙到屋子里依然使用“移动路线”指令即可。当玩家的母亲走入房门事件的时候我们可以使用开关切换事件页,将母亲“隐身”然後使用指令让房门关闭。这里和前面的指令基本类似注意调整其中移动路线指令的顺序和方向即可。 这时你可以打开游戏测试一下如果你的主角无法装备剑类别武器,请你按下F9打开数据库对角色进行如下设置:

对数据库的主角进行更改,让主角能够装备剑类别武器

到此为止我们已经完成了玩家触发剧情的一系列事件指令经历这个短暂的剧情之后玩家就可以进入森林冒险了。但这时地图上还没有任何怪物我们需要给地图上添加敌人。

Step4 添加敌人 要添加敌人很简单我们只需要在地图树上选定这张森林小镇地图,按下空格或者右键->地图設置打开地图参数设置窗口:

在右侧的遇敌界面,我们可以双击空白部分添加敌人的队伍这里添加的队伍都是事先在数据库里默认设置好的。以后大家可以访问数据库进行修改添加自己想要制作的敌人和怪物队伍。 默认的出现范围是整张地图但我们的城镇明显是安铨的,因此我们可以选择“指定地图ID”来指定地图ID比如这里我们先在第一个框内设置地图ID为2,剩下两个框保持原定的0即可

点击确定即鈳完成设置。权重表示了该种类型的敌人队伍在指定区域出现的几率而平均遇敌步数表示玩家在地图上平均移动多少步会遭遇敌人,这吔是我们常说的“地雷遇敌”或者“暗雷遇敌”方式关于如何制作明雷敌人,我们会在后面介绍

那么回到地图ID上。什么是地图ID呢我們点击上方工具栏的区域编辑模式,就在事件编辑模式的旁边这时地图图块区域的图块变成了带着编号、颜色各异的方块:

区域编辑模式允许开发者为地图不同部分设置不同的ID编号,用以在不同的区域生成不同的怪物比如这时我们用编号2的放歌涂满小镇外部,我们刚刚設置的怪物队伍就会出现在区域标号为2的地区了

口袋妖怪中,也利用了类似的功能只在草丛、山洞、水面出现怪物,因此草丛区域、沝面区域、山洞区域带有不同的地图ID保证了火属性怪物不会出现在水里,也保证了怪物不会出现在小镇里等等


  • 怎么说呢你不得不否认它的大量用户基数保证了它每款游戏都会有人玩,既然如此为何还花大量的研发费用去自己开发?
    全部
  • 您好大都都是模仿或者抄。希望能帮箌你(如果你觉得有用的话,麻烦您按个“有用”小弟在此谢过)
    全部
  • 游戏没有一个,就连DNF也不是软件也是没有一个- -不是几乎,而昰全部没有全部都是搬过来改下东西人物背景之类的。
    全部
  • 木有哦 一直在山寨 从未被超越
    全部
  • 有很多比如御龙在天、轩辕传奇、斗战鉮等
    全部

我要回帖

 

随机推荐