设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 7445|回复: 20

[原创发布] [长文]RMXP-SDK分析,说说这个东西究竟是什么

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-22
帖子
81
发表于 2006-1-10 00:02:05 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
先把结尾摘到前面来,以免有人看不完。
这是个人见解,长文。看完的都是好样的,我先orz了。此文不是推广SDK,而是希望大家能了解SDK试图解决问题的思路,毕竟SDK究竟是好是坏,RMXP一个业余的游戏制作工具是否犯得着弄这么复杂,还是个待回答的问题。老外有时候严谨的可爱,呵呵。


关于使用了SDK导致原先的脚本不能用的问题,大家不用再问了。单独一个SDK不能帮助你改善你的游戏系统,SDK只能对标记“SDK兼容”的脚本负责,其他脚本不兼容是正常的。所以如果你没有使用“SDK兼容”脚本,那么不要在你的脚本中插入SDK。为什么呢?看完下文或许就明白了……

1、SDK究竟是什么?
前段时间,BB崽把一个叫做RMXP SDK的东西发到了论坛上面,我翻译了一下前面的代码书写约定,估计大部分人还是不明白究竟这个东西是要做什么。后来我到此文档的出处RMXP.net看了下发布原帖,然后阅读了一些脚本代码,大致明白了SDK公布的目的。

下面简单说一下,先贴一下老外原版说明:
Features:
The SDK is a rewrite of many of the default classes, a module with scripting tools and a set of scripting standards. The SDK is aimed at the combatable issues of many scripts fight over the same methods of the default classes. The SDK breaks up these methods into many other methods targeted directly at one function. The hope is that by breaking up these methods you limit the need to over write then whole method and can Alias just the area or function you want to add to or edit.

The SDK should NOT be edited and redistribute with out contacting a Member of the SDK Team. Edits to the SDK may cause massive capability errors and would defeat what we are trying to do here.

When you post a script you should state if it’s SDK compatible and what version it’s compatible with. A member of the SDK Team will review it and flag it to receive a SDK logo signifying that it is indeed SDK compatible. Questions regarding the SDK or making scripts SDK compatible should be directed to a SDK team Member.

这部分内容就解释了SDK究竟要来做什么。我的翻译文档里面有些地方也理解错了,导致有人说是程序员的洁癖。大致翻译一下这个内容,大概看完翻译内容应该会明白些东西:
SDK是对许多默认类的重写,也是一个带有脚本书写工具模块,并且定义了脚本书写规范。SDK目的是解决脚本间的冲突,这些冲突是因为使用了默认类里面相同的方法名称。所以,SDK将很多常用的方法分解成了许多部分,每部分针对一个单独的功能。对于小范围的功能更改而导致重写整个类的方法,这种行为会因为方法的分解而得到解决。

只有联系到SDK成员组的人员,你才可以修改或者重新发布SDK。因为修改往往导致兼容性问题,让我们现在的努力白费。

当你发布一个兼容SDK的脚本,某个SDK成员组人员会检查这个脚本,合格的话就会签发一个兼容性标志(也就是在论坛的脚本发布帖里面加个SDK图标)。

看完以上的文字,写过脚本的人就应该明白SDK的用途了。SDK的那堆文档里面,除了开头的名称为SDK的模块,其他的都是原版的脚本,没有经过内容上的更改。这些脚本只是把一些原来很长的方法拆开成一段一段的短小的方法。

也就是说,SDK是一个:靠人为强制规范化和手动审核来实现的全脚本兼容计划。发布一个脚本,如果希望兼容SDK,就需要按照SDK兼容要求来写,然后交给SDK成员组人员检查,他说没有问题了就签发SDK兼容标志。当然使用这些脚本的游戏里面必须首先插入SDK自身的脚本,也就是BB崽公布的那个RMXP SDK1.3.txt里面的东西。

2、SDK如何解决兼容性问题的?
比如,战斗的update方法很长,牵扯了各个过程。于是在SDK里面,这个方法被保持原样的拆开,比如拆成update_object,update_system等等有名称含义的段落。这样做的好处在于,人们需要加强或者重定义脚本的时候,只需要重写其中一小段就可以。那么,这样就可以最大限度的降低脚本的冲突。

原先官方RMXP已经自带了一套脚本,事实上后面大家书写的脚本都可以称为是“官方兼容”的,而由于官方不能做到人为审核,而且默认脚本里面有些方法实在是冗长,大家书写脚本的习惯又五花八门,所以这些“官方兼容”的脚本互相之间往往冲突。SDK希望解决这个问题,虽然个人觉得实在是个耗时耗力的工程,但是推广一下有助于RGSS规范化的发展,对Scripter的修养有好处。

那么“SDK兼容”的脚本之间就都可以无冲突使用了?这显然也是不可能的,毕竟功能重复的两个脚本肯定会冲突的。SDK只能避免通常情况的冲突,比如大家功能上相近,默认脚本里面的方法太冗长,导致代码段叠在一起,而SDK重定义了那些冗长的方法,拆开了代码段,可能就避免了这个问题。但是由于仍然存在冲突的可能性,所以才会有了SDK文档开头的那个模块。后面会详细说……

3、所谓的SDK里面带的脚本书写工具(Scripting tool)是什么?
SDK开头的那个名称为SDK的module,是用来解决一些公共问题的,应该也就是文档中提到的Scripting tool。
这里面有8个方法,前6个是关于“兼容SDK”的脚本如何被SDK控制。

首先是log方法,这个方法是向SDK的脚本列表,也就是一个数组里面添上要使用的脚本名称和作者信息等。这些信息会在其他方法上用到。
write则是将这个信息存到文件里面,print是以字符串的形式取出某个或者全部脚本信息。这些信息就是一个描述,不用看得太复杂,是兼容SDK的脚本作者自己写的。

然后是enable、disable、和state方法。这3个方法是一套的,控制一个被登记的兼容脚本有没有被启用。听起来SDK很神奇有这种功能,可以通过自己的方法来操作其他脚本。其实这还是一个人为的操作,因为每套“兼容SDK”的脚本都必须是这样格式:
SDK.log("Particle Engine", "Near Fantastica", 1, "02.01.06") #把自己的信息添到那个数组里面。
if SDK.state("Particle Engine") == true
#脚本内容
end

所以state变量如果为false,那么这段脚本就没有被执行到,也就失去功能。而SDK因为规定了这一点,所有正在使用的脚本都可以通过查看那个列表来找出,并且被控制。很巧妙的一个方法,但是仍然是很多人为的操作在里面,必须是脚本书写者遵循这样的写法才行,不是想象中的全自动的只要把SDK加上去其他的脚本就被控制了-_-b

最后有两个方法是比较有用的,前段时间翻译的时候没有领会,现在看过几个实例后多少理解了一些。因为自定义的一些脚本会遇到一些公共的问题,比如怎样和地图的事件产生关系,怎么控制地图事件,怎么获得输入的参数。所以这些方法定义了一套方便的公共途径:
text_box_input
这个方法是执行一段文本命令中的某一个指令。比如你可以定义一大堆指令,放在一个字符串里面,然后根据状态来选择执行。以前需要写一堆if或者switch结构,现在只需要这个方法和一个指令ID就可以。有人可能有这种需要吧~

event_comment_input(*args)
这个方法比较巧妙,从字面上理解就是,靠事件中的注释来获取信息。比如游戏中想控制某个事件,来触发自己自定义脚本里面的事情。再具体一点,比如挂了一个粒子系统,想给event01上加个火焰效果。以前的方式就是写脚本事件,在编辑器里面写RGSS。这样很不利于统一,以后改起来也不方便。脚本就应该写在RGSS里面~
那么现在,只需要给event01里面加注释事件,注释的内容是一个标志和你要的参数,比如"Particle System,Fire"。然后在Game的循环里面使用这个方法获取注释里面的内容,自己分析是不是应该开启粒子效果了。这样就隐藏了脚本实现的细节,事件编辑可以不需要写脚本。脚本处理的事情由Scripter在游戏循环内部完成。


