Project1

标题: 如何实现《废都物语》式地图探索?(4月20日最终版) [打印本页]

作者: yuxuan1177    时间: 2019-3-17 21:44
标题: 如何实现《废都物语》式地图探索?(4月20日最终版)
本帖最后由 yuxuan1177 于 2019-4-20 18:27 编辑

4月20日已更新最终效果
……
新人正在做游戏,画师和脚本都就绪了。
准备用废都物语式的地图探索机制,但是《废都物语》之中的地图探索,是使用图块直接替换的命令,而在RMMV里面并不存在这种设计。
试过用全事件覆盖地图的方式,但平铺事件让地图变得很卡
也试过把地图拆成图片,但是角色图层在图片下面,而且图多也卡
请问,有没有简单便捷的实现方式呢?




……
第一次更新
……
感谢6Lwabcmcc大大和26Ltseyik大大的插件
目前已经半成功实现
方法:
利用MrTS_DarkRoomCovers.js将区域涂色成战争迷雾
利用TMRegionColor.js实现功能:区域替换(例如将区域1替换成区域2)
利用TMRegionPassable.js实现功能:区域通行限制
实现过程:
在插件MrTS_DarkRoomCovers.js中,将区域1设置为不涂色,区域2设置为迷雾,这样,区域1就是透明,而区域2则是黑色
利用TMRegionPassable.js,设置区域1为通行状态,区域2为不通行状态
利用TMRegionColor.js的指令,设置并行事件:唤出插件将区域2替换成区域1

不过有一个问题,就是区域替换之后,需要走一步黑色区域才会变化,效果有些不太理想……而且每一次变化都是临时的,所以必须要设置成并行事件……
但除此之外,功能倒是完全实现了
插件位置:
MrTS_DarkRoomCovers.js
https://github.com/Trivel/RMMV/blob/master/MrTS_DarkRoomCovers.js
TMRegionColor.js+TMRegionPassable.js
https://hikimoki.sakura.ne.jp/plugin/plugin_map.html



实现方法2:
在MrTS_DarkRoomCovers.js的基础上
利用RED_SetRegionID.js实现https://github.com/Hikitsune-Red ... /RED_SetRegionID.js
这个插件可以更改指定图块的区域,(X,Y,regionId),实现效果最直接,但需要一个个在地图上设置命令,小地图还好,大地图就需要一长串的指令,可以说是需要多少个图块,就需要多少个指令,当然,可以设置成区域,但也很繁琐……而且调整区域之后,同样需要走一步才能实现效果
这个方法的优点是,只需要设置一次,不需要用并行事件再度调整
问题都是一样
综合而言,方法1最简单
目前在想为啥需要走一步才会启动区域替换……

……
再度更新
……
现在已经完全实现效果
采用的是方法2调整
插件:
MrTS_DarkRoomCovers.js
TMRegionPassable.js
RED_SetRegionID.js

实现步骤:
1、使用脚本(非插件命令)$gameMap.setTileId(x,y),可以去除当前脚本的区域图块,变更为区域0,或者(X,Y,regID)调整为任意区域,不过这里实现效果用区域显示
2、在脚本下面加上一行插件命令RegionReveal [regID],从而将当前区域更变为透明的效果
3、在事件结束之后,当前区域图块立刻显示为透明,在行动了一步之后,$gameMap.setTileId(x,y)命令生效,将已经变成透明的区域变更为区域0
4、在地图出入口执行RegionReset命令,也就是将所有透明图块复位成迷雾,而之前的那些区域已经被修改为了区域0,所以并不会变成黑色
效果实现。
略有繁琐,但目前效果最好,而且没有多图层,只有单纯的几个命令,资源占用应该也不大,目前最完美效果
黑色区域为限制通行区域,看不到下层的地图,并且也无法通行,第二张图为触发了第一张的事件点之后开放,区域可以进入
第一张图比较暗,是因为顺便测试了一下手电筒效果


……
继续更新,失败了
如果前一张地图的大小和后一张一样,区域替换会被继承导致地图提前开放,无法解决……Orz
……

