Понижение fps (Custom Title Scene)

Больше
11 года 7 мес. назад - 11 года 7 мес. назад #74228 от Frog434
Всем привет , сразу к делу
ВНИМАНИЕ: Спойлер!
, вот скрипт , у меня в меню воспроизводится 4 кадра и изначально fps = 60 , но затем он понижается до 10 , вопрос почему ?
yadi.sk/d/m2dvwZIxbjuYh - ссылка на демку
Последнее редактирование: 11 года 7 мес. назад пользователем Cerberus.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 7 мес. назад - 11 года 7 мес. назад #74229 от DeadElf79
не смотрел демку, но советую проверить, а удаляешь ли ты картинки после использования? а то они все грузятся в память, грузятся...

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 7 мес. назад - 11 года 7 мес. назад #74255 от Frog434
Это у меня логотип и он работает нормально.
А вот оригинал скрипта -
ВНИМАНИЕ: Спойлер!

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 7 мес. назад #74256 от Frog434
Вот конкретнее :
ВНИМАНИЕ: Спойлер!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 7 мес. назад #74262 от Frog434
И если я сюда добавлю @sprite1.bitmap.dispose , то меняющиеся картинки в меню (анимация) пропадает вообще, т.е фона нет

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 7 мес. назад #74265 от DeadElf79
Готово.
Обнови метод start:
Code:
def start super @sprite1 = Sprite.new # вырезаем из create_background ...# пропустим эти строки end

И еще вот метод create_background:
Code:
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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 7 мес. назад #74273 от Frog434
Code:
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
Code:
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
Обновил , в итоге ругается
Code:
def update super to_select opacity_command @time += 1 create_background if @time == @upd_rate end
На строчку @time += 1

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 7 мес. назад #74277 от DeadElf79
Попробуй поменять местами строку со @sprite1 и SceneManager.clear
Спасибо сказали: Frog434

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 7 мес. назад #74300 от Frog434
Изменил , ничего не поменялось , а если прописать
Code:
def update super to_select opacity_command #@time += 1 create_background if @time == @upd_rate end
, т.е избавиться от строчки на которую он ругается , то будет меню без фона.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 7 мес. назад #74303 от DeadElf79
полный код. я не знаю, почему у меня он работает, а у тебя - нет.
Code:
#---------------------------------------------------------------------------- # * [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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 7 мес. назад #74306 от Frog434
Сравнил 2 кода , оказалось что одну строчку поставил в #.
А так огромное спасибоhttp://rpg-maker.info/forum/ace/59713-ponizhenie-fps-custom-title-scene/reply/74303

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.110 секунд
Работает на Kunena форум