以上内容可能很多人觉得烦琐,但是规范化有利于RGSS的发展。一个人的力量是有限的,只有众人的力量集合起来才能产生质的飞跃。而且好的游戏应该是多人合作的产物,术业有专攻,写脚本的细节应该被隐藏在另外的层面中,事件的应用应该更纯粹一些。

这是个人见解,长文。看完的都是好样的,我先orz了。此文不是推广SDK,而是希望大家能了解SDK试图解决问题的思路,毕竟SDK究竟是好是坏,RMXP一个业余的游戏制作工具是否犯得着弄这么复杂,还是个待回答的问题。老外有时候严谨的可爱,呵呵。
签名被屏蔽
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-22
帖子
81
 楼主| 发表于 2006-1-10 00:02:05 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
先把结尾摘到前面来,以免有人看不完。
这是个人见解,长文。看完的都是好样的,我先orz了。此文不是推广SDK,而是希望大家能了解SDK试图解决问题的思路,毕竟SDK究竟是好是坏,RMXP一个业余的游戏制作工具是否犯得着弄这么复杂,还是个待回答的问题。老外有时候严谨的可爱,呵呵。


关于使用了SDK导致原先的脚本不能用的问题,大家不用再问了。单独一个SDK不能帮助你改善你的游戏系统,SDK只能对标记“SDK兼容”的脚本负责,其他脚本不兼容是正常的。所以如果你没有使用“SDK兼容”脚本,那么不要在你的脚本中插入SDK。为什么呢?看完下文或许就明白了……

1、SDK究竟是什么?
前段时间,BB崽把一个叫做RMXP SDK的东西发到了论坛上面,我翻译了一下前面的代码书写约定,估计大部分人还是不明白究竟这个东西是要做什么。后来我到此文档的出处RMXP.net看了下发布原帖,然后阅读了一些脚本代码,大致明白了SDK公布的目的。

下面简单说一下,先贴一下老外原版说明:
Features:
The SDK is a rewrite of many of the default classes, a module with scripting tools and a set of scripting standards. The SDK is aimed at the combatable issues of many scripts fight over the same methods of the default classes. The SDK breaks up these methods into many other methods targeted directly at one function. The hope is that by breaking up these methods you limit the need to over write then whole method and can Alias just the area or function you want to add to or edit.

The SDK should NOT be edited and redistribute with out contacting a Member of the SDK Team. Edits to the SDK may cause massive capability errors and would defeat what we are trying to do here.

When you post a script you should state if it’s SDK compatible and what version it’s compatible with. A member of the SDK Team will review it and flag it to receive a SDK logo signifying that it is indeed SDK compatible. Questions regarding the SDK or making scripts SDK compatible should be directed to a SDK team Member.

这部分内容就解释了SDK究竟要来做什么。我的翻译文档里面有些地方也理解错了,导致有人说是程序员的洁癖。大致翻译一下这个内容,大概看完翻译内容应该会明白些东西:
SDK是对许多默认类的重写,也是一个带有脚本书写工具模块,并且定义了脚本书写规范。SDK目的是解决脚本间的冲突,这些冲突是因为使用了默认类里面相同的方法名称。所以,SDK将很多常用的方法分解成了许多部分,每部分针对一个单独的功能。对于小范围的功能更改而导致重写整个类的方法,这种行为会因为方法的分解而得到解决。

只有联系到SDK成员组的人员,你才可以修改或者重新发布SDK。因为修改往往导致兼容性问题,让我们现在的努力白费。

当你发布一个兼容SDK的脚本,某个SDK成员组人员会检查这个脚本,合格的话就会签发一个兼容性标志(也就是在论坛的脚本发布帖里面加个SDK图标)。

看完以上的文字,写过脚本的人就应该明白SDK的用途了。SDK的那堆文档里面,除了开头的名称为SDK的模块,其他的都是原版的脚本,没有经过内容上的更改。这些脚本只是把一些原来很长的方法拆开成一段一段的短小的方法。

