Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Понижение fps (Custom Title Scene)

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74228

  • Frog434
  • Frog434 аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 38
  • Спасибо получено: 1
Всем привет , сразу к делу
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
, вот скрипт , у меня в меню воспроизводится 4 кадра и изначально fps = 60 , но затем он понижается до 10 , вопрос почему ?
yadi.sk/d/m2dvwZIxbjuYh - ссылка на демку
Последнее редактирование: 10 года 1 мес. назад от Cerberus.
Администратор запретил публиковать записи гостям.

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74229

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранУчительПисатель 3 местоПрограммист RubyПроект месяца 1 место1 место в ГотвОрганизатор конкурсовПроект месяца 2 место3 место
не смотрел демку, но советую проверить, а удаляешь ли ты картинки после использования? а то они все грузятся в память, грузятся...

213 МБ - ты издеваешься?))
решение:
не парь Cache, попробуй управлять памятью сам:
#Вырву кусок, который все равно повторяется
Graphics.wait(VARS::SPD)
sprite.bitmap = Cache.system(VARS::LOGO_1)
Graphics.fadein(1)
sprite.bitmap.dispose# это и есть удаление. перед загрузкой новой картинки выполняй dispose для прошлой
Последнее редактирование: 10 года 1 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Frog434

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74255

  • Frog434
  • Frog434 аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 38
  • Спасибо получено: 1
Это у меня логотип и он работает нормально.
А вот оригинал скрипта -
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

И там память грузят картинки меняющиеся постоянно в самом меню , SLIDE = 10 # Количество слайдов.
UPD = 650 # Скорость обновления слайдов . Вот переменные отвечающие за эти картинки
Последнее редактирование: 10 года 1 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74256

  • Frog434
  • Frog434 аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 38
  • Спасибо получено: 1
Вот конкретнее :
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Администратор запретил публиковать записи гостям.

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74262

  • Frog434
  • Frog434 аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 38
  • Спасибо получено: 1
И если я сюда добавлю @sprite1.bitmap.dispose , то меняющиеся картинки в меню (анимация) пропадает вообще, т.е фона нет
Администратор запретил публиковать записи гостям.

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74265

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранУчительПисатель 3 местоПрограммист RubyПроект месяца 1 место1 место в ГотвОрганизатор конкурсовПроект месяца 2 место3 место
Готово.
Обнови метод start:
def start
super
@sprite1 = Sprite.new # вырезаем из create_background
...# пропустим эти строки
end

И еще вот метод create_background:
def create_background
    @get_next_pic = ((rand(@slide_count) + 1).to_i).to_s
    @sprite1.bitmap = Cache.title1(@get_next_pic)
    center_sprite(@sprite1)
    @time = 0
  end

У тебя все время создается новый спрайт, а старый с его картинкой не удаляется. Удалять и создавать его каждый раз - дорого для скорости, так что сделаем дешевле - просто создаем его один раз и меняем только bitmap.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Frog434

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74273

  • Frog434
  • Frog434 аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 38
  • Спасибо получено: 1
def start
    super
    @sprite1 = Sprite.new
 
    SceneManager.clear
    Graphics.freeze
    get_var
    create_command_new_game
    create_command_load_game
    create_command_captions_game
    create_command_end_game
    var_ini
    play_title_music if $bgm_on
    $bgm_on = true
    @load_scene = false
  end
def create_background
 
    @get_next_pic = ((rand(@slide_count) + 1).to_i).to_s
    @sprite1.bitmap = Cache.title1(@get_next_pic)
    center_sprite(@sprite1)
    @time = 0
    end
Обновил , в итоге ругается
def update
    super
    to_select
    opacity_command
    @time += 1
    create_background if @time == @upd_rate
  end
На строчку @time += 1
Администратор запретил публиковать записи гостям.

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74277

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранУчительПисатель 3 местоПрограммист RubyПроект месяца 1 место1 место в ГотвОрганизатор конкурсовПроект месяца 2 место3 место
Попробуй поменять местами строку со @sprite1 и SceneManager.clear
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Frog434

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74300

  • Frog434
  • Frog434 аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 38
  • Спасибо получено: 1
Изменил , ничего не поменялось , а если прописать
def update
    super
    to_select
    opacity_command
    #@time += 1
    create_background if @time == @upd_rate
  end
