公众号原文

使用MV制作最简单的游戏:我要做游戏(8)

上一篇中,鱼虾重新开坑了一个DEMO,规划了新的游戏内容,让整个制作流程更为简化。今天就一鼓作气地为大家带来事件和变量的设置。

 

什么是事件,在MV中,事件就是玩家操控角色在游戏中面对物品、NPC、敌人产生的互动。简而言之,就是内容!而事件编辑器,在前面7章的文章里,其实一直都有用到。

使用MV制作最简单的游戏:我要做游戏(8)

使用MV制作最简单的游戏:我要做游戏(8)

使用MV制作最简单的游戏:我要做游戏(8)

基本上可以解决所有初级问题的事件指令

使用MV制作最简单的游戏:我要做游戏(8)

事件编辑器主要用来设定条件和交互对象

 

在设计一个功能性质的事件之前,先在事件库里找有没有能直达目的的指令。具体到这个DEMO,鱼虾需要事件达到什么效果呢。

首先,需要几个如我要做游戏(7)中的事件,使玩家选择行动后,提升相应属性;

其次,需要一个事件,来为游戏流程定时;

最后,要添加一些对话,令玩家知道自己要做什么、怎么做,也就是一头一尾。

 

鱼虾是这么设计的,部族有3名老师,分别可以提升【近战】【射击】和【魔法】3个攻击属性,而生命、气力和体质,这需要玩家给部落“打工”,才能提升。而玩家每一次养成行动,都将消耗“半天”概念单位的时间,也就是说1天仅能进行2次养成操作。


那就先从有关核心系统的养成事件开始做起。鱼虾以我要做游戏(7)中的事件为基础,进行了扩展。

使用MV制作最简单的游戏:我要做游戏(8)

 

可以看到,除了增添淡入淡出、音效等表现效果,最大的变化是加入了【变量操作】,为什么呢?因为使用变量就可以做出随机数的效果啊!在古老的我要做游戏(1)我要做游戏(2)中,鱼虾最早开始的就是变量,这里也就不做赘述了。

完成了对变量的操作后,可以在显示文章里使用\V[n]的命令,来获得变量的值。

使用MV制作最简单的游戏:我要做游戏(8)

使用MV制作最简单的游戏:我要做游戏(8)

 

完成了这一步,可以说主体事件就被搞定了一大半——才怪!

接下来的老师事件设置,鱼虾决定偷懒以课表的形式来做。玩家来到课表前,可以选择老师,并触发养成事件,根据当前能力值来判定是提升数值还是学习新技能。注意,这里鱼虾将事件融合到一个场景,将选项融合到一个事件,其实是需要一定(也不一定)的逻辑,如果大家不确定事件和条件分歧会不会出BUG,最简单的方法就是把事件拆分。具体到这个DEMO,就是玩家进入地图A找老师A学习,进入地图B找老师B学习,这样做会多做几张地图,也会增加条件开关,但扩展性和容错率要高一些。

先在角色列表中加入三位老师的名字,这样做是预留了未来游戏扩展的空间,比如队友、好感度什么的。同时,做事件选项时就可以直接以\N[n]的格式来调用角色名了。

使用MV制作最简单的游戏:我要做游戏(8)

使用MV制作最简单的游戏:我要做游戏(8)

使用MV制作最简单的游戏:我要做游戏(8)


鱼虾再梳理一下老师的逻辑,选择老师后,如果角色对应数值达到某值,老师就会传授新技能,如果没有达到这个阶段,就会继续提升属性。如果写成伪代码,结构应该是这样的:

如果选择老师1

  如果 能力值>=10

    那么 学会无敌炉石

  如果  能力值 =<10

    那么 能力值+5

如果选择老师2

  如果 能力值>=10

    那么 学会落地瞬移

  如果  能力值 =<10

    那么 能力值+5

 

但在MV中,单独的条件分歧并不能满足鱼虾的需求,还需要结合条件开关,或者加入第二层分歧。这里鱼虾就加入了技能习得与否的判定,否则会出现了高数值阶段无法触发的情况(想想是为什么?)。所以在动手之前,一定要想清楚逻辑结构如何用MV的事件编辑器表达。

使用MV制作最简单的游戏:我要做游戏(8)

使用MV制作最简单的游戏:我要做游戏(8)

使用MV制作最简单的游戏:我要做游戏(8)

最终的双重分歧写法,如果技能多起来这会疯掉的


依样画葫芦填充好3名老师的教学内容。下面就要用到事件界的多面手——公共事件——来做一个假时间系统。时间系统的目的有二,控制游戏流程和限制角色养成次数。这里就要设计总天数【DAY】和上下午【TIME】两个变量。

玩家进行任何养成,在事件结束后都会令【TIME】+1,当【TIME】=2时,将无法进行后续养成,必须休息,才能将【TIME】归0,这时【DAY】会+1。这个的制作相当简单,只需要在事件结尾增添含变量操作的公共事件即可。但是光改变了变量,玩家也没有办法查看对吧,所以还要添加一个显示途径。鱼虾在地图中做了一个时钟,运用条件分歧来现实时间段。

使用MV制作最简单的游戏:我要做游戏(8)

使用MV制作最简单的游戏:我要做游戏(8)


事实上,真正优秀的表现方式应该是在窗口角落写一个计时器窗口,但这涉及到插件的编写,鱼虾并不擅长,而且也不会在这个DEMO中使用任何添加插件。

扯远了,说回这个假时间系统,大家应该看得出,其实完全都不用公共事件就可以制作。这里鱼虾使用公共事件,除了强行解说功能和方便调用外,还因为可以利用【并行处理】的公共事件,结合【定时】(不是倒数定时器哟)与条件分析来模拟“真·时间系统”。

从流程上来说,将定时器设置等待60帧——即一秒——后,操作变量【秒钟】+1,当【秒钟】=60时,【分钟】+1,【秒钟】归0。再在游戏开始后打开一个计时用开关,就大功告成。

使用MV制作最简单的游戏:我要做游戏(8)

使用MV制作最简单的游戏:我要做游戏(8)

 

不过这个效果本DEMO用不上。


到了这里,鱼虾已经完成了主要系统的设计,接下来应该着手内容的填充了。

由于定位是一个简单的的DEMO,内容鱼虾十分随意地写了写,就不单独拿来说了。

下一篇,鱼虾会讲到,如果不想使用插件,也不会JavaScript,真的萌新可以对源码JS做些什么。


一个假作业:在这个DEMO中,鱼虾如何用技能结合公共事件做出消耗金币的“乾坤一掷”效果呢?

提示:需要改公式哟。

使用MV制作最简单的游戏:我要做游戏(8)


NS快出RPG MAKER NS!!!

使用MV制作最简单的游戏:我要做游戏(8)

有生之年系列

动作游戏制作大师&战棋游戏制作大师

相关文章: