Project1

标题: 对MV数据库扩展的可行性讨论 [打印本页]

作者: chyj4747    时间: 2020-5-9 14:12
标题: 对MV数据库扩展的可行性讨论
本帖最后由 chyj4747 于 2020-5-9 16:27 编辑

MV上手对比其它引擎更简单,但相对的自由度也更低,自由度跟门槛大多数时候是成正比的,这也就导致了MV的数据库基本是限制死的,作者没法自由扩展数据库,添加更多的数据字段,比如要加一个自定义属性,又或者想要摒弃默认的职业系统,把属性直接添加给角色,再比如想要更改MV默认的曲线系统,用自定义公式或表格定义每一级的成长值

于是,各种针对单点或某几点的插件就诞生了,然而,这些插件普遍有个通病,就是基本只能把数据定义在配置或者备注里,插件配置只能写固定总量的数据,而备注嘛。。这个不能缩放的小框应该是所有使用插件的作者最蛋疼的地方了吧
当然应该也有用插件指令来添加的,即不限定数量,事件页也比备注框要大,然而当你要做修改的时候,你将面对一竖列的插件指令,你要辨识这些指令才能区分到底哪行对应哪个数据

所以为了不受这些限制和折磨,我自己是基本绕开MV的数据库,采用自建库的方式来添加数据的,此方法很明显会受限于作者的编程水平

那么如果有一个东西,跟MV数据库差不多,又可以让作者自由扩展字段,应该可以大大提高MV的能力吧?

简单在网上翻了翻似乎没有这方面的东西,不论是插件脚本还是扩展软件亦或是外挂,都没有,或者是早年有点苗头,然后就没音讯了,所以就想着能不能自己扩展一下

当然,自由度高了门槛也会增高,并且太过自由也会导致对现有的众多插件兼容性极差,所以扩展也要适度

或许有人会说,既然要自由,那改用别的引擎不就完了,没错,但对于不太会编程的作者来说,他们如何在那些引擎中用代码自建一套RPG系统出来?对这些作者来说,MV会比其它引擎更合适
[line]1[/line]
这是个长久的设想,也许会开坑,也许不会,至少现在我在忙我自己的游戏,肯定不会开坑,不过既然想到了,有兴趣的就先来讨论一下吧

MV对比其它引擎,更简单和易上手的原因是它有一套完整的RPG框架,虽然相对比较简单和传统,但的确是完善的,不过正是因为这套框架的原因才限制了MV的数据库,因为即便你添加了新字段MV也不知道如何去使用

