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

Project1

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

[讨论] 对美兽保护环境人人有责项目的性能改进 囧

 关闭 [复制链接]

Lv4.逐梦者

梦石
1
星屑
8988
在线时间
4373 小时
注册时间
2005-10-22
帖子
6759

开拓者贵宾

跳转到指定楼层
1
发表于 2009-10-1 10:59:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x

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,基本上写完了,偶继续潜下去乱丢僵尸玩吧

Lv1.梦旅人

梦石
0
星屑
50
在线时间
128 小时
注册时间
2009-1-28
帖子
2790
2
发表于 2009-10-1 11:29:14 | 只看该作者
好东西咱抱走了
其实那脚本可以做很多东西,比如用物品召唤NPC

炼金术的根本法则是等价交换。想要获得,必须失去同等价值的东西。每当烦躁的时候,煎熬在不想做却又正在做的烦心事中的时候,我就安慰自己,提醒自己做这些事情的目的所在,告诉自己不要忽略所获得或者即将获得的回报,物质的,精神的,肉体的,灵魂的回报!只做想做的事情,就会失去不想失去的东西。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

3
发表于 2009-10-2 08:19:00 | 只看该作者
他那个以前也简单的看了一下。如果永久保存是直接吧原文件都修改的。新开游戏的话也会受印象
-.-
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

4
发表于 2009-10-2 16:44:23 | 只看该作者
丢僵尸…………好邪恶

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-8-15
帖子
98
5
发表于 2009-11-23 18:45:23 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-4 19:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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