, т.е избавиться от строчки на которую он ругается , то будет меню без фона.
Администратор запретил публиковать записи гостям.

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74303

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранУчительПисатель 3 местоПрограммист RubyПроект месяца 1 место1 место в ГотвОрганизатор конкурсовПроект месяца 2 место3 место
полный код. я не знаю, почему у меня он работает, а у тебя - нет.
#----------------------------------------------------------------------------
# * [ACE] Custom Title Scene
module VARS
  # Настройка слайдов и мелодий.
  BGM = 1 # Количество мелодий.                                    
  SLIDE = 4  # Количество слайдов.                                 
  UPD = 4 # Скорость обновления слайдов.
  SPD = 3 # Скорость смены логотипов.
 
  # Настройка логотипов.
  LOGO_SHOW = true # true/false - Показывать/ не показывать логотип.
  LOGO_1 = "Logo1"
  LOGO_2 = "Logo2"
  LOGO_3 = "Logo3"
  LOGO_4 = "Logo4"
  LOGO_5 = "Logo5"
  LOGO_6 = "Logo6"
  LOGO_7 = "Logo7"
  LOGO_8 = "Logo8"
 
  #Названия картинок команд.
  NEW = "New_Game" # Название картинки команды новой игры.
  LOAD = "Load_Game" # Название картинки команды загрузки сохранения.
  CAPTIONS = "Captions_Game" # Название картинки команды титров
  ENDS = "End_Game" # Название картинки команды выхода из игры.
 
  # Расположение пунктов меню. 
  # Координаты Новой Игры. Важно! Минимальное значение Y это 210.
  NEW_X = 132
  NEW_Y = 210
  # Координаты Загрузки.
  LOAD_X = 132
  LOAD_Y = 255
 
  # Координаты Выхода.
  END_X = 132
  END_Y = 360
 
  # Координаты Титров.
  CAPTIONS_X = 132
  CAPTIONS_Y = 310
 
  # Порядок расположения пунктов меню: 0 - первая команда, 1 - вторая, 2 - третья. 
  POS = [
  0, # Новая игра
  1, # Загрузить игру
  2, # Титры
  3  # Выйти из игры
 
  ]
end
###########################################################################
 
class Scene_Logo < Scene_Base
  def main
      start
  end
 
  def start
    if VARS::LOGO_SHOW
      sprite = Sprite.new
      sprite.bitmap = Cache.system(VARS::LOGO_1)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_2)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_3)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_4)  
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_5)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_6)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_7)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_8)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_1)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_2)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_3)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_4)  
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_5)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_6)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_7)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_8)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_1)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_2)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_3)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_4)  
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_5)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_6)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_7)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_8)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_1)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_2)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_3)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_4)  
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_5)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_6)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_7)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_8)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_1)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_2)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_3)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_4)  
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_5)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_6)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_7)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.bitmap = Cache.system(VARS::LOGO_8)
      Graphics.fadein(1)
      Graphics.wait(VARS::SPD)
      sprite.dispose
 
      @bgm_count = VARS::BGM
      @get_next_bgm = (rand(@bgm_count) + 1).to_i
      Audio.bgm_play("Audio/BGM/Title/#{@get_next_bgm}", 100)
      $bgm_on = false
 
      SceneManager.goto(Scene_Title)
    else
      $bgm_on = true
      SceneManager.goto(Scene_Title)
    end
  end
end
 
module SceneManager
 
  def self.first_scene_class
            $BTEST ? Scene_Battle : Scene_Logo
  end
end
 
