Project1

标题: 我发现我跨地图移动会卡顿 [打印本页]

作者: yang1zhi    时间: 2014-4-19 22:41
标题: 我发现我跨地图移动会卡顿
刚做了张野外的地图,还没设事件,就让村子和野外用场所移动通了起来。可是移动后会有一定时间卡顿。野外的卡的时间比有事件的村里还久那么一点点。
作者: 日月星辰    时间: 2014-4-19 22:44
首先确认电脑配置【运行rm估计总行吧
然后看看是不是太多自动执行的公共事件
还有太长的脚本
或者太大地图

其余情况暂且没想到
作者: yang1zhi    时间: 2014-4-19 22:46
日月星辰 发表于 2014-4-19 22:44
首先确认电脑配置【运行rm估计总行吧
然后看看是不是太多自动执行的公共事件
还有太长的脚本

就是都不是你说的这些情况,我才想不通啊,野外图还没村子图大呢,还只画了图出来,事件还没设。公共事件总共也才一个,是显示对话框的。
作者: 日月星辰    时间: 2014-4-19 22:53
yang1zhi 发表于 2014-4-19 22:46
就是都不是你说的这些情况,我才想不通啊,野外图还没村子图大呢,还只画了图出来,事件还没设。公共事件 ...

介意放工程让别人测试吗? lz情况很少见啊。。
作者: yang1zhi    时间: 2014-4-19 23:07
日月星辰 发表于 2014-4-19 22:53
介意放工程让别人测试吗? lz情况很少见啊。。

我又试了下,新建的图60X60的就算只放了草皮也会卡。减到30X30才不卡。不过30X30太小了。
我之前建的村子是100X50的也没这么卡。只有换地图时卡,其他时间不卡
作者: 日月星辰    时间: 2014-4-19 23:16
本帖最后由 日月星辰 于 2014-4-19 23:20 编辑
yang1zhi 发表于 2014-4-19 23:07
我又试了下,新建的图60X60的就算只放了草皮也会卡。减到30X30才不卡。不过30X30太小了。
我之前建的村子 ...


测试游戏时候按下f1看看有没有开平滑模式?那个也有可能导致卡  

不过反正不是制作上的技术问题啦,没事

还找到了一个防卡脚本。。造成卡的问题太复杂。。没效果那也没办法。。

