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

Project1

 找回密码
 注册会员
搜索
楼主: 一箭烂YiJL
打印 上一主题 下一主题

【更新】提高游戏运行速度(v1.01)

[复制链接]

Lv2.观梦者 (版主)

迷途知返,恍如隔世

梦石
0
星屑
488
在线时间
1355 小时
注册时间
2011-2-17
帖子
1216

开拓者

11
发表于 2011-4-21 19:28:18 | 只看该作者
还有现在的版本只能加速/不加速,不能减速!...
用此脚本为什么要减速...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
433 小时
注册时间
2010-5-13
帖子
116
12
发表于 2011-4-21 22:06:29 | 只看该作者
xp应该也可以用吧??

点评

不可,因为XP没有Scene_Base,要么我写个到XP区发布。  发表于 2011-4-21 22:30
回复 支持 反对

使用道具 举报

Lv3.寻梦者

弓箭手?剑兰

梦石
0
星屑
4834
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
13
 楼主| 发表于 2011-4-21 23:50:22 | 只看该作者
更新了,仪式上顶一下。
如果卡的话,游戏Debug测试时可以用8楼的脚本,
但是要定制监控CPU使用量,以免耗用量过大。
更重要的是游戏发布时最好别用8楼的脚本。(流氓~)

点评

期待xp的、、、、、、、  发表于 2011-4-22 12:24
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
324
在线时间
210 小时
注册时间
2010-6-12
帖子
73
14
发表于 2011-4-22 05:58:52 | 只看该作者
这个真的能提高游戏速度吗?

点评

看你的CPU(看13楼),最好不要用其它线程帮助。  发表于 2011-4-22 08:02
回复 支持 反对

使用道具 举报

Lv3.寻梦者

弓箭手?剑兰

梦石
0
星屑
4834
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
15
 楼主| 发表于 2011-4-22 17:03:49 | 只看该作者
回复 005020671 的帖子

XP的发布了:提高游戏运行速度
有一个bug,就是非"平滑模式",具体看上面。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
33 小时
注册时间
2011-2-15
帖子
39
16
发表于 2011-4-23 11:07:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

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

贵宾

17
发表于 2011-4-27 09:29:21 | 只看该作者
本帖最后由 link006007 于 2011-4-27 09:30 编辑

回复 link006007 的帖子

私以为,多线程对于CPU密集型计算没什么优化效果。。只有在IO较多或者运算可以很快完成的或者是CPU多核的情况下,多线程才有其优势。
而且,用线程执行AI计算需要的是线程同步比较重要吧。。

回错了。。。  是要回我自己帖子那个yangff的留言,。。。,
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

弓箭手?剑兰

梦石
0
星屑
4834
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
18
 楼主| 发表于 2011-4-27 10:07:27 | 只看该作者
回复 link006007 的帖子

偶尔看见您的发帖。于是就说:

我们RGSS脚本是一条线程,(好像也是窗口的主线程,紫苏应该比较清楚),
所谓画面、逻辑加快也只是限于这线程。那么其他Ruby线程在没加快的情况下,
而且该线程一直执行着与游戏有关的运算,就不再同步了。

线程有他自己的优先级,与他的进程的CPU使用有关,(一下只是评论:)
RM主线程被用满的时候,就要用Ruby的线程?(Thread.new),
但是也同时依赖Game.exe这个进程。Game.exe的优先级所有的CPU使用量也用完了,
那么彻底的完蛋了= =(该优先级不是好办法...另开进程也不是好办法...)
最好就是逻辑运算高速简洁。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

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

贵宾

19
发表于 2011-4-27 11:57:41 | 只看该作者
本帖最后由 link006007 于 2011-4-27 12:19 编辑

RGSS只是一个封装其他语言(C\C++)函数的ruby对象集合,而ruby本身以一个解释器的方式本身运行于程序之内,对于RPG Maker而言,应该是在初始化完一个ruby解释器之后,进入RGSS的用户脚本,之后碰到loop循环(既所谓的main函数),然后导致程序的不断运行。所以,即使是ruby里面的Thread.new出来的线程应该也是属于RPGMake的进程,这样的线程就会和其他的线程分摊这个进程的CPU时间。所以,在非多核CPU或多CPU环境下,对于计算密集的进程而言,是没有优化效果的。
RM主线程被用满的时候应该是不存在的。同进程的线程会不会使得另外一个线程没有机会被调度,这个取决于操作系统的任务调度机制,对于大多数操作系统而言应该是不会的。除非那个进程本身难以被调度。多线程提供的就是一种并行的假象(多CPU是真的并行。。。),如果会有一个线程无法执行,那就失去线程的意义了。
我说的同步是,诸如画面和逻辑AI被分摊到不同线程中,只要是有关联的操作,同步就是必须的,因为永远无法知道几个线程在没有同步的条件下的确切状态,不然用信号量同步这类东西可以说再见了。
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

弓箭手?剑兰

梦石
0
星屑
4834
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
20
 楼主| 发表于 2011-4-27 13:31:43 | 只看该作者
回复 link006007 的帖子

原来确的,Ruby线程用的是时间片轮转法,开了多线程也是不会提高进程效率...但是Thread.new出来的线程是否属于窗口(RM主线程)就不知道,不过RGSS却的确被进行再RM窗口。(用GetCurrentThreadId和GetWindowThreadProcessId就能知道)。

但在任务调度机制下,优先级抢占运行。一个进程里的每一个线程都有他们的优先级,CPU是先给高优先级的进程,再由它的线程优先级分先后运行。多核是多个CPU在同时分配工作嘛~当然运行的快点啦。

控制线程操作速度...貌似要很手动,sleep少一点?

点评

见 25 楼。轮转式调度不是原因,整个 Windows NT 都是轮转式调度的。  发表于 2011-4-27 13:54
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 14:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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