Project1

标题: 用 MV 写的塔防模式 [打印本页]

作者: 芯☆淡茹水    时间: 2019-8-26 09:46
标题: 用 MV 写的塔防模式
   
   昨年就开始设想的 塔防模式 ,在今年年初才开始动手,利用空余时间,到现在差不多基本完成了。

  这个塔防模式,不影响默认的游戏模式。需要进行塔防时,只需要 一个进行塔防的地图ID ,一个用于记录塔防
敌人队伍的公共事件ID 就行了。 事件输入插件命令,代入这两个参数,即可进行塔防游戏。
  塔防游戏完毕后,自动回到塔防游戏前角色所在的地图和位置。


以下为塔防系统的一些概况:

===========================================================================================
〓 角色 〓
===========================================================================================
1,角色各种属性数据,皆是 数据库-角色
-------------------------------------------------------------------------------------------
2,角色用于塔防的动作行走图(八方向),共四种(静止,行走,攻击,死亡)。

   静止动态图  => 角色备注
   行走动态图  => 角色备注<塔防模式暂未用到>
   攻击动态图  => 角色备注
   死亡动态图  => 角色备注<塔防模式暂未用到>

   <每种动作图的帧数,可以不相同>
-------------------------------------------------------------------------------------------
3,角色对应动作声效(无备注则无声效)。

   攻击声效 => 角色备注
   挨打声效 => 角色备注
   死亡声效 => 角色备注
-------------------------------------------------------------------------------------------
4,角色占地格数 => 角色备注  <角色在地图上所占的格数>
-------------------------------------------------------------------------------------------
5,角色攻击频率 => 设置的角色某项属性  <属性值越接近该属性的最大值,攻击频率越快>
===========================================================================================
〓 敌人 〓
===========================================================================================
1,敌人各种属性数据,皆是 数据库-敌人

   <可用命令调节塔防模式时敌人的血量,经验,金钱,爆率等百分比。>
-------------------------------------------------------------------------------------------
1,敌人用于塔防的动作行走图(八方向),共四种(静止,行走,攻击,死亡)。

   静止动态图  => 敌人备注
   行走动态图  => 敌人备注
   攻击动态图  => 敌人备注<塔防模式暂未用到>
   死亡动态图  => 敌人备注

   <每种动作图的帧数,可以不相同>
-------------------------------------------------------------------------------------------
2,敌人对应动作声效(无备注则无声效)。

   攻击声效 => 敌人备注
   挨打声效 => 敌人备注
   死亡声效 => 敌人备注
-------------------------------------------------------------------------------------------
3,敌人行走速度(频率)=> 敌人备注

   <像素移动,每步所走距离相同,行走速度由动作频率决定>
-------------------------------------------------------------------------------------------
4,敌人抗打击能力 => 敌人备注

   <敌人受伤会短暂的受伤动作而停止行走,抗打击能力可备注其受伤的血量百分比高于某个值才>
   <显示受伤的动作,百分比备注为 100 时,免疫受伤动作>
===========================================================================================
〓 技能 〓
===========================================================================================
1,技能的各项数据,皆是 数据库-技能
-------------------------------------------------------------------------------------------
2,技能在塔防时的 子弹 图像 => 技能备注

   <只有备注了该项的技能,才能用于塔防模式>
   <子弹 图像可以是 1帧静态,也可以是 多帧动态>
-------------------------------------------------------------------------------------------
3,技能攻击范围 => 技能备注
  
   <备注的数值是地图格数,实际像素圆范围半径 = 格数 x 图块尺寸>
-------------------------------------------------------------------------------------------
4,技能爆炸伤害范围 => 技能备注
   
   <备注的数值是地图格数,实际像素圆范围半径 = 格数 x 图块尺寸>
-------------------------------------------------------------------------------------------
5,技能的攻击频率 => 技能备注

   <该频率值,加上使用这个技能的角色攻击频率,为最终的攻击频率值>
-------------------------------------------------------------------------------------------
6,技能的使用者动画 => 技能备注
===========================================================================================
〓 公共事件 〓
===========================================================================================
1,一个公共事件,备注整场塔防的所以敌人队伍信息。
-------------------------------------------------------------------------------------------
2,公共事件内,一条 注释 为一波敌人队伍。并且可备注 等待时间,投放敌人间隔时间,是否随机
   投放敌人(一波有两种及以上类型的敌人) 等。
===========================================================================================
〓 地图 〓
===========================================================================================
1,用于塔防的地图,需要铺设四种 区域ID (出怪点,怪行进路线,怪行进终点,能够放置角色的点)。
-------------------------------------------------------------------------------------------
2,为节省效率,怪的寻路算法比较简单,仅支持 单条 行进路线。若铺设有岔路,怪可能会进入岔道而
   停止行进。
===========================================================================================
〓 脚本 〓
===========================================================================================
1,塔防单位(角色,敌人)都是基于 Sprite_Base 所写,其基础数据为 Game_Actor 或 Game_Enemy 。
-------------------------------------------------------------------------------------------
2,技能 子弹 也是基于 Sprite_Base 所写,内在数据包括 攻击者,技能ID,被攻击者 。
-------------------------------------------------------------------------------------------
3,窗口是基于 Window_Base 所写的 UI图片窗口,以及一些 Sprite 按钮。
-------------------------------------------------------------------------------------------
4,一些游戏对象,地图精灵和场景,进行了一些必要的修改。
   添加了一个专门用于 塔防模式 逻辑操控的游戏实例对象类。
   <本想写操控静态类,但考虑到中途储存,写成实例对象类>
===========================================================================================


以下为预览视频链接:
https://www.bilibili.com/video/av65397789

https://www.bilibili.com/video/av65399059


作者: 灯笼菜刀王    时间: 2019-8-26 10:54
万事俱备, 只欠有人来移植舟游了
作者: 汪汪    时间: 2019-8-26 11:13
超级强大!!
作者: mulier    时间: 2019-8-26 11:22
拜服!万分期待!
作者: walf_man    时间: 2019-8-26 12:06
这才是真正的塔防啊,哈哈哈,惭愧惭愧
作者: 小凡哥    时间: 2019-8-26 14:46
不会脚本的表示很难受,做不出想做的东西
作者: guoxiaomi    时间: 2019-8-26 15:15
暑假抽了几天研究了一下想写一个XP上的塔防小游戏,做着就发现控制行进路线有点头疼,于是放弃了……正好拿这个参考一下
作者: 新手0123    时间: 2019-8-26 16:23
如果能看塔的血量感觉 会更好
作者: 芯☆淡茹水    时间: 2019-8-26 16:39
guoxiaomi 发表于 2019-8-26 15:15
暑假抽了几天研究了一下想写一个XP上的塔防小游戏,做着就发现控制行进路线有点头疼,于是放弃了……正好拿 ...

呃~,  这个是不公布出来的。只是用于自己找人合作或转让授权。
依照本人性格,如果要发布,我不会做成八方向,也不会用UI图片做窗口。
要发布的话就直接在MV区发帖子了,不会在这儿水一贴的。

至于寻路,那个就是非常简单的了。地图上 怪的起点,终点,路线,以及角色可放置区域都是用 区域ID 铺设的。


怪走到一格,就只侦测 周围四格,排除走过的坐标,剩下的有 路线区域ID 的坐标,就是下一步行进目标,非常简单。
MV有自带的自寻路,但不敢用,距离稍微远点就很消耗效率,更不用说怪多的情况。
用那种简单的方法,怪再多也不用怕效率消耗太大。包括角色在地图上的放置也是,只需判断坐标的 区域ID ,省略了 地图的
是否通行 判断,也可以节省很多的效率。

至于XP,只有地形标志,虽然通用性强,但灵活性就比较差了。

作者: guoxiaomi    时间: 2019-8-26 17:01
本帖最后由 guoxiaomi 于 2019-8-26 17:13 编辑
芯☆淡茹水 发表于 2019-8-26 16:39
呃~,  这个是不公布出来的。只是用于自己找人合作或转让授权。
依照本人性格,如果要发布,我不会做成八 ...


OK,设计思路也是有参考价值的。

我的寻路做法是,让怪物以事件的形式出现,设置路线为“前进一步”循环执行。然后hook掉 checkout_event_trigger ,这个方法会在事件碰到其他的事件时触发,在这个方法里修改怪物事件的移动方向。

XP里事件在移动后会检测自己面前的事件,这个其实是RM的蛋疼功能之一,但是用在塔防里,却还合适。

怪物是穿透的,在直线路径的边缘放一个事件进行判断,怪物发现前面是一个叫做“LEFT”的事件,就会 turn_left,然后回到默认的“前进一步”继续执行,这样就可以让怪物按照一定的路线前进了
作者: 暴走杀神    时间: 2019-8-27 00:53
舟游党表示怎样让敌人攻击我方成员
作者: Im剑侠客    时间: 2019-8-27 01:19
比较好奇楼主的子弹移动轨迹,正常来说,3D的素材好像没有多少这方面的顾虑,而2D的子弹图像如何做到在跟随敌人的同时,也令自身发生360角度的偏转呢?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1