RUBY 代码复制
  1. #======================================
  2. # ■ Anti Event Lag Script
  3. #======================================
  4. #  By: Near Fantastica
  5. #   Date: 12.06.05
  6. #   Version: 3
  7. #======================================
  8. #======================================
  9. # ■ Game_Map
  10. #======================================
  11. class Game_Map
  12.   #--------------------------------------------------------------------------
  13.   def in_range?(object)
  14.     screne_x = $game_map.display_x
  15.     screne_x -= 256
  16.     screne_y = $game_map.display_y
  17.     screne_y -= 256
  18.     screne_width = $game_map.display_x
  19.     screne_width += 2816
  20.     screne_height = $game_map.display_y
  21.     screne_height += 2176
  22.     return false if object.real_x <= screne_x
  23.     return false if object.real_x >= screne_width
  24.     return false if object.real_y <= screne_y
  25.     return false if object.real_y >= screne_height
  26.     return true
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   def update
  30.     if $game_map.need_refresh
  31.       refresh
  32.     end
  33.     if @scroll_rest > 0
  34.       distance = 2 ** @scroll_speed
  35.       case @scroll_direction
  36.       when 2
  37.         scroll_down(distance)
  38.       when 4
  39.         scroll_left(distance)
  40.       when 6   
  41.         scroll_right(distance)
  42.       when 8   
  43.         scroll_up(distance)
  44.       end
  45.       @scroll_rest -= distance
  46.     end
  47.     for event in @events.values
  48.       if in_range?(event) or event.trigger == 3 or event.trigger == 4
  49.         event.update
  50.       end
  51.     end
  52.     for common_event in @common_events.values
  53.       common_event.update
  54.     end
  55.     @fog_ox -= @fog_sx / 8.0
  56.     @fog_oy -= @fog_sy / 8.0
  57.     if @fog_tone_duration >= 1
  58.       d = @fog_tone_duration
  59.       target = @fog_tone_target
  60.       @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
  61.       @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
  62.       @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
  63.       @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
  64.       @fog_tone_duration -= 1
  65.     end
  66.     if @fog_opacity_duration >= 1
  67.       d = @fog_opacity_duration
  68.       @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
  69.       @fog_opacity_duration -= 1
  70.     end
  71.   end
  72. end
  73. #======================================
  74. # ■ Spriteset_Map
  75. #======================================
  76. class Spriteset_Map
  77.   #--------------------------------------------------------------------------
  78.   def in_range?(object)
  79.     screne_x = $game_map.display_x
  80.     screne_x -= 256
  81.     screne_y = $game_map.display_y
  82.     screne_y -= 256
  83.     screne_width = $game_map.display_x
  84.     screne_width += 2816
  85.     screne_height = $game_map.display_y
  86.     screne_height += 2176
  87.     return false if object.real_x <= screne_x
  88.     return false if object.real_x >= screne_width
  89.     return false if object.real_y <= screne_y
  90.     return false if object.real_y >= screne_height
  91.     return true
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   def update
  95.     if @panorama_name != $game_map.panorama_name or
  96.         @panorama_hue != $game_map.panorama_hue
  97.       @panorama_name = $game_map.panorama_name
  98.       @panorama_hue = $game_map.panorama_hue
  99.       if @panorama.bitmap != nil
  100.         @panorama.bitmap.dispose
  101.         @panorama.bitmap = nil
  102.       end
  103.       if @panorama_name != ""
  104.         @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  105.       end
  106.       Graphics.frame_reset
  107.     end
  108.     if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
  109.       @fog_name = $game_map.fog_name
  110.       @fog_hue = $game_map.fog_hue
  111.       if @fog.bitmap != nil
  112.         @fog.bitmap.dispose
  113.         @fog.bitmap = nil
  114.       end
  115.       if @fog_name != ""
  116.         @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  117.       end
  118.       Graphics.frame_reset
  119.     end
  120.     @tilemap.ox = $game_map.display_x / 4
  121.     @tilemap.oy = $game_map.display_y / 4
  122.     @tilemap.update
  123.     @panorama.ox = $game_map.display_x / 8
  124.     @panorama.oy = $game_map.display_y / 8
  125.     @fog.zoom_x = $game_map.fog_zoom / 100.0
  126.     @fog.zoom_y = $game_map.fog_zoom / 100.0
  127.     @fog.opacity = $game_map.fog_opacity
  128.     @fog.blend_type = $game_map.fog_blend_type
  129.     @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
  130.     @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
  131.     @fog.tone = $game_map.fog_tone
  132.     i=0
  133.     for sprite in @character_sprites
  134.       if sprite.character.is_a?(Game_Event)
  135.         if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
  136.           sprite.update
  137.           i+=1
  138.         end
  139.       else
  140.         sprite.update
  141.         i+=1
  142.       end
  143.     end
  144.     #p i
  145.     @weather.type = $game_screen.weather_type
  146.     @weather.max = $game_screen.weather_max
  147.     @weather.ox = $game_map.display_x / 4
  148.     @weather.oy = $game_map.display_y / 4
  149.     @weather.update
  150.     for sprite in @picture_sprites
  151.       sprite.update
  152.     end
  153.     @timer_sprite.update
  154.     @viewport1.tone = $game_screen.tone
  155.     @viewport1.ox = $game_screen.shake
  156.     @viewport3.color = $game_screen.flash_color
  157.     @viewport1.update
  158.     @viewport3.update
  159.   end
  160. end

作者: yang1zhi    时间: 2014-4-19 23:22
日月星辰 发表于 2014-4-19 23:16
测试游戏时候按下f1看看有没有开平滑模式?那个也有可能导致卡  

不过反正不是制作上的技术问题啦,没事 ...

虽然没效果,不过还是谢谢了




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