……
4月20日更新
……
找到最终解决方案了。
那就是设立一个并行事件。
并行事件设立RegionReveal 和changeRegion [指定区域] 0
这两个命令
然后在地图跳转口设立RegionReset命令
这样就解决
效果最好,就是害怕事件导致运行效率下降……
……
20日再度更新
……
区域替换对效率影响不大,现在可以安心使用了

这是实现临时清除迷雾效果

这是在特定地点使用道具挖开新路的效果

QQ图片20190420182148.png (91.63 KB, 下载次数: 110)

QQ图片20190420182148.png

作者: blue_ku    时间: 2019-3-18 01:22


方框:实际上是长得跟方框似的主角
闪烁的点:实际上是个“原地踏步”的点状生物,迈左脚时暗,迈右脚时亮,在人物下方,确定键触发
地图是一副画:是个狠人就把整张画分割成一格格小拼图,再重新拼起来;不是狠人就找找插件
作者: yuxuan1177    时间: 2019-3-18 02:16
blue_ku 发表于 2019-3-18 01:22
方框:实际上是长得跟方框似的主角
闪烁的点:实际上是个“原地踏步”的点状生物,迈左脚时暗,迈右脚时 ...


这个我都知道,我就是在把图拆分,但是拆分之后,如何实现战争迷雾的消去很麻烦,现在想到的方法是用图片遮罩,虽然可以实现,但是需要很多图片分别遮挡,而且还要用事件拦住迷雾的地图,让主角(方框)没办法去迷雾地区
现在就是想要一个简单的视线方法
不然的话,一个地图二十多张图很麻烦,而且小地图还好,大地图的话,图片布置布局很容易乱……
作者: 白嫩白嫩的    时间: 2019-3-18 13:49
我有个思路,虽然不能完全像废都那样探索,但也许能做出个大概吧【未实验,纯属拍脑门想出来的】

灯光系统不是可以让角色周围一圈可以看见,远处看不见吗,通过事件设置事件灯光,就像路灯一样排布在地图里面,事件灯光可以设置灯光覆盖范围有多大,事件灯光之间的距离根据需要调整,然后设置角色经过“路灯”的时候,路灯自动打开,可以利用mog插件或者yep插件设定距离路灯多少格开启该路灯,这样探索地图基本上能做出来吧。

但是也有个问题,探索完地图可能会有未被灯光覆盖的边角残留
作者: tseyik    时间: 2019-3-18 17:36
本帖最后由 tseyik 于 2019-3-18 17:47 编辑

