查看: 3158|回复: 5

[已经过期] 请教一下Game_Interpreter类里的纤程的逻辑

[复制链接]
梦石
0
星屑
255
在线时间
9 小时
注册时间
2012-9-2
回帖
1
发表于 2012-9-8 02:27:45 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 糊状物 于 2012-9-8 16:31 编辑

最近几天才接触rpg maker和ruby,秉持有新用新的原则,就选了rpg maker vx ace。
看代码第一个想搞清楚rmva是如何处理事件的,于是乎定位到Game_Interpreter这个类上。
在看Game_Interpreter类的时候有些事情想确认一下。
以下假设Game_Interpreter类的实例均名为@interpreter
1、其他类中是通过@interpreter.update恢复挂起的@interpreter内的fiber;
2、游戏中会同时存在复数个@interpreter这样的实例;
3、一个@interpreter实例在一个游戏周期内(一帧?),仅会被调用一次update函数。(这个我特别不确定)
4、综合上述第三点,@interpreter内等待10帧是通过执行10次Fiber.yield实现的,但在处理完这个等待10帧的事件后会遇到run函数紧随的Fiber.yield,所以实际上是等待了10+1=11帧?

另外rmva是在脚本哪个部分中实现60帧==1秒的?
原始脚本中其他类的update、refresh是不是也是在一个周期内仅被调用一次?
梦石
0
星屑
50
在线时间
210 小时
注册时间
2012-7-19
回帖
207
发表于 2012-9-8 07:46:17 来自手机 | 显示全部楼层
呃……首先说一句楼主真强大
然后是60帧==1秒,这个应该是调用的系统函数即原本的自带库……
然后是等待问题……几乎每帧的执行都可以视为一瞬间完成  也就是等待结束立即执行……至于更新的频率应该比程式本身运行速度慢……
以上是一家之言…………可以借鉴不可全信
回复

使用道具 举报

梦石
0
星屑
255
在线时间
9 小时
注册时间
2012-9-2
回帖
1
 楼主| 发表于 2012-9-8 12:23:38 | 显示全部楼层
本帖最后由 糊状物 于 2012-9-8 16:32 编辑
ORANGI 发表于 2012-9-8 07:46
呃……首先说一句楼主真强大
然后是60帧==1秒,这个应该是调用的系统函数即原本的自带库……
然后是等待问 ...


恩,我也认为是调用系统函数完成的,不过调用系统函数这个步骤也理应是在原始脚本的某个地方或某几个地方中调用。
我想知道的就是在哪里调用了,毕竟原始脚本很多,没人指点一个人看的话很痛苦啊,ruby我亦不熟识。


这一项问题没了,看了一下帮助手册应该是Graphics.update控制的

点评

在main前插入Graphics.frame_rate = 60就是自己设定每秒60帧……  发表于 2012-9-23 14:08
回复

使用道具 举报

梦石
0
星屑
50
在线时间
210 小时
注册时间
2012-7-19
回帖
207
发表于 2012-9-8 23:36:53 来自手机 | 显示全部楼层
糊状物 发表于 2012-9-8 12:23恩,我也认为是调用系统函数完成的,不过调用系统函数这个步骤也理应是在原始脚本的某个地方或某几个 ...

其实我也是初学者,虽然有其他语言什么的基础,不过ruby方面似乎和我学的有很大区别……所以目前仍然是以其他语言的眼光来看ruby的
此外就是我现在因为学校要求的大一新生不能带电脑   所以变成了手机党   不过貌似国庆以后就可以了   所以现在还不能提供足够的帮助……
回复

使用道具 举报

梦石
0
星屑
7095
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2012-9-9 16:34:43 | 显示全部楼层
run 函数最后的 Fiber.yield 是while 之外
除非是该事件就只有一个等待10帧的指令.不然我觉得不能算成10+1.












你知道得太多了

回复

使用道具 举报

梦石
0
星屑
50
在线时间
19 小时
注册时间
2011-4-27
回帖
39
发表于 2012-9-14 19:28:13 | 显示全部楼层
所有实例,都在graphics的update内更新,只是顺序不一样,这样子吧
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部