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

Project1

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

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

[复制链接]

Lv1.梦旅人

风之塞尔达

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

贵宾

1
发表于 2011-4-21 14:00:55 | 显示全部楼层
最好  能够考虑到,画面只是游戏流畅度的一部分。对于每帧都有逻辑或AI计算的游戏来说,画面和这些部分不同步也会有很多问题。

点评

丢线程异步  发表于 2011-4-22 00:03
说错了,应该是说尤其用Graphics.frame_count的。  发表于 2011-4-21 14:37
的确,比如在横版这种强制及高运算移动执行,会出现问题。  发表于 2011-4-21 14:26
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

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

贵宾

2
发表于 2011-4-27 09:29:21 | 显示全部楼层
本帖最后由 link006007 于 2011-4-27 09:30 编辑

回复 link006007 的帖子

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

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

使用道具 举报

Lv1.梦旅人

风之塞尔达

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

贵宾

3
发表于 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被分摊到不同线程中,只要是有关联的操作,同步就是必须的,因为永远无法知道几个线程在没有同步的条件下的确切状态,不然用信号量同步这类东西可以说再见了。
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

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

贵宾

4
发表于 2011-4-27 18:30:12 | 显示全部楼层
苏小脉 发表于 2011-4-27 13:46
Ruby 1.8 的线程是绿色线程,是由解释器调度的,不能提升丝毫性能。其存在意义只是为了让语言拥有协程,能 ...

呃。。 看来我想当然了  我还以为1.8的线程是系统线程。。。
另外  你严谨的可以出教科书了 :lol
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-11 13:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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