class Scene_Title < Scene_Base
 
  def start
    super
    SceneManager.clear
    Graphics.freeze
    get_var
    @sprite1 = Sprite.new
    create_background
    create_command_new_game
    create_command_load_game
    create_command_captions_game
    create_command_end_game
    var_ini
    play_title_music if $bgm_on
    $bgm_on = true
    @load_scene = false
  end
 
  def terminate
    super
    SceneManager.snapshot_for_background
    dispose_background
    dispose_command
  end
 
  def update
    super
    to_select
    opacity_command
    @time += 1
    create_background if @time == @upd_rate
  end
 
  def get_var                                                
    @bgm_count = VARS::BGM                                     
    @slide_count = VARS::SLIDE                                  
    @upd_rate = VARS::UPD 
  end                                                                       
 
  def create_background
    @get_next_pic = ((rand(@slide_count) + 1).to_i).to_s
    @sprite1.bitmap = Cache.title1(@get_next_pic)
    center_sprite(@sprite1)
    @time = 0
  end
 
  def dispose_background
    @sprite1.bitmap.dispose
    @sprite1.dispose
  end
 
  def center_sprite(sprite)
    sprite.ox = sprite.bitmap.width / 2
    sprite.oy = sprite.bitmap.height / 2
    sprite.x = Graphics.width / 2
    sprite.y = Graphics.height / 2
  end
 
  def play_title_music
    @get_next_bgm = (rand(@bgm_count) + 1).to_i
    Audio.bgm_play("Audio/BGM/Title/#{@get_next_bgm}", 100)
    RPG::BGS.stop
    RPG::ME.stop
    return
  end
 
  def var_ini
    opacity_command
    if DataManager.save_file_exists?
      @index = VARS::POS[1]
    else
      @index = VARS::POS[0]
    end
    @item_max = 4
    @col_max = 1
  end
 
  def create_command_new_game
    @new_game = Sprite.new
    @new_game.bitmap = Bitmap.new("Graphics/System/#{VARS::NEW}")
    @new_game.x = VARS::NEW_X
    @new_game.y = VARS::NEW_Y
    return
  end
 
  def create_command_load_game
    @load_game = Sprite.new
    @load_game.bitmap = Bitmap.new("Graphics/System/#{VARS::LOAD}")
    @load_game.x = VARS::LOAD_X
    @load_game.y = VARS::LOAD_Y
    return
  end
 
  #
 
  def create_command_captions_game
    @captions_game = Sprite.new
    @captions_game.bitmap = Bitmap.new("Graphics/System/#{VARS::CAPTIONS}")
    @captions_game.x = VARS::CAPTIONS_X
    @captions_game.y = VARS::CAPTIONS_Y
    return
  end
 
  #
 
  def create_command_end_game
    @end_game = Sprite.new
    @end_game.bitmap = Bitmap.new("Graphics/System/#{VARS::ENDS}")
    @end_game.x = VARS::END_X
    @end_game.y = VARS::END_Y
    return
  end
 
  def opacity_command
    if @load_scene
      @new_game.opacity = 0
      @load_game.opacity = 0
      @captions_game.opacity = 0
      @end_game.opacity = 0
    else
     @new_game.opacity = 255 if @index == VARS::POS[0]
     @new_game.opacity = 155 if @index != VARS::POS[0]
 
 
     @load_game.opacity = 255 if @index == VARS::POS[1]
     @load_game.opacity = 155 if @index != VARS::POS[1]
 
 
     @captions_game.opacity = 255 if @index == VARS::POS[2]
     @captions_game.opacity = 155 if @index != VARS::POS[2]
 
 
     @end_game.opacity = 255 if @index == VARS::POS[3]
     @end_game.opacity = 155 if @index != VARS::POS[3]
    end
  end
 
  def dispose_command
    @new_game.bitmap.dispose
    @new_game.dispose
 
    @load_game.bitmap.dispose
    @load_game.dispose
 
 
    @captions_game.bitmap.dispose
    @captions_game.dispose
 
    @end_game.bitmap.dispose
    @end_game.dispose
  end
 
  def to_down
    if @index < (@item_max - @col_max)
      Sound.play_cursor
      @index = (@index + @col_max)
    else
      if @index == (@item_max - @col_max)
        Sound.play_cursor
        @index = 0
      end
    end
  end
 
  def to_up
    if @index >= @col_max
      Sound.play_cursor
      @index = (@index - @col_max)
    else
      if @index < @col_max
        Sound.play_cursor
        @index = 3
      end
    end
  end
 
  def to_select
    to_up    if Input.repeat?(:UP)
    to_down  if Input.repeat?(:DOWN)
    command_new_game if Input.press?(:C) && @index == VARS::POS[0]
    command_continue if Input.press?(:C) && @index == VARS::POS[1]
    command_captions_game if Input.press?(:C) && @index == VARS::POS[2]
    command_shutdown if Input.press?(:C) && @index == VARS::POS[3]
  end
 
  def command_new_game
    Sound.play_ok
    DataManager.setup_new_game
    @new_game.opacity = 0
    @load_game.opacity = 0
    @captions_game.opacity = 0
    @end_game.opacity = 0
    fadeout_all
    $game_map.autoplay
    SceneManager.goto(Scene_Map)
  end
 
  def command_continue
    if DataManager.save_file_exists?
      Sound.play_ok
      @new_game.opacity = 0
      @load_game.opacity = 0
      @captions_game.opacity = 0
      @end_game.opacity = 0
      SceneManager.call(Scene_Load)
    else
      Sound.play_buzzer
    end
  end
 
  def command_captions_game
    begin
      SceneManager.call(Scene_SlideShow)
      setup_slideshow
      end
  end
 
 
  def command_shutdown
    Sound.play_ok
    @new_game.opacity = 0
    @load_game.opacity = 0
    @captions_game.opacity = 0
    @end_game.opacity = 0
    fadeout_all
    SceneManager.exit
  end
end
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Frog434

Понижение fps (Custom Title Scene) 10 года 1 мес. назад #74306

  • Frog434
  • Frog434 аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 38
  • Спасибо получено: 1
Сравнил 2 кода , оказалось что одну строчку поставил в #.
А так огромное спасибоhttp://rpg-maker.info/forum/ace/59713-ponizhenie-fps-custom-title-scene/reply/74303
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.313 секунд