Project1

标题: RMVX在Vista和Win7上启动比较慢有什么解决办法吗? [打印本页]

作者: fangyc    时间: 2010-8-8 01:07
标题: RMVX在Vista和Win7上启动比较慢有什么解决办法吗?
RMVX在Vista和Win7运行时,在开始游戏或者战斗测试的时候,进入画面时总会有一段假死的状态,不如xp里那么流畅
Vista好像比Win7快一点,但一般也需要10秒左右
请问这有什么解决办法吗?
作者: wangswz    时间: 2010-8-8 01:26
有用大量脚本么
作者: DeathKing    时间: 2010-8-8 07:29
事实上第一次运行的时候,解释器解释脚本会慢一点,然而随着运行的次数增多,这个速度也会加快,紫苏酱给我讲过这个的道理,可惜我忘记掉了。

对于玩家来说,因为玩一次游戏就要玩很长的时间,一开始等待10s左右不是很大的问题。
作者: fangyc    时间: 2010-8-8 10:47
大家都没有假死的现象吗?(无响应这种)
我新开的工程也是这样
每次都需要等10s以上,如果制作中需要频繁测试的话很痛苦啊……没有解决办法吗TT
作者: whmenhao    时间: 2010-8-8 10:49
回复 fangyc 的帖子


    我跟你一模一样,不过我已经习惯了...
作者: 紫苏    时间: 2010-8-8 11:02
楼主说一下你的计算机详细配置,大伙帮你分析下看是不是硬件问题
作者: 小幽的马甲    时间: 2010-8-8 11:19
Win7用户表示确实如此
XP要等5s左右,VX要等10s左右
不过经过在脚本中插入若干个p发现,VX是10s才进入main处理,而XP的5s却是花在了 Scene_Title 的 $game_system.bgm_play($data_system.title_bgm)上。这点令我很疑惑= =

作者: zh99998    时间: 2010-8-8 11:26
XP、Vista、Win7都用过的表示确实如此
不是10s才进main,是10s才开始执行脚本

解决办法的话,我去年就已经求过了,没有的
作者: wingtang5    时间: 2010-8-8 11:49
等待不是问题
作者: 星之璇    时间: 2010-8-8 23:24
话说,如果可以把脚本直接编译成dll就好了~嘿嘿~
作者: wsffx13    时间: 2010-8-8 23:38
原来是普遍性问题啊,还以为是自己电脑问题……


作者: 紫苏    时间: 2010-8-9 04:01
XP、Vista、Win7 +数种配置机器都用过的表示没这个问题,各位不妨说说自己的环境
作者: 小幽的马甲    时间: 2010-8-9 12:27
回复 紫苏 的帖子


    32位Win7旗舰版
  处理器:Pentium(R) Dual-Core CPU [email protected] 2.10GHz
  安装内存(RAM):2.00GB
  显示适配器:NVIDIA GeForce G210M

驱动程序应该没问题
作者: zh99998    时间: 2010-8-9 12:39
32位/64位 vista/win7 旗舰版
AMD athlon 64 X2 dual core processor 4400+
2.00GB

作者: fangyc    时间: 2010-8-9 23:19
XP、Vista、Win7 +数种配置机器都用过的表示没这个问题,各位不妨说说自己的环境 ...
紫苏 发表于 2010-8-9 04:01



求配置……我现在只有xp下没问题,vista和win7都有问题,不过Vista下比win7稍快

CPU:Pentium Dual-Core E5200 2.50GHz
内存:DDR2 2G
显卡:Geforce 9600GT
作者: zhx526012008mj    时间: 2010-8-10 00:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: 紫苏    时间: 2010-8-10 05:46
敢情是和硬件无关,哥儿几个的处理器就还真就和我的不是一个年代的……
可以想象等 10 秒是件很恼火的事,完全失去了解释性语言短调试周期的优势

XP的5s却是花在了 Scene_Title 的 $game_system.bgm_play($data_system.title_bgm)上。这点令我很疑惑= =
小幽的马甲 发表于 2010-8-8 11:19

前后各放置一个 p,中间等待了 5 秒?
作者: 八云紫    时间: 2010-8-10 09:36
好像是 UAC 还是啥的问题。

exe越大,Vista 打开的速度越慢。

记得以前打开一个8GB的安装包,等了好久~~~
作者: ★星な守望者    时间: 2010-8-10 15:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: 紫苏    时间: 2010-8-10 23:20
是,前面的p一打开就能出来,等了差不多5秒才出来后面那个p= =小幽的马甲 发表于 2010-8-9 12:27

再进到 bgm_play 里面呢,具体是哪个内置的方法在作祟?
作者: 紫苏    时间: 2010-8-18 09:47
本帖最后由 紫苏 于 2010-8-18 10:09 编辑

最近换了新计算机,很神奇地也有了这个问题,XP 是在 Audio.bgm_play 的时候卡 6 秒左右,VX 是启动就卡 10 秒
估摸着能和微软从 Vista 起废除了 DirectSound 有关,坐等高人解释:
Windows Vista features a completely re-written audio stack based on the Universal Audio Architecture. Because of the architectural changes in the redesigned audio stack, a direct path from DirectSound to the audio drivers does not exist[1]. DirectSound and other APIs such as MME are emulated as WASAPI Session instances. DirectSound runs in emulation mode on the Microsoft software mixer. The emulator does not have hardware abstraction, so there is no hardware DirectSound acceleration, meaning hardware and software relying on DirectSound acceleration may have degraded performance. It's likely a supposed performance hit might not be noticeable, depending on the application and actual system hardware. In the case of hardware 3D audio effects played using DirectSound3D, they will not be playable.
Third-party APIs such as ASIO and OpenAL are not affected by these architectural changes in Windows Vista. A solution for applications that wish to take advantage of hardware accelerated high-quality 3D positional audio is to use OpenAL. However, this only works if the manufacturer provides an OpenAL driver for their hardware.[2]
As of 2007, a solution to re-enable hardware acceleration of DirectSound3D and Audio Effects, such as EAX, called Creative ALchemy was launched[3]. Creative ALchemy intercepts calls to DirectSound3D and translates them into OpenAL calls to be processed by supported hardware such as Sound Blaster X-Fi and Sound Blaster Audigy. For software-based Creative audio solutions, ALchemy utilizes its built-in 3D audio engine without using OpenAL at all.
Realtek, a manufacturer of integrated HD audio codecs, has a product similar to ALchemy called 3D SoundBack. C-Media, a manufacturer of PC sound card chipsets, also has a solution called Xear3D EX, although it works instead by intercepting DirectSound3D calls transparently in the background without any user intervention.


奇怪的是我之前也用过 Vista 和 Win7 系统,却没有这个问题
作者: DeathKing    时间: 2010-8-18 10:38
测试代码: Scripts.rar (114.9 KB, 下载次数: 24)

因为刚从Win7下换到XP,所以只能用XP测试 = =

时间精度是两个time.now相减。
  1. total:0.188
  2. Cache                    =>        0.0
  3. Game_Actor               =>        0.0
  4. Game_Actors              =>        0.0
  5. Game_BattleAction        =>        0.0
  6. Game_Battler             =>        0.0
  7. Game_Character           =>        0.0
  8. Game_CommonEvent         =>        0.016
  9. Game_Enemy               =>        0.0
  10. Game_Event               =>        0.0
  11. Game_Interpreter         =>        0.0
  12. Game_Map                 =>        0.0
  13. Game_Message             =>        0.0
  14. Game_Party               =>        0.0
  15. Game_Picture             =>        0.0
  16. Game_Player              =>        0.016
  17. Game_Screen              =>        0.0
  18. Game_SelfSwitches        =>        0.0
  19. Game_Switches            =>        0.0
  20. Game_System              =>        0.016
  21. Game_Temp                =>        0.0
  22. Game_Troop               =>        0.0
  23. Game_Unit                =>        0.0
  24. Game_Variables           =>        0.0
  25. Game_Vehicle             =>        0.0
  26. Scene_Base               =>        0.0
  27. Scene_Battle             =>        0.0
  28. Scene_Debug              =>        0.0
  29. Scene_End                =>        0.0
  30. Scene_Equip              =>        0.0
  31. Scene_File               =>        0.0
  32. Scene_Item               =>        0.0
  33. Scene_Map                =>        0.0
  34. Scene_Menu               =>        0.0
  35. Scene_Name               =>        0.0
  36. Scene_Shop               =>        0.0
  37. Scene_Skill              =>        0.015
  38. Scene_Status             =>        0.0
  39. Scene_Title              =>        0.0
  40. Sound                    =>        0.0
  41. Sprite_Base              =>        0.0
  42. Sprite_Battler           =>        0.0
  43. Sprite_Character         =>        0.0
  44. Sprite_Picture           =>        0.0
  45. Sprite_Timer             =>        0.015
  46. Spriteset_Battle         =>        0.0
  47. Spriteset_Map            =>        0.0
  48. Spriteset_Weather        =>        0.0
  49. Vocab                    =>        0.0
  50. Window_ActorCommand      =>        0.0
  51. Window_Base              =>        0.0
  52. Window_BattleMessage     =>        0.0
  53. Window_BattleStatus      =>        0.0
  54. Window_Command           =>        0.016
  55. Window_DebugLeft         =>        0.016
  56. Window_DebugRight        =>        0.0
  57. Window_Equip             =>        0.0
  58. Window_EquipItem         =>        0.0
  59. Window_EquipStatus       =>        0.0
  60. Window_Gold              =>        0.0
  61. Window_Help              =>        0.0
  62. Window_Item              =>        0.0
  63. Window_MenuStatus        =>        0.0
  64. Window_Message           =>        0.0
  65. Window_NameEdit          =>        0.0
  66. Window_NameInput         =>        0.0
  67. Window_NumberInput       =>        0.0
  68. Window_PartyCommand      =>        0.0
  69. Window_SaveFile          =>        0.0
  70. Window_Selectable        =>        0.0
  71. Window_ShopBuy           =>        0.0
  72. Window_ShopNumber        =>        0.0
  73. Window_ShopSell          =>        0.0
  74. Window_ShopStatus        =>        0.0
  75. Window_Skill             =>        0.0
  76. Window_SkillStatus       =>        0.0
  77. Window_Status            =>        0.0
  78. Window_TargetEnemy       =>        0.0
复制代码
不知道是我写错了还是定义本来就非常快 = =
反正就是两次Time.now相减,精度不够的话望众位(望着紫苏)修正= =

WindowsXP,赛扬D 2.8Ghz, 1G DDR
(因为运行了很多次,所以觉得有点快,之前目测是大概需要3s)

只测试了script.rxdata定义的部分。
没有测试Main ← 这个咋测试{:nm_9:}
  1. class SimpleBenchMark
  2.   
  3.   attr_reader :mark_list
  4.   
  5.   def initialize
  6.     @mark_list  = {}
  7.     @init_tmark = Time.now
  8.     @last_mark  = Time.now
  9.     @last_cons  = Object.constants
  10.   end
  11.   
  12.   def mark
  13.     if @last_mark != nil
  14.       t_cost = Time.now - @last_mark
  15.       a_cons = Object.constants - @last_cons
  16.       @mark_list[a_cons] = t_cost
  17.       @last_cons = Object.constants
  18.     end
  19.     @last_mark = Time.now
  20.   end
  21.   
  22.   def get_total
  23.     return @last_mark - @init_tmark
  24.   end
  25.   
  26.   
  27. end


  28. dk_sbm = SimpleBenchMark.new
复制代码
从sound开始,每隔类的前面放一个dk_sbm.mark

统计:
  1. #p dk_sbm.mark_list

  2. file = File.open("DK_Simple_Bench_Mark_Testing.txt","w+")
  3. #dk_sbm.mark_list.each do |key,value|
  4. #  
  5. #  s_key = key[0].to_s
  6. #  while s_key.size < 25
  7. #    s_key << " "
  8. #  end
  9. #  file.write (s_key.to_s  + "=>" + "\t" + value.to_s + "\n")
  10. #  
  11. #end

  12. ary = dk_sbm.mark_list.keys.sort

  13. file.write ("total:" + dk_sbm.get_total.to_s + "\n")

  14. ary.each do |e|
  15.   t_e = e.to_s
  16.   while t_e.size < 25
  17.     t_e << " "
  18.   end
  19.   file.write (t_e.to_s  + "=>" + "\t" + dk_sbm.mark_list[e].to_s + "\n")
  20. end

  21. file.close
复制代码

作者: hongnylaugh    时间: 2010-8-18 15:08
我的4盒CPU,没有10秒现象
作者: cfancy    时间: 2010-8-20 13:40
我的WIN7表示也有10S问题。。。。
另外,测试战斗的时候,经常再战斗结束时,也要卡上好几秒钟战斗结束音乐才响起,然后才结束战斗。。。
作者: 紫苏    时间: 2010-8-20 14:21
确实和 DirectSound 有关,我的现象是在 VX 里,用程序自带的音乐测试,所有 BGM 和 ME 一律卡 4-6 秒;在 XP 中音乐测试不会卡,但实际执行 Audio.bgm_play 等函数的时候却会卡 4-6 秒
作者: trentswd    时间: 2010-8-21 03:18
win7,关了UAC,音乐测试不卡
但是开游戏也要10s-_-
作者: 灼眼的夏娜    时间: 2010-8-21 05:30
win7 vx和xp差不多都是1-2秒~~ ><
作者: 木马惊魂    时间: 2010-8-24 10:32
本帖最后由 木马惊魂 于 2010-8-24 10:43 编辑
  1. def start
  2.     super
  3.       load_newdatebase                  # 载入预设数据库
  4.     check_continue                    # 判断继续是否有效
  5.     create_title_graphic              # 生成标题画面图像
  6.     create_command_window             # 生成指令窗口
  7.     play_title_music                  # 播放标题画面音乐
  8.     create_game_objects               # 生成游戏对象
  9.     load_database                     # 载入数据库
复制代码
load_newdatebase在下面def load_newdatebase载入时候只载入$data_system        = load_data("Data/System.rvdata")
而load_database不载入$data_system        = load_data("Data/System.rvdata")
是不是会好点啊我是xp电脑比较不出来 我意思就是不管别的先显示出界面 从眼睛看见界面 视觉神经传导冲动 中枢神经处理 进大脑再支配手按键盘 怎么也得0.5秒吧 这时间再载入别的数据应该够吧
我脚本仅限看懂窗口坐标 也不知道这想法对不 毕竟载入的时候许多数据在标题界面不用

作者: david50407    时间: 2010-8-26 22:40
其实RM正在建置内部类
DK的方法基本基不了作用的




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1