Стриминг

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

Стриминг (англ. streaming) — в компьютерных играх подгрузка игровых данных, которые «скоро потребуются», прямо по ходу игры. Например: как только игровой персонаж приближается к городу, в фоновом режиме загружаются модели и текстуры города.

Содержание

Потребность в стриминге

При повышении линейной плотности записи дискового накопителя в n раз (при тех же геометрических размерах, количестве головок и частоте вращения) в те же n раз повысится и скорость чтения; объём же увеличится в n² раз. Другими словами, при увеличении объёма жёсткого диска в 100 раз его скорость повысится всего в 10 раз.

Этот факт хорошо известен пользователям со стажем: загрузка игр, антивирусное сканирование, дефрагментация, форматирование и т. д. на современных (2009) компьютерах длится куда дольше, чем на компьютерах 10-летней давности. Хотя в играх эта разница несколько «скрадывалась» сжатием игровых данных, цифры налицо: Warcraft II на мощных компьютерах своего времени загружался за одну-две секунды; Warcraft III на мощных компьютерах своего времени — примерно за полминуты. (Длительная, почти в минуту, загрузка Doom обусловлена неоптимальностью движка, подробнее см. Движок Doom.)

Излишне долгую загрузку первыми ощутили программисты под приставки Playstation и Playstation 2. Когда ПК стали способны обращаться к устройствам ввода-вывода, не потребляя ресурс процессора, стриминг стал широко применяться и на ПК.

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

Подходы

Программисту приходится решать такие вопросы.

  • Как загрузить игровые данные таким образом, чтобы пользователь не ощутил замедление.
  • Как не допустить «гонок» между загрузчиком и движком.
  • Что выгружать, что оставлять в памяти, что загружать.
  • Что делать, если нужных данных в памяти не оказалось.
  • Как максимально полно задействовать быстродействие диска.

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

Обычно поступают так. Наиболее низкий уровень детализации графики никогда не выгружается и служит «аварийным» решением, когда соответствующая модель или текстура внезапно потребовалась. Для того, чтобы не было «гонок», после каждого кадра загрузчик синхронизируется с движком, помечая уже загруженные части игры как «доступные». Остаётся только разработать некоторую метрику, которая определяет, насколько скоро текстура или модель будет нужна. Здесь уже шаблонов нет: например, в автосимуляторе трассу можно разбить на некоторое количество секторов и подгружать ближайшие к машине игрока; в шутере — на квадраты. Если игрок приближается к сектору, в котором спрятан гранатомёт, надо полагать, что потребуется не только модель гранатомёта, лежащего на уровне, а и модель того же гранатомёта в руках игрока, модель летящей гранаты, звуки стрельбы гранатомёта и эффекты взрыва…

Быстродействие диска максимально, если области, с которыми приходится иметь дело за одну транзакцию, находятся рядом. Поэтому важен и порядок расположения данных на диске. Чтобы меньше двигать головку туда-сюда, на DVD-играх часть данных приходится дублировать. Чтобы оптимально расположить информацию на DVD, используют эвристические методы наподобие генетического программирования.

См. также

Ссылки

DTF: Стриминг и эффективное чтение с DVD

Личные инструменты

Served in 0.056 secs.