所以扩展数据库的基本功能点如下:
1. 插件形式,仅我个人观点,毕竟比软件和外挂制作起来要方便一些
2. 有自己的UI界面,方便在开发过程中随时开启关闭(UI界面在我的任意图块动态化插件 https://rpg.blue/thread-481640-1-1.html 中已实现,不了解的可以点进去看第三张配置工具的图)
3. 自定义新字段,并定义数据类型和生成方式,比如是手写还是公式计算
4. 让作者能够获取新字段,比如用actor.1.xxx的形式?
5. 补充4,在事件中似乎不太方便写?并且都这么写的话事件页跟代码就比较像了,那是不是还要来个扩展事件页的工具……
6. 支持任意语言的字段名,比如中文字段名
7. 很大很大并能自由缩放并支持鼠标滚动的备注框
8. 对MV原字段的变动,能够兼容其它插件,比如改了HP的算法,那别的插件获取到的HP应该是修改之后的,而不是MV原本的

主要难点应该是跟别的插件的兼容性吧,目前我的初步想法是简单变更MV的变量和获取数值的函数,这样无论是直接使用变量还是通过获取函数,都会取到扩展数据

但如果别的插件写重载函数不调用父函数,呃。。似乎就没办法让这个插件用扩展数据了啊
另外如果想让新字段也应用到别的插件里,似乎不写代码去重载就毫无办法

所以不考虑开发成本的话,对MV数据库扩展是否可行呢?
如果兼容问题无法解决,那么在自定义数据和YEP之间,应该会果断选择YEP吧?
作者: 百里_飞柳    时间: 2020-5-9 16:14
你可以先从另一个方向想,自己创造一个新的GUI工具来读写默认的数据,同时稍微增加一些新的数据进去,这样既不妨碍默认的数据库,也能给扩展插件发挥空间
作者: chyj4747    时间: 2020-5-9 16:25
百里_飞柳 发表于 2020-5-9 16:14
你可以先从另一个方向想,自己创造一个新的GUI工具来读写默认的数据,同时稍微增加一些新的数据进去,这样 ...

完全不妨碍默认数据库的话,就没法更改默认设置了

比如新加第9属性,要作用到HP的计算里,这是属于基础计算,肯定要优先于任何其它东西,像是百分比加HP的技能的计算优先度肯定要在第9属性之后
作者: kinlinfox    时间: 2020-5-9 19:18
SRD哥曾经出过一款可以直接编辑数据库的插件,然而不幸的是这玩意炸了我的工程,还好我有备份不然真是无力回天。
楼主的这个设想感觉跟他这个有部分重叠,希望不要出现类似的戏剧性效果。
当然这跟SRD哥是个脑洞奇大管做不管修管杀不管埋的最自由插件作者也有关系……
作者: enghao_lim    时间: 2020-5-9 19:55
默默想起以前用RMXP的时候因为默认数据库的确有点不够支持,id上限,字数上限什么的很崩溃,后来用RMXP写了一个数据库编辑器,这做法相对简单很多,读取或储存有不会造成兼容性的问题。
作者: chyj4747    时间: 2020-5-9 21:56
前几天我看到有人问怎么添加新的属性才想到扩展数据库的,以前也经常见到类似的问题,我自己自建了数据库并且本来系统就打算重写,所以才没啥问题,对于一般作者来说,这些都不太不可能,但他们又有这方面需求
虽然MV入门简单,但入门之后却发现很难满足需求,就很难受
作者: chyj4747    时间: 2020-5-9 22:01
kinlinfox 发表于 2020-5-9 19:18
SRD哥曾经出过一款可以直接编辑数据库的插件,然而不幸的是这玩意炸了我的工程,还好我有备份不然真是无力 ...

所以这东西要从长计议,能兼容现有的插件是最好的,实在兼容不了,那也没办法,只能期望后续能够推广开,用的人多了,自然就会有基于这个扩展数据的插件出现

不过开坑都是以后的事,最多明年可以展望一下,今年我自己的游戏也才开了个头而已
现在就有空想下这个方案的可行性,为以后做个铺垫
作者: walf_man    时间: 2020-5-9 23:31
note字段的主要功能就是扩展字段吧
作者: chyj4747    时间: 2020-5-10 00:20
walf_man 发表于 2020-5-9 23:31
note字段的主要功能就是扩展字段吧

对,但是note框太小了,另外note不够直观,写了一堆的时候可读性就会比较差
作者: tseyik    时间: 2020-5-10 08:19
本帖最后由 tseyik 于 2020-5-10 08:27 编辑

其實正規為MV数据库加上扩展的方法是
工具>RPG Maker MV Tool
然後指定 Path所在
再加上 Path

链接:https://pan.baidu.com/s/1i0HhdHrY8FTOiPpZj2MOrg
提取码:cf3b




作者: chyj4747    时间: 2020-5-10 09:50
tseyik 发表于 2020-5-10 08:19
其實正規為MV数据库加上扩展的方法是
工具>RPG Maker MV Tool
然後指定 Path所在

这玩意儿有开发教程吗?主要是这工具打开后怎么获取当前项目,或者说怎么跟MV联动?
作者: 寂静的夜里    时间: 2020-5-10 11:24
我比较喜欢作者写插件然后附带个程序让人写好数据再直接粘贴到备注栏。
作者: Zeldashu    时间: 2020-5-10 14:54
非要说的话,现在大部分需求都有单独的插件可以完成。独立开发一个“扩展框架”来实现它们其实有点“杀鸡用牛刀”的意思?

且不说这样做对于作者的技术力要求相当高,而拥有这种技术力的作者根本不需要这种方法就能解决自己的需求。新手的话肯定也有需求,但是和上面说的一样,大部分时候有专门的针对性插件可以解决。

作者: chyj4747    时间: 2020-5-10 15:52
本帖最后由 chyj4747 于 2020-5-10 15:54 编辑
Zeldashu 发表于 2020-5-10 14:54
非要说的话,现在大部分需求都有单独的插件可以完成。独立开发一个“扩展框架”来实现它们其实有点“杀鸡用 ...


扩展数据库而已,仅仅只扩展自定义数据字段,还没达到扩展框架的地步

另外你说的技术力方面似乎跟我说的不在一个频道上,我说的仅仅只是让作者能够做到往MV数据库添加自己想要的数据,作者只需额外掌握在新的UI界面中创建编辑新字段,以及在项目(主要是事件)中如何获取和使用这些字段这两种操作即可

当然,如果兼容问题解决不了,那免不了会往扩展框架的方向走
作者: kinlinfox    时间: 2020-5-10 21:50
tseyik 发表于 2020-5-10 08:19
其實正規為MV数据库加上扩展的方法是
工具>RPG Maker MV Tool
然後指定 Path所在


感谢推荐扩展工具,虽然跟主题无关w
有了这个,不用每次点开插件管理器或者用VSCode开来关去查询插件命令了,编辑工程的时候直接点开放在旁边待机就行。
作者: 远去之情    时间: 2020-5-11 01:43
我觉得很有必要啊。也希望有那么个插件。
这样就不会限制死在攻击,防御,速度==这几个固定的数据上
比如加上些什么,武力,魅力,爱心==啥的,能让系统更丰富
当然,基本属性过多有时候也显得花里花俏
作者: saiya酱    时间: 2020-5-11 02:23

1.可行
2.自己写
作者: fux2    时间: 2020-5-11 06:19
很早以前就有人做过MVUCCU项目

https://rpg.blue/thread-479072-1-1.html
最近的动静在此9楼
作者: MCCF    时间: 2020-5-11 08:25
雷霆好像很早就给VA写过一个扩展的GUI程序(不过完全是用脚本定义内部逻辑)
数据库扩展么,找个神仙大佬就行(狗头)
作者: chyj4747    时间: 2020-5-11 09:03
fux2 发表于 2020-5-11 06:19
很早以前就有人做过MVUCCU项目

https://rpg.blue/thread-479072-1-1.html

强大是很强大,不过单就那个项目的帖子里的信息,似乎并没有解决插件兼容问题,如果不能解决,那么就相当于一个新版本的RM,插件几乎是一片空白,而这才是我想解决的主要问题
作者: SailCat    时间: 2020-5-11 10:29
从XP区过来表示就看看,MV有note不香吗,XP搞一个备注我搞了多久才搞出来

如果说note的框框不够大的话,考虑一下你写note的方式是不是过于冗长了
自己写插件的话,用json的写法写Note应该是最符合原生引擎的做法
作者: chyj4747    时间: 2020-5-11 14:10
SailCat 发表于 2020-5-11 10:29
从XP区过来表示就看看,MV有note不香吗,XP搞一个备注我搞了多久才搞出来

如果说note的框框不够大的话,考 ...

这跟写note的方式无关,写法再怎么简化,必须写的东西多了,还是会有一大堆东西要塞进去,更别说还有人在note里写代码了。。

像YEP那种还有动作序列的,想做个稍微复杂一点的动画,就有一堆note要写
还有类似网游的那种装备一堆随机属性的,这些都只能靠note来扩展
作者: SailCat    时间: 2020-5-11 20:36
chyj4747 发表于 2020-5-11 14:10
这跟写note的方式无关,写法再怎么简化,必须写的东西多了,还是会有一大堆东西要塞进去,更别说还有人在 ...

我知道你的意思,我说的json是这样:
YEP写YEP的,你写你的,比如你自己的扩展就统一使用chyj作为标识符,然后在Note里面
chyj: {
"randomAttribute": 1,
"complexAnimation": [
  1, 2, 3, 4, 5, 6],
};
这样你以后做的所有插件都只调用Note里面的chyj这一个标识符来获取额外信息,你可以直接用object.chyj["randomAttribute"]来找你想要的东西,和YEP,和别人,和你自己的别的插件也不会冲突。
MV的备注窗口不够宽,所以尽量不要单属性折行,但是长度应该还没什么限制吧……




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