Project1

标题: 对美兽保护环境人人有责项目的性能改进 囧 [打印本页]

作者: orochi2k    时间: 2009-10-1 10:59
标题: 对美兽保护环境人人有责项目的性能改进 囧

ARPG游戏的性能要求逼迫着偶去做性能优化 囧

于是,发现了以下几个提高性能的处理方案:
1,美兽每次丢出新事件都访问一次硬盘并且去读出其中的地图事件数据,于是捏,其实我们可以一次把数据全读到内存上(读内存比读硬盘快……)

拿偶正在欢乐地做的僵尸剧情举例:
  map = load_data(sprintf("Data/Map%03d.rxdata", 299))     
    temp = Marshal.load(Marshal.dump(map))
    @zombie = []
    @zombie.push(temp.events[3])
    @zombie.push(temp.events[5])
    @zombie.push(temp.events[6])
    @zombie.push(temp.events[7])
    @zombie.push(temp.events[8])
丢僵尸时就……
def z_spawn(x,y,type = 0)
      if !$game_system.map_events_number
         $game_system.map_events_number = {}
      end  
      sum = $game_system.map_events_number      
      m_id = $game_map.map_id      
      sum[m_id] == nil ? sum[m_id] = 2000 : sum[m_id] += 1
      new_event_id = sum[m_id]
      case type
      when 0
      temp = @zombie[rand(@zombie.size)].clone
      end
      temp.id = new_event_id      
      temp.x,temp.y = x,y      
      $game_map.events[new_event_id] = Game_Event.new(m_id,temp)
      update_spr(new_event_id)
      return new_event_id
  end

呃……没有REFRESH_MAP,而是出现了个update_spr,这个是虾米呢?
偶再继续丢代码

def update_spr(id)
    sprite = Sprite_Character.new($scene.spriteset.viewport1, $game_map.events[id])
    $scene.spriteset.character_sprites.push(sprite)
  end

于是,你看见了第2个性能优化点。
美兽原来要把地图的spriteset全清了重来,于是 偶就卡得囧囧有神鸟~
其实貌似其实不必把全部的spriteset干掉……

对应的,我们在删除事件时也改了改
def self.delete_events(event_id,ref = true)
      return unless self.is_map?     
      
      if ref == true
      #self.refresh_map
      #$scene.spriteset.character_sprites.delete(sprite)
        $game_map.need_refresh = true
        for i in $scene.spriteset.character_sprites
          if i.character  == $game_map.events[event_id]
            i.dispose
            $scene.spriteset.character_sprites.delete(i)
          end
        end
      end
      $game_map.events.delete(event_id)
  end
加参数是为了留点尸体 囧

OK,基本上写完了,偶继续潜下去乱丢僵尸玩吧
作者: 霜冻之狼    时间: 2009-10-1 11:29
好东西咱抱走了
其实那脚本可以做很多东西,比如用物品召唤NPC
作者: 神思    时间: 2009-10-2 08:19
他那个以前也简单的看了一下。如果永久保存是直接吧原文件都修改的。新开游戏的话也会受印象
作者: DeathKing    时间: 2009-10-2 16:44
丢僵尸…………好邪恶
作者: 瓦沙尔    时间: 2009-11-23 18:45
提示: 作者被禁止或删除 内容自动屏蔽




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