用户:
JessieCr024查看:43 回复:51 评论:43 创建时间:2020-04-17T21:17:31
这里还是你们的杰西,大概半年没在社区了
再次为大家带来RPG游戏教程
社区水的不要不要,太*龙门粗口*缺心眼了,希望心有余而力不足的小fo伴得到帮♂助
先贴个视频勾起大家的兴♂趣
这是杰西的RPG游戏框架,链接https://shequ.codemao.cn/work/342喵199

因为运行量极大,虽然有些聊胜于无的优化但是依然对配置要求有点高。
RPG游戏的一些其他信息咱也不多说了,大家想知道有如下途径
那么杰西将从很多小的方面来讲这个东西怎么整
警告:由于以下内容为杰西即兴创作,可能但不一定含有怪梗、个人梗、嘤嘤嘤、cece、哲学,情谨慎阅读
另外讲的顺序很迷
下面是正片
首先RPG游戏的元素多种多样。一个游戏的基础是能动。通常吧,RPG游戏都有角色这里跑那里跑的
RPG的两种移动
杰西个人把RPG游戏的移动归类为两种:主♂动和被动。主动型的指角色移动,场景固定。通过坐标的变化来表现移动。被动型的指场景全部移动,角色位置固定,通过相对运动来表现角色的移动。那么这两种移动方式有什么区别呢?
首先主动型的,因为一个角色满地图跑,很简单很容易做,运算量啥的很小,但是很喵的是这种方式做出来场景不能太大,一般用在游戏大厅这种场景(通天塔大厅为例)。用这种方式做的地图动感不是很强,玩着没那么爽♂
然后被动型的话,就像头顶视频里那样。难做一点,运算量比较大,需要用到一丢丢函数知识。用这种方法做的游戏地图是要多大有多大(卡喵为止),适用于游戏主世界大地图什么的。这样做出来的游戏画面动感交互感比较强,(不得不说很吃优化)
(以上是一种被动型的基础实现方法,图中的x和y变量仅用于储存数据,可以不加上去)
RPG游戏的背包系统
RPG游戏可不能缺一个背包系统。包括在社区火到糊的UT等游戏的原作,都会有一个背包系统。这个背包系统实在难做。最好理解的方法是用逻辑积木怼。但是如果用普通的逻辑积木运算堆叠,不仅导致运算量奇大,很容易出bug,加个物品就要改一堆积木,而且还会让你彻夜难眠,满脑子都是“如果……否则”。如果你打算弄一个装很多东西的背包,那不花个半天根本做不到。尤其当你背包里的东西能使用并且有一些效果时,光用逻辑模块给人的感觉就像大脑皮层插满积木然后里面塞满数据。
(上图是杰西的一个没发布的失败的模板作品,就是用这种HP方法)
这个时候就得学聪明点,不要光靠变量和逻辑积木。这时候,就要让我们的大宝贝儿——列表出来了。
一个物品,通常有许多数据。例如我们有A、B、C三个东西放在背包里。A吃了回体力,B吃了回水分,C吃了回血。我们首先做一个字典列表,为这些物品编号后整整齐齐的摆进去,然后请个专业团队载歌载舞的……咳咳(做出一副严肃的样子),就像我们学字母时,用字母卡片会有26张找到你头疼,但是用字母表只需要一张而且一目了然(一个字母表才28个字母,一个大型的RPG游戏的物品肯定还更多)。接下来再创建一个或几个数据列表。这些数据列表可以包含很多信息。例如在“回血字典”中,A、B、C对应的值分别为0、0、100。使用物品的时候用函数把这些列表都过一遍,一来方便调用,同时也方便修改,其实和数据库一样(drop警告)。
逻辑积木的能力是有极限的!除非……使用列表!逻辑积木!我不要你啦!!!(错乱
这里是核心知识了。其他的界面啊什么的随意就好
(手好累qwq
RPG游戏的战斗系统
接下来嘛,还是继续讲些枯燥无味但是略有p用的东西。虽然不是每个游戏都要打怪,但大多数还是有这种系统的。像社区里现在很火的UT就是这样。战斗系统往往扩展性很强,可以做出一些让人耳目一新的东西。但是在做之前,我们首先要了解它。
战斗系统分为两种,一般分为普通战斗系统和ABS战斗系统。事实上这两种区别是根据RM圈子的说法定义的。这两种系统有什么区别呢?普通战斗系统通常被认为是战斗在其他界面进行的,模式多样的,例如我们的UT,战斗框架也就那样,只是一些敌人的变化。这种战斗模块是可以随意扩展的,例如杰西做的框架里战斗模块是近似UT同人作的。ABS事实上很好实现,所以我们先来说一下普通战斗系统。
普通战斗系统通常会独立制作一个战斗场景,在主世界遇敌时,把敌人数据和玩家数据加载好,然后进行系统设定的操作。需要注意的是,这些模块之间的交互必须很细心的弄,例如遇敌时,主世界的事件都必须停止。否则玩家和敌人战斗的如火如荼时,后台主世界的敌人凑过来,问题就大了
下面先讲一下杰西自己做的战斗系统
杰西做的战斗系统非常简单,融合了许多UT元素,事实上相当于套了个同人。在这里我们只需要把主世界的进程停止,数据导入,打完以后数据导出就好。这个说实话真的不难,主要是很注重细节
不管做什么一定要注意细节,这是为什么杰西能做出来这个作品的原因(自大
最近看了一下社区很多首页的作品,有bug那些通常都是一些细节不做好。做的时候一定要给自己留debug通道,不然会被bug按在地上☀。例如刚才说到的,从主世界切入战斗系统。如果你刚才看了杰西的作品,可能会发现,若两个敌人同时冲向你,当一个敌人碰到你并处发战斗动画时,另一个敌人会停下来(礼让)。和第一位敌人的战斗结束后,后面的敌人才会追过来。其实只是用一些很简单的变量来达到。假设有一个默认为0的变量a,触发战斗时,我们把a设置为1,那么在其他敌人的源码上加一个逻辑积木,例如敌人移动的源码是“重复执行x坐标增加1”,我们在他头上套一个“如果a=0”,那么很轻松的就能实现。有一些游戏暂停其实也是这样达成。非常简单实用,大家在日常撸代码时一定要多利用这种小技巧。
(下次再讲讲编程中的小技巧?咕咕咕!)
ABS系统基本不用脑,不讲了(懒),最简单是设定一个攻击范围,在范围内点击敌人进行攻击。
好像大概讲完要点了(?)
那么RPG游戏的扩展能力是十分的强,大家可以加上好多元素,例如最基础的剧情,还有一些小游戏,像UT里的关卡那样。
(希望这篇帖子能让那些想出大作但是心有余而力不足的人看到啊wwwww)
那么杰西给大家带来的教程先告一段落,有一些补充内容以后再说吧(咕咕咕)