从0开始:开发自己的游戏[3]


我是Lem0,自学倡导者,执迷于“不务正业”,被批评“旁门左道”。我注册并使用简书,希望能够记录一些我记不住的事情,或者与大家一起共享知识,共同学习。

往期回顾(点击链接访问):
「从0开始:开发自己的游戏[0]」
「从0开始:开发自己的游戏[1]」
「从0开始:开发自己的游戏[2]」

在上一期教程中,我带领大家学习游戏项目文件夹下各子目录文件夹的用途以及素材规格。在本期教程中,我会开始讲解游戏剧情的制作,从本期开始的后续几期教程内容将贯穿游戏线性流程、游戏中的主线任务、支线任务等等游戏进程的制作。所以不妨请喜欢本系列教程的朋友们关注我,避免错过更新动态

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

3、学习造人 - 添加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进行对话了:

游戏中的测试效果

至此为止我们就已经学习了游戏事件的创建。我们将在下几期教程讲解复杂游戏逻辑的实现。也就是事件指令中的【流程控制】部分和【条件控制】部分。

事件指令

大家也可以随意测试其他的事件指令。比如我留一个小作业:创建一个NPC富豪,每次和富豪对话一次会获得100金币。创建另一个NPC乞丐,每和乞丐对话一次可以选择是否施舍乞丐,是的话则乞丐会提升主角1级。(关于如何选择施舍乞丐与否,你可以在事件指令中【信息】=>【显示选项】中完成设置)。

希望大家能够多多实践其他的事件指令,我重点只讲【流程控制】部分和【条件控制】部分。由于我工作繁忙,我尽量不涉及其他过于简单的内容。如果大家有任何疑问务必让我知道,我会尽快进行解答。如果您喜欢这一系列教程,或者对游戏制作产生了兴趣,请您关注我避免错过更新的教程。有任何疑问或者批评,烦请私信联系。

<a>素材公开计划:</a>如果本系列教程反响较好,我会逐步公开我制作游戏时用到的免费非商业授权素材,也可以推荐一些支持商业授权的素材网站(日本网站居多,需要VPN)。

<a>未来游戏计划:</a>请点击这个链接访问关于【未来游戏计划】的内容。

由于近期工作繁忙,教程的写作过程可能过于仓促,有任何没有看懂的地方或者疑问,请务必让我知道,我会尽量进行回复。如果您愿意支持我不断进行开源和创作,也可以稍稍打赏我一下,Lemo在这里谢过大家的关注,希望各位能够在这一系列小小的教程结束之后,完成自己儿时开发游戏的梦想。


我是Lem0,自学倡导者,执迷于“不务正业”,被批评“旁门左道”。与大家分享英语/编程/高效自学的所思所想。

已授权“版权印”进行版权保护。获取授权

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,423评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,147评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,019评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,443评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,535评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,798评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,941评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,704评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,152评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,494评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,629评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,295评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,901评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,978评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,333评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,499评论 2 348

推荐阅读更多精彩内容

  • 我是Lem0,自学倡导者,执迷于“不务正业”,被批评“旁门左道”。我注册并使用简书,希望能够记录一些我记不住的事情...
    Lem0阅读 2,046评论 3 18
  • 我是Lem0,自学倡导者,执迷于“不务正业”,被批评“旁门左道”。我注册并使用简书,希望能够记录一些我记不住的事情...
    Lem0阅读 1,781评论 1 8
  • 引言 游戏开发分为客户端和服务端,服务端和客户端的逻辑很相似,但是服务端更多在于数值计算和校验,客户端更多在于面向...
    Geons阅读 976评论 0 8
  • 我是Lem0,自学倡导者,执迷于“不务正业”,被批评“旁门左道”。我注册并使用简书,希望能够记录一些我记不住的事情...
    Lem0阅读 4,910评论 9 83
  • 你永远无法衡量最爱你的人有多爱你!当你说:我吃药的时候看到一个新闻!没有一丝停顿的说:你吃什么药?即使是试探也让...
    luck兔阅读 291评论 0 0