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

Project1

 找回密码
 注册会员
搜索
查看: 2485|回复: 7
打印 上一主题 下一主题

[讨论] 对RMXP GameBattler类的一些看法

[复制链接]

Lv3.寻梦者

梦石
2
星屑
1156
在线时间
340 小时
注册时间
2008-2-2
帖子
275

R考场第七期银奖

跳转到指定楼层
1
发表于 2012-11-16 19:02:46 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 唐门草楹 于 2012-11-24 11:49 编辑

       这个学期开了“面向对象”课程,再回过头来看RMXP的脚本,感觉瞬间升华了。

    首先我搞懂了一直以来弄不清楚的地方,RMXP脚本里没有数据类型,访问区分符也很奇葩。按照我的理解,第一个字符以小写英文字母或下划线开头代表局部变量,只在块内有效;第一个字符以$开头代表程序的全局变量,在整个工程中有效;第一个字符以@开头代表实例变量也就是类的成员变量,访问权限要在类头部定义:attr_reader代表只读,attr_writer代表只写,attr_accessor代表可读可写。不知道出于什么目的,这款编译器要对读写进行区分;也不知道为什么不分数据类型。

    再回过头来看默认脚本的GameBattler类,觉得框架构建的些许不合理。

    首先,原始的脚本中GameActor类与Game_Battler类中的很多成员变量是只读的,因此如果在默认脚本的基础上,我们不能通过脚本直接修改战斗者的一些属性。
   
    第二,数据库写死了很多东西,所以如果要进行大规模的自定义修改的话,$data_actors 与 $data_enemies这两个全局变量很不好用。例如我要在脚本中把二号队员的HP改成100,$data_actors[2].hp = 100这种写法根本不行。推测是内部的结构没有开放hp的修改权限。

    第三, Game_Actor类与Game_Enemy类的虽然都继承自Game_Batller类,但是两者的数据库结构差异实在很大。这给“召唤兽”、队友变敌人之类的算法造成了很大的障碍。Game_Enemy中没有level,没有final_level,没有exp,也没有任何武器等实例变量。而Game_Actor则没有actions变量与生成行动(make_action)函数等等。角色与敌人两套路线的方法实在不利于某些方面的扩展。

    因此在这个周末,我打算重新编写一下Game_Battler、Game_Actor以及Game_Enermy类,最好是希望把Game_Actor与Game_Enemy类合并,这样敌人也可以转换成角色,角色也可以转换成敌人,很适合做佣兵系列或者召唤兽系列的游戏。
我亲自录制的橙光教学视频
如何用橙光做一款养成游戏:https://www.bilibili.com/video/BV1Js41197pr
蛇梯游戏/大富翁的制作:https://www.bilibili.com/video/BV1yW411a7sv
股票系统:https://www.bilibili.com/video/BV1DW41187BW
龙雏子女系统 的实现方法:https://www.bilibili.com/video/BV1gE411J7Ns
换装捏脸系统:https://www.bilibili.com/video/BV1Yc411h7ds
背包-合成系统:https://www.bilibili.com/video/BV1qg4y187C2

Lv3.寻梦者

梦石
2
星屑
1156
在线时间
340 小时
注册时间
2008-2-2
帖子
275

R考场第七期银奖

2
 楼主| 发表于 2012-11-21 10:42:51 | 显示全部楼层
电子最终龙 发表于 2012-11-21 10:36
動這些就意味著要重寫RPG下面的數據結構,就意味著RM自帶的數據庫編輯器不能用了。 ...

用是能用,只要我们不全依赖$game_actor 和 $game_enemy 就好。比如我还可以载入数据库里的怪物属性信息,但是我如果想将它转化成一个我方角色,还需要给它定义经验、等级之类的属性。不过如果是把角色变成敌人相应来说要简单很多,因为actor的很多属性都包含了enemy的属性,只有一个make_action函数改起来比较麻烦。正好我也要把智能战斗的AI算法重写一遍。
我亲自录制的橙光教学视频
如何用橙光做一款养成游戏:https://www.bilibili.com/video/BV1Js41197pr
蛇梯游戏/大富翁的制作:https://www.bilibili.com/video/BV1yW411a7sv
股票系统:https://www.bilibili.com/video/BV1DW41187BW
龙雏子女系统 的实现方法:https://www.bilibili.com/video/BV1gE411J7Ns
换装捏脸系统:https://www.bilibili.com/video/BV1Yc411h7ds
背包-合成系统:https://www.bilibili.com/video/BV1qg4y187C2
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
2
星屑
1156
在线时间
340 小时
注册时间
2008-2-2
帖子
275

R考场第七期银奖

3
 楼主| 发表于 2012-11-24 11:49:57 | 显示全部楼层
zhangbanxian 发表于 2012-11-23 16:02
- -b其实,ruby没有属 性这一说,要访问实例变量只有通过方法,attr accessor只是相当于def a
@a
end的

谢谢指点,不过,armor是怎么乱入的?你怎么会从actor联想到armor?

点评

哟被发现了吗 不过那的确是笔误才写错了两个字母而已啊  发表于 2012-11-24 18:08
我会说我绝对没看到“本帖最后由 唐门草楹 于 2012-11-24 11:49 编辑”,也没有发现lz在卖萌什么的是绝对不可能的吗?XD  发表于 2012-11-24 14:35
我亲自录制的橙光教学视频
如何用橙光做一款养成游戏:https://www.bilibili.com/video/BV1Js41197pr
蛇梯游戏/大富翁的制作:https://www.bilibili.com/video/BV1yW411a7sv
股票系统:https://www.bilibili.com/video/BV1DW41187BW
龙雏子女系统 的实现方法:https://www.bilibili.com/video/BV1gE411J7Ns
换装捏脸系统:https://www.bilibili.com/video/BV1Yc411h7ds
背包-合成系统:https://www.bilibili.com/video/BV1qg4y187C2
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-17 06:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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