也就是说,SDK是一个:靠人为强制规范化和手动审核来实现的全脚本兼容计划。发布一个脚本,如果希望兼容SDK,就需要按照SDK兼容要求来写,然后交给SDK成员组人员检查,他说没有问题了就签发SDK兼容标志。当然使用这些脚本的游戏里面必须首先插入SDK自身的脚本,也就是BB崽公布的那个RMXP SDK1.3.txt里面的东西。

2、SDK如何解决兼容性问题的?
比如,战斗的update方法很长,牵扯了各个过程。于是在SDK里面,这个方法被保持原样的拆开,比如拆成update_object,update_system等等有名称含义的段落。这样做的好处在于,人们需要加强或者重定义脚本的时候,只需要重写其中一小段就可以。那么,这样就可以最大限度的降低脚本的冲突。

原先官方RMXP已经自带了一套脚本,事实上后面大家书写的脚本都可以称为是“官方兼容”的,而由于官方不能做到人为审核,而且默认脚本里面有些方法实在是冗长,大家书写脚本的习惯又五花八门,所以这些“官方兼容”的脚本互相之间往往冲突。SDK希望解决这个问题,虽然个人觉得实在是个耗时耗力的工程,但是推广一下有助于RGSS规范化的发展,对Scripter的修养有好处。

那么“SDK兼容”的脚本之间就都可以无冲突使用了?这显然也是不可能的,毕竟功能重复的两个脚本肯定会冲突的。SDK只能避免通常情况的冲突,比如大家功能上相近,默认脚本里面的方法太冗长,导致代码段叠在一起,而SDK重定义了那些冗长的方法,拆开了代码段,可能就避免了这个问题。但是由于仍然存在冲突的可能性,所以才会有了SDK文档开头的那个模块。后面会详细说……

3、所谓的SDK里面带的脚本书写工具(Scripting tool)是什么?
SDK开头的那个名称为SDK的module,是用来解决一些公共问题的,应该也就是文档中提到的Scripting tool。
这里面有8个方法,前6个是关于“兼容SDK”的脚本如何被SDK控制。

首先是log方法,这个方法是向SDK的脚本列表,也就是一个数组里面添上要使用的脚本名称和作者信息等。这些信息会在其他方法上用到。
write则是将这个信息存到文件里面,print是以字符串的形式取出某个或者全部脚本信息。这些信息就是一个描述,不用看得太复杂,是兼容SDK的脚本作者自己写的。

然后是enable、disable、和state方法。这3个方法是一套的,控制一个被登记的兼容脚本有没有被启用。听起来SDK很神奇有这种功能,可以通过自己的方法来操作其他脚本。其实这还是一个人为的操作,因为每套“兼容SDK”的脚本都必须是这样格式:
SDK.log("Particle Engine", "Near Fantastica", 1, "02.01.06") #把自己的信息添到那个数组里面。
if SDK.state("Particle Engine") == true
#脚本内容
end

所以state变量如果为false,那么这段脚本就没有被执行到,也就失去功能。而SDK因为规定了这一点,所有正在使用的脚本都可以通过查看那个列表来找出,并且被控制。很巧妙的一个方法,但是仍然是很多人为的操作在里面,必须是脚本书写者遵循这样的写法才行,不是想象中的全自动的只要把SDK加上去其他的脚本就被控制了-_-b

最后有两个方法是比较有用的,前段时间翻译的时候没有领会,现在看过几个实例后多少理解了一些。因为自定义的一些脚本会遇到一些公共的问题,比如怎样和地图的事件产生关系,怎么控制地图事件,怎么获得输入的参数。所以这些方法定义了一套方便的公共途径:
text_box_input
这个方法是执行一段文本命令中的某一个指令。比如你可以定义一大堆指令,放在一个字符串里面,然后根据状态来选择执行。以前需要写一堆if或者switch结构,现在只需要这个方法和一个指令ID就可以。有人可能有这种需要吧~

event_comment_input(*args)
这个方法比较巧妙,从字面上理解就是,靠事件中的注释来获取信息。比如游戏中想控制某个事件,来触发自己自定义脚本里面的事情。再具体一点,比如挂了一个粒子系统,想给event01上加个火焰效果。以前的方式就是写脚本事件,在编辑器里面写RGSS。这样很不利于统一,以后改起来也不方便。脚本就应该写在RGSS里面~
那么现在,只需要给event01里面加注释事件,注释的内容是一个标志和你要的参数,比如"Particle System,Fire"。然后在Game的循环里面使用这个方法获取注释里面的内容,自己分析是不是应该开启粒子效果了。这样就隐藏了脚本实现的细节,事件编辑可以不需要写脚本。脚本处理的事情由Scripter在游戏循环内部完成。


以上内容可能很多人觉得烦琐,但是规范化有利于RGSS的发展。一个人的力量是有限的,只有众人的力量集合起来才能产生质的飞跃。而且好的游戏应该是多人合作的产物,术业有专攻,写脚本的细节应该被隐藏在另外的层面中,事件的应用应该更纯粹一些。

这是个人见解,长文。看完的都是好样的,我先orz了。此文不是推广SDK,而是希望大家能了解SDK试图解决问题的思路,毕竟SDK究竟是好是坏,RMXP一个业余的游戏制作工具是否犯得着弄这么复杂,还是个待回答的问题。老外有时候严谨的可爱,呵呵。
签名被屏蔽
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-22
帖子
81
 楼主| 发表于 2006-1-10 00:05:16 | 显示全部楼层
关于SDK本身,和我那个半吊子翻译文档,请在这个坛子里面自行翻找。或者到首页上面查看
http://rpg.blue/web/shownews.asp?id=341
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-22
帖子
1350

贵宾第2届TG大赛亚军第1届短篇游戏比赛季军

发表于 2006-1-10 00:25:48 | 显示全部楼层
厉害,这段时间都花在这个的研究上啊

一直觉得SDk那群人和bbschat的心态一样,对默认脚本的不规范看不顺眼,所以试图改之。如果每个人都有这种精神,对不合理之事皆挺身而出而非漠然视之,这世界将更好。
此情可待成追忆,只是当时已惘然。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-22
帖子
81
 楼主| 发表于 2006-1-10 00:31:19 | 显示全部楼层
其实,是马哲考试结束怨念文。因为找到原版发布说明所以顿悟了……

在fans向的群落中谈规范,有时候是很辛苦的。希望那帮SDK的开发组能在RMXP.net取得成功:)
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

贵宾

梦石
0
星屑
50
在线时间
261 小时
注册时间
2005-10-21
帖子
489

贵宾

发表于 2006-1-10 01:11:29 | 显示全部楼层
正好要讲这个事情~~~

现在RMXP.NET上面大部分人已经达成共同认识了,

以前的脚本纷纷推出了SDK版本

速度那个快~~~~~~

完全无视RGSS不发达国家

有一个问题可以肯定!比如向"夜夜"这种脚本运用大户,脚本间重复的部分肯定会很多,

如果使用的都是SDK规范化脚本,速度会变快

是忙于不同作者间脚本的整合还是重头规范化原有脚本了~~~ORZ!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

憤怒的冥王星人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2005-10-15
帖子
776
发表于 2006-1-10 01:42:24 | 显示全部楼层
看來這個很有用,先試驗一下.........{/gg}
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
260
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

发表于 2006-1-10 01:57:53 | 显示全部楼层
我们也应该达成这种共识才行!!
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-22
帖子
81
 楼主| 发表于 2006-1-10 02:03:16 | 显示全部楼层
斑竹有兴趣的可以尝试和RMXP.net那边SDK的开发组联系一下。
这个规范执行起来并不难~
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

憤怒的冥王星人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2005-10-15
帖子
776
发表于 2006-1-10 02:21:57 | 显示全部楼层
以下引用FantasyDR于2006-1-9 18:03:16的发言:

斑竹有兴趣的可以尝试和RMXP.net那边SDK的开发组联系一下。
这个规范执行起来并不难~

他們說甚麼語言?
签名被屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-3-29 10:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表