Важная информация

User Tag List

Показано с 1 по 9 из 9

Тема: Стабилизация скорости обработки

  1. #1
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,546
    Благодарностей: 856
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Post Стабилизация скорости обработки

    Вопрос следующий: в разные моменты работы игры колеблется загрузка проца - несколько противников на экране - всё за прерывание, всё бегает, десяток - уже больше прерывания и всё медленнее.

    Какие есть подходы для "выравнивания" течения времени в игре?
    Особо смущает возможные варианты турбы...

    Sanchez, newart говорят о дельта-тайминге, давайте обсудим возможные подходы.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    25.03.2013
    Адрес
    г. Лондон, Великобритания
    Сообщений
    948
    Благодарностей: 645
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я бы просто привязал исполнение к прерываниям. Т.е. программа должна осознавать, за сколько прерываний произошёл рендер (простой счётчик в обработчике прерывания). Далее - 2 варианта. Либо тормозить быстрые машины к скорости самой медленной (не романтично, но работать будет), либо пытаться подгонять хар-ки рендера к наблюдаемой скорости. Второе, имхо, в 2д неактуально.
    "introspec" читается как "интроспек". некоторые читают как "интроспец", но я никакой не спец. я спек.

  4. #3
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,546
    Благодарностей: 856
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    сейчас так и есть, в прерывании смотрю - всё-ли отработало, потом обновление - по методу Санчеса. можно считать кол-во прерываний, но что это даст? выравнивание до самого затупного места и дальше жизнь в задержке?
    или пусть пляшет с разной скоростью?

    в общем, беспокоит следующее - выбегает противник, такой быстрый, за ним ещё один скоростной, потом появляется ещё парень и они, уже толпой, не спешаа, двиигаааююютттссяя

  5. #4
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Благодарностей: 1071
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Есть два простых метода:
    а) игровая логика висит на прерываниях.
    б) игровая логика в главном цикле. Перед вызовом игровой логики смотрим, сколько прерываний прошло с прошлого раза. И либо вызываем логику соответствующее количество раз, либо шаг движения устанавливаем пропорционально.
    Взносы в призовой фонд конкурса "Твоя игра 5" принимаются с помощью PaуPal, ЯндексДенег или перевода на карту Сбербанка (см. http://ti5.retropc.ru)

  6. #5
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Благодарностей: 192
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я собираюсь жёстко ограничить кол-во объектов на экране, то есть не впускать лишних.
    Если врагов много, тормозить так или иначе придётся.

  7. #6
    Master
    Регистрация
    25.03.2013
    Адрес
    г. Лондон, Великобритания
    Сообщений
    948
    Благодарностей: 645
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hacker VBI Посмотреть сообщение
    сейчас так и есть, в прерывании смотрю - всё-ли отработало, потом обновление - по методу Санчеса. можно считать кол-во прерываний, но что это даст? выравнивание до самого затупного места и дальше жизнь в задержке?
    или пусть пляшет с разной скоростью?

    в общем, беспокоит следующее - выбегает противник, такой быстрый, за ним ещё один скоростной, потом появляется ещё парень и они, уже толпой, не спешаа, двиигаааююютттссяя
    Ну смотри. Пусть у тебя не то 1 фрейм, не то 2 (смотря сколько врагов). После рендера программа смотрит - нарендерили за фрейм. ОК, тогда враги шагают с половинным шагом (скорость позволяет). Если вышли за фрейм, тогда враги начинают шагать с единичным шагом. Т.е. в обоих случаях шаг на единицу делается за 2 фрейма, но в первом случае, когда врагов поменьше, подрастает плавность. В 2д это почти нереально использовать, имхо. Но в 3д имеет смысл.
    "introspec" читается как "интроспек". некоторые читают как "интроспец", но я никакой не спец. я спек.

  8. #7
    Master Аватар для SaNchez
    Регистрация
    22.12.2007
    Адрес
    г. Владивосток
    Сообщений
    796
    Благодарностей: 692
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от introspec Посмотреть сообщение
    Я бы просто привязал исполнение к прерываниям. Т.е. программа должна осознавать, за сколько прерываний произошёл рендер (простой счётчик в обработчике прерывания). Далее - 2 варианта. Либо тормозить быстрые машины к скорости самой медленной (не романтично, но работать будет), либо пытаться подгонять хар-ки рендера к наблюдаемой скорости. Второе, имхо, в 2д неактуально.
    Актуально, актуально.

    Hacker VBI, для начала определяешься, с какой скоростью (пикселей/прерывание) у тебя должен передвигаться тот или иной объект, затем считаешь сколько прерываний занял рендер предыдущего игроцикла и умножаешь получившееся на скорость. Все просто
    Или вызываешь логику объекта соответствующее число раз (так в surve сделал).
    Последний раз редактировалось SaNchez; 07.11.2013 в 14:12.

  9. #8
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Благодарностей: 1071
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Старая статья про это: http://www.zxpress.ru/article.php?id=8531
    Взносы в призовой фонд конкурса "Твоя игра 5" принимаются с помощью PaуPal, ЯндексДенег или перевода на карту Сбербанка (см. http://ti5.retropc.ru)

  10. #9
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,546
    Благодарностей: 856
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мужики, спасибо!!!
    вот это и есть дельточка, по ходу.

    у меня сейчас отдельный обсчёт, отдельно отображение. MVC, блина
    Последний раз редактировалось Hacker VBI; 07.11.2013 в 14:52. Причина: MVC, блина

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Скорости загрузки в ОЗУ
    от ASDT в разделе ZX Концепции
    Ответов: 56
    Последнее: 07.01.2011, 14:22
  2. Тест скорости
    от Strunov в разделе Программирование
    Ответов: 1
    Последнее: 13.02.2006, 16:11

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •