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

Project1

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

[已经过期] 如何优化事件点设置来优化游戏速度

[复制链接]

Lv2.观梦者

梦石
0
星屑
352
在线时间
377 小时
注册时间
2013-1-30
帖子
219
跳转到指定楼层
1
发表于 2015-3-31 00:14:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
因为使用了不少脚本,尤其是在使用了灯光脚本之后游戏已经出现了较明显的卡顿现象,但是那些脚本又是必须的,所以为了优化游戏速度除了尽可能的削减并行事件之后,在下也只好在事件点上做文章了(亲测在房间内的小地图不会卡,但一到了外面事件比较多的大地图就会卡了)。

所以菜鸟在这里提出有关事件点的以下问题:
1、将两个一页事件页的事件点合并为一个两页事件页的事件点是否有助于缓解卡顿?
2、通过开关使得100个事件点分开表示(如50个事件的条件是1号开关打开,50个事件的条件是2号开关打开)与100个同时表示但静止的事件点哪个更好还是没有区别?
3、闪光点事件的移动路径,系统自带的原地踏步与自定义设置的15帧变换方向实现的类原地踏步,哪个更好还是差不多?
4、剧情结束、已经用独立开关废弃的事件点(比如已经打开了的宝箱)是否还会影响游戏速度?

虽然在下也知道把大地图分割成一块块的小地图后就能缓解游戏卡顿,不过那么漂亮的城市地图切的没走多远就要地图移动实在不好看啊……
至于防卡优化脚本,在下已经用了两个防卡脚本了,虽然有些许的提速,但从结果来看还是不够啊……

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-3-31 11:43:39 手机端发表。 | 只看该作者
割成小地图,或者把能放到脚本的事件都写到脚本里
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
3
发表于 2015-3-31 14:40:12 | 只看该作者
尝试下这个?合集里边(不是我们产的那个合集)有N多个NPC在跑也不卡。
  1. #==============================================================================
  2. # +++ MOG - Simple Anti Lag (V1.0) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # http://www.atelier-rgss.com
  6. #==============================================================================
  7. # Sistema de antilag.
  8. #==============================================================================
  9. # Para desativar ou ativar o sistema de antilag use o comando abaixo
  10. #
  11. # $game_system.anti_lag = true
  12. #
  13. #==============================================================================
  14. # NOTA - Este script não funciona em mapas com efeito LOOP.
  15. #
  16. #==============================================================================
  17. module MOG_ANTI_LAG
  18.   #Area que será atualizada fora da tela.
  19.   UPDATE_OUT_SCREEN_RANGE = 3
  20. end

  21. #==============================================================================
  22. # ■ Game_System
  23. #==============================================================================
  24. class Game_System
  25.   attr_accessor :anti_lag
  26.   
  27. #--------------------------------------------------------------------------
  28. # ● Initialize
  29. #--------------------------------------------------------------------------   
  30.   alias mog_antilag_initialize initialize
  31.   def initialize
  32.       @anti_lag = true
  33.       mog_antilag_initialize
  34.   end  
  35. end

  36. #==============================================================================
  37. # ■ Game_Character
  38. #==============================================================================
  39. class Game_Event < Game_Character
  40.   
  41.   attr_accessor :can_update            

  42.   #--------------------------------------------------------------------------
  43.   # ● Initialize
  44.   #--------------------------------------------------------------------------
  45.   alias mog_anti_lag_initialize initialize
  46.   def initialize(map_id, event)
  47.       mog_anti_lag_initialize(map_id, event)
  48.       @can_update = true
  49.       @anti_lag = true
  50.       if $game_map.loop_horizontal? or $game_map.loop_vertical?
  51.          @anti_lag = false
  52.       end
  53.   end
  54.    
  55. #--------------------------------------------------------------------------
  56. # ● Check Event on Screen
  57. #--------------------------------------------------------------------------
  58. def update_anti_lag
  59.      unless $game_system.anti_lag
  60.          @can_update = true
  61.          return
  62.      end  
  63.      anti_lag_event_on_screen
  64. end
  65.    
  66. #--------------------------------------------------------------------------
  67. # ● Event On Screen
  68. #--------------------------------------------------------------------------
  69. def anti_lag_event_on_screen
  70.      @can_update = false
  71.      out_screen = MOG_ANTI_LAG::UPDATE_OUT_SCREEN_RANGE
  72.      px = ($game_map.display_x).truncate
  73.      py = ($game_map.display_y).truncate
  74.      distance_x = @x - px
  75.      distance_y = @y - py
  76.      if distance_x.between?(0 - out_screen, 16 + out_screen) and
  77.         distance_y.between?(0 - out_screen, 12 + out_screen)
  78.         @can_update = true
  79.      end
  80. end
  81.   
  82. #--------------------------------------------------------------------------
  83. # ● Update
  84. #--------------------------------------------------------------------------     
  85.   alias mog_anti_lag_update update
  86.   def update
  87.       update_anti_lag unless !@anti_lag
  88.       return if !@can_update
  89.       mog_anti_lag_update
  90.   end
  91. end

  92. #==============================================================================
  93. # ■ Sprite Character
  94. #==============================================================================
  95. class Sprite_Character < Sprite_Base

  96. #--------------------------------------------------------------------------
  97. # ● Check Can Update Sprite
  98. #--------------------------------------------------------------------------      
  99.   def check_can_update_sprite
  100.       if self.visible and [email protected]_update
  101.          reset_sprite_effects
  102.       end        
  103.       self.visible = @character.can_update           
  104.   end
  105.   
  106. #--------------------------------------------------------------------------
  107. # ● Reset Sprite Effects
  108. #--------------------------------------------------------------------------         
  109.   def reset_sprite_effects
  110.       dispose_animation
  111.   end
  112.   
  113. #--------------------------------------------------------------------------
  114. # ● Update
  115. #--------------------------------------------------------------------------           
  116.   alias mog_anti_lag_update update
  117.   def update
  118.       if $game_system.anti_lag and @character.is_a?(Game_Event)
  119.          check_can_update_sprite
  120.          return unless self.visible
  121.       end   
  122.       mog_anti_lag_update
  123.   end
  124.   
  125. end

  126. $mog_rgss3_anti_lag = true
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
352
在线时间
377 小时
注册时间
2013-1-30
帖子
219
4
 楼主| 发表于 2015-3-31 20:02:11 | 只看该作者
负零 发表于 2015-3-31 14:40
尝试下这个?合集里边(不是我们产的那个合集)有N多个NPC在跑也不卡。

发生SystemStackError stack level too deep。用不了的样子……

点评

有可能是因为你已经插入了这个脚本了……  发表于 2015-3-31 20:25
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
795
在线时间
1 小时
注册时间
2015-3-29
帖子
3
5
发表于 2015-3-31 20:57:26 | 只看该作者
拆成小地图吧。玩家应该不会太在意的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-9 09:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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