В этой статье не хватает ссылок на источники информации. |
Стриминг (англ. streaming) — в компьютерных играх подгрузка игровых данных, которые «скоро потребуются», прямо по ходу игры. Например: как только игровой персонаж приближается к городу, в фоновом режиме загружаются модели и текстуры города.
При повышении линейной плотности записи дискового накопителя в n раз (при тех же геометрических размерах, количестве головок и частоте вращения) в те же n раз повысится и скорость чтения; объём же увеличится в n² раз. Другими словами, при увеличении объёма жёсткого диска в 100 раз его скорость повысится всего в 10 раз. Поэтому загрузка игр, антивирусное сканирование, дефрагментация, форматирование и т. д. на современных (2009) компьютерах длится куда дольше, чем на компьютерах 10-летней давности. Хотя в играх эта разница несколько «скрадывалась» сжатием игровых данных, цифры налицо: Warcraft II на мощных компьютерах своего времени загружался за одну-две секунды; Warcraft III на мощных компьютерах своего времени — примерно за полминуты[1].
Излишне долгую загрузку первыми ощутили программисты под приставки PlayStation и PlayStation 2. Когда ПК стали способны обращаться к устройствам ввода-вывода, не потребляя ресурс процессора, стриминг стал широко применяться и на ПК. Одной из первых ПК-игр со стримингом был Diablo II: когда персонаж подходил к воротам уровня, то, что за воротами, было с большой вероятностью загружено.
Помимо решения проблемы долгой загрузки, стриминг позволяет делать огромные уровни, не умещающиеся целиком в памяти. Это важно для телевизионных приставок, у которых памяти, как правило, меньше, чем у ПК своего времени: например, у первой PlayStation было всего 4 мегабайта памяти (включая видеопамять)[2].
Программисту приходится решать следующие вопросы.
В каждом из проектов эти вопросы решаются по-своему — в зависимости от соотношения объёмов моделей, текстур, звуков и т. д.
Обычно поступают так. Наиболее низкий уровень детализации графики никогда не выгружается и служит «аварийным» решением, когда соответствующая модель или текстура внезапно потребовалась. Для того, чтобы не было «гонок», после каждого кадра загрузчик синхронизируется с движком, помечая уже загруженные части игры как «доступные». Остаётся только разработать некоторую метрику, которая определяет, насколько скоро текстура или модель будет нужна. Здесь уже шаблонов нет: например, в автосимуляторе трассу можно разбить на некоторое количество секторов и подгружать ближайшие к машине игрока; в шутере — на квадраты. Если игрок приближается к сектору, в котором спрятан гранатомёт, надо полагать, что потребуется не только модель гранатомёта, лежащего на уровне, но и модель того же гранатомёта в руках игрока, модель летящей гранаты, звуки стрельбы гранатомёта и эффекты взрыва.
Быстродействие диска максимально, если области, с которыми приходится иметь дело за одну транзакцию, находятся рядом. Поэтому важен и порядок расположения данных на диске. Чтобы меньше двигать головку, на DVD-играх часть данных приходится дублировать. Чтобы оптимально расположить информацию на DVD, используют эвристические методы наподобие генетического программирования.
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .