Project1

标题: [Ruby Game Maker]计划(5.19更新:界面预览版) [打印本页]

作者: 沙漠点灰    时间: 2014-4-2 18:42
标题: [Ruby Game Maker]计划(5.19更新:界面预览版)
本帖最后由 沙漠点灰 于 2014-5-19 23:43 编辑

--- 5.19更新
更新界面预览,大家试试吧!现在只能编辑脚本玩玩
RubyGM_0.0.1.c2.1.1.preview
(版本号真长...)

现在调试功能还不完全,有对CRuby很了解的,请联系一下本人,谢谢


--- 5.15更新
刚好一个月了,像模像样的更新一下帖子
最近一直在做编辑器,编辑器使用的是MRuby,也是Ruby原作者松本行弘先生
开的新坑,几月前更新到了1.0.0版,也有2~3岁了
目前Windows版本比CRuby速度慢上几倍,库也是不完全,连File, Marshal都没有。但是适合用于嵌入式脚本。

现在概述一下一般情况。
如前所述,UI解决方案是采用Duilib,使用XML文件布局窗口,

数据编辑器则是少数由复数个XML文件描述的,主窗口与子窗口,子窗口分别描述各自的功能。
这样非常方便,能在不修改程序的情况下,仅仅修改XML文件与脚本文件就实现对数据库编辑的扩充








好的,现在正式开始:

XXX.XML  -----DUILIB---->  解释为窗口

xml控件元素中userdata里面填写     事件="脚本"   比如click="p 'sad'"
当然XML中引号等符号需要转换,使用XML编辑器就能方便点


用户触发事件-----DULIB---> 窗口事件处理

比如在<Window_DatabaseEditor::OnClick>中调用了
[pre lang="C" line="1"]else if (data.GetLength()){

as.jpg (106.89 KB, 下载次数: 25)

as.jpg

@F22419%ZJOB18~$UW1JT59.jpg (33 KB, 下载次数: 24)

@F22419%ZJOB18~$UW1JT59.jpg

未标题-1.jpg (438.09 KB, 下载次数: 28)

未标题-1.jpg

8YGJOR~H5)G~Z0JOT3%SX07.jpg (44.97 KB, 下载次数: 27)

8YGJOR~H5)G~Z0JOT3%SX07.jpg

%R%F]MEPLCYZIHMBUB(4N%I.jpg (62.82 KB, 下载次数: 32)

%R%F]MEPLCYZIHMBUB(4N%I.jpg

51504.jpg (215.27 KB, 下载次数: 34)

51504.jpg

51506.jpg (150.49 KB, 下载次数: 34)

51506.jpg

作者: asperta    时间: 2014-4-2 20:41
很强大,视频转起来了。。。期待后续
作者: fux2    时间: 2014-4-2 22:09
真的是……好久不见了,另外时间写错了,今年是2014
作者: eve592370698    时间: 2014-4-3 09:21
标题: 不知道是不是接别人的坑,总之
本帖最后由 eve592370698 于 2014-4-3 10:57 编辑

辛苦了。比超已经开发了一年的橙光,不知道这个好用不,就怕崩溃啊。
建议参考《狼来了RPG》。
@沙漠点灰  纯自己写代码很辛苦吧?平时时间充裕吗?
以前有过一些前辈做类似的工具结果基本上可以说坑了。
没看到事件编辑界面不好下结论,只能观望。
作者: satgo1546    时间: 2014-4-8 19:39
好厉害 Σ( ° △ °|||)︴(←这是什么表情
于是点了个赞然后在这里抒发感情而已
作者: 6rp    时间: 2014-4-11 17:22
XP 系统被边缘化了,默默离开。
作者: 沙漠点灰    时间: 2014-4-15 23:12
4.15更新本贴: 界面草草图预览

@eve592370698  你要的界面来了{:2_254:}
作者: eve592370698    时间: 2014-4-15 23:33
沙漠点灰 发表于 2014-4-15 23:12
4.15更新本贴: 界面草草图预览

@eve592370698  你要的界面来了

真不容易啊!希望稳定性别让大家失望。
作者: 沙漠点灰    时间: 2014-5-15 12:10
本帖最后由 沙漠点灰 于 2014-5-15 12:11 编辑

5.15更新.
大召唤术:
@eve592370698
@fux2
@Sion
作者: fux2    时间: 2014-5-17 00:54
最近才知道已经有人在做类似工作了(自由扩充数据库及排版的编辑器)。
@IamI 大概你们能扯两句。
作者: IamI    时间: 2014-5-17 09:33
本帖最后由 IamI 于 2014-5-17 09:52 编辑
fux2 发表于 2014-5-17 00:54
最近才知道已经有人在做类似工作了(自由扩充数据库及排版的编辑器)。
@IamI 大概你们能扯两句。  ...


一个月前的消息现在才来找我怎么想都是你的错啦(误)。

应该说,这个轮子造了好多年了……现在我却连让它滚都很难滚起来。
主体采用C#编写,编辑器开放编辑,采用IronRuby。
只写数据库界面,其他基本不考虑,不过数据库的工作量基本上和写一整个RM有的一比(趴)
Marshal 数年前就已经完备,布局引擎基本完好,只不过出于个人原因一直提不快库的开发速度。
近期和事件搏斗中。


为了解决库数量不足的问题不得已采用的策略。
基本已经可用。


全部可用,顺带一提下面那个防具配置差点让我想死,XP是没有双刀的,它的配置已经这么长:
RUBY 代码复制
  1. Builder.Add(:lazy_choose , {:actual => :armor2_id ,  :label => 0, :textbook => Help.Get_Default_Text , :choice => { 0 => "(无)" },
  2.                                         :source => Proc.new do |target, parent, control|
  3.                                                 Data["armor"][Data["class"][parent["@class_id"]]["@armor_set"]].select {|target| target["@kind"].Value == 1}
  4.                                         end })

有双刀的VA就是这个样子了
RUBY 代码复制
  1. def search_weapon(control)
  2.                         actor_class = Data["class"][control.Container.Container.Value["@class_id"]]
  3.                         actor_features = control.Container.Container.Value["@features"]
  4.                         class_features = actor_class["@features"]
  5.                         type = []
  6.                         banish = false
  7.                         actor_features.each do |feature|
  8.                                 type.push(feature["@data_id"]) if feature["@code"].Value == 51
  9.                                 banish = true if feature["@code"].Value == 54 && feature["@data_id"] == 0
  10.                         end
  11.                         class_features.each do |feature|
  12.                                 type.push(feature["@data_id"]) if feature["@code"].Value == 51
  13.                                 banish = true if feature["@code"].Value == 54 && feature["@data_id"] == 0
  14.                         end
  15.                         return [] if banish
  16.                         return Data["weapon"].select {|weapon| type.include?(weapon["@wtype_id"]) }
  17.                 end
  18.                 def search_armor(control, id)
  19.                         actor_class = Data["class"][control.Container.Container.Value["@class_id"]]
  20.                         actor_features = control.Container.Container.Value["@features"]
  21.                         class_features = actor_class["@features"]
  22.                         type = []
  23.                         banish = false
  24.                         actor_features.each do |feature|
  25.                                 type.push(feature["@data_id"]) if feature["@code"].Value == 52
  26.                                 banish = true if feature["@code"].Value == 54 && feature["@data_id"] == id
  27.                         end
  28.                         class_features.each do |feature|
  29.                                 type.push(feature["@data_id"]) if feature["@code"].Value == 52
  30.                                 banish = true if feature["@code"].Value == 54 && feature["@data_id"] == id
  31.                         end
  32.                         return [] if banish
  33.                         return Data["armor"].select {|weapon| type.include?(weapon["@atype_id"]) && weapon["@etype_id"].Value == id }
  34.                 end
  35.                 def isDouble(control)
  36.                         actor_class = Data["class"][control.Container.Container.Value["@class_id"]]
  37.                         actor_features = control.Container.Container.Value["@features"]
  38.                         class_features = actor_class["@features"]
  39.                         for feature in class_features
  40.                                 return true if feature["@code"].Value == 55
  41.                         end
  42.                         for feature in actor_features
  43.                                 return true if feature["@code"].Value == 55
  44.                         end
  45.                         false
  46.                 end



写了超过2000行配置代码了,依然看不到头。

我在使用XML描述的编辑器界面上浪费了两年时间。编辑器逻辑用Ruby描述尚显的吃力,用XML描述基本达不到目标要求。
如果您有兴趣,请造访这里
这个是最后一个使用XML描述的版本。已经废弃。

作者: Sion    时间: 2014-5-17 13:25
有什么需要帮忙的就告诉我吧,反正写点 ruby 代码还是可以的;
c++ 代码写得少,但也能写,不过只会基础的像数组、内存这类的操作。
那些代码我不想看了,看起来太头痛 - -b
作者: satgo1546    时间: 2014-5-18 20:07
为什么我越看这个界面越恶心……
作者: 沙漠点灰    时间: 2014-5-19 23:28
5.19更新

@satgo1546 界面恶心么,{:2_258:},不过也是多亏XML布局,可以自行修改的{:2_275:}
作者: 晴兰    时间: 2014-6-12 15:55
提示: 作者被禁止或删除 内容自动屏蔽




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