有個近似的
雖沒战争迷雾
但可以使用true,false或$ gameSwitch值啟用/禁用每個路徑
狀態窗口使用您選擇的任何變量顯示每個節點的狀態(例如,推薦級別,箱子數量等)
每個節點盡可能使用事件,節點可以動畫。(用事件1/2頁,用不同動畫就可做出你要的効果
World Map Plugin 2.00b
https://forums.rpgmakerweb.com/i ... plugin-2-00b.56133/


允許可定制的,功能齊全的世界地圖系統。每個世界地圖位置都是一個“節點”,節點之間的路徑可以鎖定/解鎖(即發生滑坡,切斷兩個城鎮之間的通道),內置箭頭支持(可以啟用/禁用自定義圖片),這可以識別未鎖定路徑和鎖定路徑(鎖​​定路徑使用禁用箭頭)。附帶可自定義的窗口顯示節點狀態。


特徵
- 靈活的世界地圖系統(節點可能只有一個瓦片,可以菊花鏈連接多個世界地圖等)


- 每個節點盡可能使用事件,節點可以動畫。


- 每個節點可以有1-4個路徑通向其他節點。


- 無需手動尋路!這一切都由Shaz的Path Finder處理。


- 狀態窗口使用您選擇的任何變量顯示每個節點的狀態(例如,推薦級別,箱子數量等)


- 如果播放器距離太近,狀態窗口將移動。玩家應該無法進入狀態窗口。


- 遊戲變量搭配以記住上一張地圖(如果用戶決定取消世界地圖)。


- 可以使用true,false或$ gameSwitch值啟用/禁用每個路徑。


- 可選箭頭按鈕組支持(熱/冷/禁用)。


- 清理腳本,因此不會進行冗餘的交換機檢查。

作者: wabcmcc    时间: 2019-3-18 22:29
Mr. Trivel:MrTS_DarkRoomCovers.js
用區域ID顯示特定區域的圖塊,或隱藏特定區域的圖塊.
MrTS_DarkRoomCovers.js



作者: yuxuan1177    时间: 2019-3-19 14:48
本帖最后由 yuxuan1177 于 2019-3-19 14:51 编辑
wabcmcc 发表于 2019-3-18 22:29
Mr. Trivel:MrTS_DarkRoomCovers.js
用區域ID顯示特定區域的圖塊,或隱藏特定區域的圖塊.
[fold=MrTS_DarkRo ...


比起我原来的方法简单了很多,工作量下降了,感谢。
但现在有一个问题。
那就是在地图进行切换之后,上一张地图的区域显示是保留的。
换句话说,我在第一张第一设置区域2显示的话,到了第二张地图,区域二也是亮的,有没有办法能够将地图上的区域显示独立出来呢?


补充
想到了一个解决方案,那就是把事件全部做并行处理,每一个地图设置区域全暗,然后通过开关将并行事件设置为当前地图打开,这样就可以了

作者: tseyik    时间: 2019-3-19 15:20
本帖最后由 tseyik 于 2019-3-19 15:33 编辑

マップタイルのコピー1.07
不過有人説和YEP不和
https://tm.lucky-duet.com/viewtopic.php?t=338


作者: yuxuan1177    时间: 2019-3-19 15:42
tseyik 发表于 2019-3-19 15:20
マップタイルのコピー1.07
不過有人説和YEP不和
https://tm.lucky-duet.com/viewtopic.php?t=338


那个……并不是很懂这是怎么用的……
我是用手绘背景,然后用上面的方法作为遮罩
目前正在研究区域通行的设计,实现战争迷雾地区无法进入,迷雾消失就可以进去的方法

作者: if216    时间: 2019-3-19 16:24
本帖最后由 if216 于 2019-3-19 16:28 编辑

其实可以用事件做,每一个事件格对应一个相应的图块。然后通过切换事件开关,打开或关闭。
脚本这一块涉及地图,要做地图的大佬做估计会做。。。水大佬什么的
我做过一个演示,查我帖子,里面有个地图迷雾演示。跟这个不太像。
作者: yang1zhi    时间: 2019-3-19 16:30
一个格子一个精灵
上面再脯一层精灵做雾
作者: yuxuan1177    时间: 2019-3-19 17:35
if216 发表于 2019-3-19 16:24
其实可以用事件做,每一个事件格对应一个相应的图块。然后通过切换事件开关,打开或关闭。
脚本这一块涉及 ...

我第一版就是这么做的,但是随后发现这么做超麻烦。特别是涉及到有20多个区域的迷宫的时候,分支会变得超级麻烦
作者: yuxuan1177    时间: 2019-3-20 12:41
wabcmcc 发表于 2019-3-18 22:29
Mr. Trivel:MrTS_DarkRoomCovers.js
用區域ID顯示特定區域的圖塊,或隱藏特定區域的圖塊.
[fold=MrTS_DarkRo ...

规划了一下地图,预计设计12~15个大迷宫,255个区域的话,差不多够用
不过穿墙的问题不知道如何解决,虽然有现成的一些区域限制通行的脚本,但是在游戏中变更区域的通行度的脚本还是没有办法解决,请问,有什么简单的变更通行度的脚本么?
感谢>_<
作者: tseyik    时间: 2019-3-21 08:49
本帖最后由 tseyik 于 2019-3-21 08:51 编辑

有個插件可能有用
點擊一個事件即可直接執行它
DP_DetectiveMode.js

作者: wabcmcc    时间: 2019-3-21 13:09
规划了一下地图,预计设计

突然想起(口頭禪)瞎糊...通行度....
用多圖層(視差圖)插件,
上層半透明霧圖覆蓋整張圖,
再上一層,多少隱藏區域,分開用多少張圖遮蓋隱藏,
遮蓋圖層要綁定在地圖上,免玩家移動圖層跟隨移動.
通行度用區域ID插件.
作者: yuxuan1177    时间: 2019-3-22 13:32
wabcmcc 发表于 2019-3-21 13:09
突然想起(口頭禪)瞎糊...通行度....
用多圖層(視差圖)插件,
上層半透明霧圖覆蓋整張圖,

最早想过类似方案,但实现起来挺麻烦的
废都物语的RM2003能够直接替换上层和下层的地图元件,但是在RMMV里面却无法替换地图图块,虽说RMMV的确挺厉害,但这可以说是一个小小的退步吧……

作者: 在野月光族    时间: 2019-3-22 14:23
yuxuan1177 发表于 2019-3-22 13:32
最早想过类似方案,但实现起来挺麻烦的
废都物语的RM2003能够直接替换上层和下层的地图元件,但是在RMMV ...

MV也可以的。
作者: yuxuan1177    时间: 2019-3-22 15:35
在野月光族 发表于 2019-3-22 14:23
MV也可以的。

MV要换只能换一整个大的图块,单独的地图元件更换做不到,只能每一个图块单独用事件解决,而2003能批量更换地图元件,但是不需要更改整个大的图块,例如将1号元件置换为2号元件,MV是做不到的
作者: 在野月光族    时间: 2019-3-22 16:57

作者: yuxuan1177    时间: 2019-3-22 17:15
在野月光族 发表于 2019-3-22 16:57

咦,好像真可以(不是很懂脚本,但好像有点道理,勉强看懂)
但是多图层的话,通行度也能变化么?
是不是要配合多图层的脚本用?

作者: yuxuan1177    时间: 2019-3-22 23:03
在野月光族 发表于 2019-3-22 16:57

下层未探索的地图元件设置为不通行,上层已探索的地图元件设置为通行
下层地图元件用遮罩图块,上层用透明图块
地图探索之后就把下层置换成上层,是最简单的解决方案……
但在MV就没办法用事件实现,挺苦恼的
作者: yuxuan1177    时间: 2019-3-25 10:32
在野月光族 发表于 2019-3-22 16:57

尝试了一个周末都没有实现……QAQ

作者: 在野月光族    时间: 2019-3-26 00:43
类似这样的?

作者: yuxuan1177    时间: 2019-3-26 10:53
在野月光族 发表于 2019-3-26 00:43
类似这样的?

不是,黑色区域是不可过去的,而是通过事件让黑色区域主动开放其中一部分
光标只能在有地图的地方行动,黑色区域是被阻挡的,但是当触发探索事件(类似TRPG)之后,其中一部分小地图会解放,黑色区域会开放一块,然后继续探索,继续开放,直到地图探索完成

作者: yuxuan1177    时间: 2019-3-26 11:56
在野月光族 发表于 2019-3-26 00:43
类似这样的?

如图所示,一开始只有一个区域,然后触发红点的事件之后,开放第二个区域,触发绿点之后,就绪开放下一个区域
玩家的光标仅能够在白色区域活动,黑色区域是过不去的








作者: tseyik    时间: 2019-3-26 12:09
本帖最后由 tseyik 于 2019-3-26 17:06 编辑

我的方法
1:用一副圖當遠景圖(地圖)

2:用插件設定地圖通行/不通行
TMMoveEx.js移動機能拡張/TMRegionPassable.jsリージョン區域通行設定(前者簡化版,用這個就行)
https://hikimoki.sakura.ne.jp/plugin/plugin_map.html

3:用插件加上霧
CS_FogOfWar.js
https://github.com/cityshrimp/rmmv_fow

4:在通道設定事件,合条件可通行,不合条件不通行
也可用TMRegionColor.jsリージョンカラー更改區域号碼;控制通行設定
https://hikimoki.sakura.ne.jp/plugin/plugin_map.htm





CS_FogOfWar.js特征

    玩家视觉 - 玩家可以拥有视野(清除雾气)
    活动愿景 - 活动可以有远见。这些事件将被称为起源
    视觉范围 - 每个视野都有自己的视野范围。
    视觉类型 - 不同视觉形状 - 菱形,方形,圆形,方向性。每个原点都可以拥有自己的类型
    飞行视觉 - 原点可以有飞行视野(通过山脉,森林等)。
    视觉亮度 - 每个原点都有自己的视觉亮度
    地图隐藏 - 整个地图最初被涂黑,地图由原点显示
    严格对角线 - 可以配置原点是否可以看到过去两个对角放置的已阻挡的瓷砖
    目标 - 事件可以标记为目标。当它站在模糊的瓷砖上时,目标会消失
    阻止者 - 事件可以标记为阻止者。阻滞者可以阻止视力。
    RegionId的平铺类型:

    平原:总能看透
    森林:除非在山丘,山峰,了望塔或有远见的景象,否则无法透视
    希尔:除非在山上,山上,了望塔上,否则无法透视
    山/墙:除非有飞行视野,否则无法看透
    黑暗:总能看透,但永远不会透露
    被阻挡:除非有飞行视力,否则无法看透。永远不会透露。
    了望塔:总能看透。升高(可配置)

    多种配置方式:插件参数,地图/事件记事本,插件命令
作者: yuxuan1177    时间: 2019-3-28 16:05
tseyik 发表于 2019-3-26 12:09
我的方法
1:用一副圖當遠景圖(地圖)

这两天工作加班,等周五有空我尝试一下。感谢。
虽说RM在进步,但很多前代优良的特性都没有继承,挺可惜的。

作者: tseyik    时间: 2019-3-30 19:22
Galv's的MV Layer Graphics
可以實現樓主的希望







作者: 塞路休斯    时间: 2019-3-31 21:48
可以参考下拯救大魔王2,也是这个模式的,只是关于战争迷雾的描述,我不太记得这游戏有没有这个系统。
作者: yuxuan1177    时间: 2019-4-1 15:04
tseyik 发表于 2019-3-30 19:22
Galv's的MV Layer Graphics
可以實現樓主的希望

对,就是这种感觉,周末通晓加班,还没来得及做,不过顺便写了一点故事大纲2333
作者: yuxuan1177    时间: 2019-4-1 22:24
本帖最后由 yuxuan1177 于 2019-4-1 22:28 编辑
tseyik 发表于 2019-3-30 19:22
Galv's的MV Layer Graphics
可以實現樓主的希望


尝试了一下,这个插件依然是把遮罩当成是图片来处理的多图层
换句话说,一个地图就需要准备十几个遮罩图片……这种方法我最早尝试过,之前在RPGMVACE上也实现过类似的方式,但结论就是太过繁琐了……
目前看来,之前的区域涂色是最好的实现方式,区域一开始是涂黑的,然后通过脚本变成透明,只要实现涂黑区域无法通行,透明能够通行就能够解决问题了
当然,也有限制,就是这方式最多255个地图块,预定10~12个大迷宫,勉强够用
作者: yuxuan1177    时间: 2019-4-6 13:12
tseyik 发表于 2019-3-30 19:22
Galv's的MV Layer Graphics
可以實現樓主的希望

成功了!!!!!!!
方法:
利用MrTS_DarkRoomCovers.js将区域涂色成战争迷雾
利用TMRegionColor.js+TMRegionPassable.js实现功能:将区域1替换成区域2
实现过程:
在插件MrTS_DarkRoomCovers.js中,将区域1设置为不涂色,区域2设置为迷雾,这样,区域1就是透明,而区域2则是黑色
利用TMRegionColor.js+TMRegionPassable.js,设置区域1为通行状态,区域2为不通行状态,然后设置并行事件:唤出插件将区域2替换成区域1

不过有一个问题,就是区域替换之后,需要走一步黑色区域才会变化……而且每一次变化都是临时的,所以必须要设置成并行事件……
但除此之外,效果良好
插件位置:
MrTS_DarkRoomCovers.js
https://github.com/Trivel/RMMV/blob/master/MrTS_DarkRoomCovers.js
TMRegionColor.js+TMRegionPassable.js
https://hikimoki.sakura.ne.jp/plugin/plugin_map.html
作者: yuxuan1177    时间: 2019-4-6 13:31
本帖最后由 yuxuan1177 于 2019-4-6 13:39 编辑
tseyik 发表于 2019-3-30 19:22
Galv's的MV Layer Graphics
可以實現樓主的希望


实现方法2:
利用RED_SetRegionID.js实现
这个插件可以更改指定图块的区域,(X,Y,regionId),实现效果最直接,但需要一个个在地图上设置命令,小地图还好,大地图就需要一长串的指令,可以说是需要多少个图块,就需要多少个指令,当然,可以设置成区域,但也很繁琐……
而且需要走一步才能实现的问题同样……
作者: yuxuan1177    时间: 2019-4-6 13:40
wabcmcc 发表于 2019-3-18 22:29
Mr. Trivel:MrTS_DarkRoomCovers.js
用區域ID顯示特定區域的圖塊,或隱藏特定區域的圖塊.
[fold=MrTS_DarkRo ...

感谢,利用本插件已经实现了基础的功能,现在的问题是,在更改区域的时候,需要走一步才会更改,具体的情况如主楼新调整的那样
作者: yuxuan1177    时间: 2019-4-6 14:54
tseyik 发表于 2019-3-26 12:09
我的方法
1:用一副圖當遠景圖(地圖)

如主楼所示,我已经基本成功解决了
过两天有时间,做一点效果出来
作者: yuxuan1177    时间: 2019-4-20 04:44
tseyik 发表于 2019-3-30 19:22
Galv's的MV Layer Graphics
可以實現樓主的希望

刚刚尝试了之前的方法,又出了新问题,结果依然无法实现
这个效果可真难啊……
作者: yuxuan1177    时间: 2019-4-20 12:38
找到新的解决方案了,现在先这样用用看吧
作者: yuxuan1177    时间: 2019-4-20 18:28
差不多搞定了,系统框架这边没啥大问题了
现在在制作脚本中~
作者: valhalla9386    时间: 2019-4-21 04:04
唉,全事件会卡的吗
我17年只做过小小的例子还以为能行
就是用的事件的方法
可以用不规则的大图当显示的图像
开关切换后先变成步行动画逐渐消失在切换到透明图像
因为是大图,一个事件能堵一大片不规则区域

通行的问题也很好解决
放几块透明事件(优先级与人物相同)堵路
开关切换后变优先级设为在人物下方就可以通过了
作者: tseyik    时间: 2019-4-21 10:45
本帖最后由 tseyik 于 2019-4-21 10:52 编辑

我做的範例(基本不會卡)
Project11.zip (867.22 KB, 下载次数: 124)
R251可通行,R252不可通行(TMRegionPassable.js)

背景圖+其他圖(透視0指定)MV Layer Graphics

只用了Layer Graphics和TMRegion两個(共3個)

指定圖C002(透視255指定)

R252未改不能通行

15,10由252改成25l





作者: yuxuan1177    时间: 2019-4-27 16:06
tseyik 发表于 2019-4-21 10:45
我做的範例(基本不會卡)

R251可通行,R252不可通行(TMRegionPassable.js)

这种方式是用特定的地方作为阻隔,而且需要细分地图,实际制作的话,会有些麻烦
而我要的是下图这种方式
我之前在帖子最下面更新了一下方案,感觉还不错,目前在尝试用那种方案

QQ图片20190427160434.png (71.35 KB, 下载次数: 112)

QQ图片20190427160434.png

作者: 白嫩白嫩的    时间: 2019-4-27 20:11
感谢楼主解决问题后回来分享心得




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