Одна общая причина заключается в том, что не всегда одинаково легко определить, понадобится ли ресурс в ближайшем будущем.
Так как вы использовали пейджинг ландшафта в качестве примера, я продолжу с этим.
Вполне разумно, если вы находитесь в данной сетке карты, чтобы загрузить все соседние сетки карты в фоновом режиме. Вы знаете, что пользователь может в лучшем случае ввести один из них. Когда они это сделают, вы можете выгрузить те, которые больше не примыкают, и загрузить те, которые сейчас есть. Это вы заметили.
А теперь представьте быстрое путешествие. Нет абсолютно никакого способа предсказать, куда пользователь может пойти. У них есть (обычно) почти вся карта на выбор. Предварительная загрузка всех возможных мест быстрого перемещения заняла бы слишком много памяти (в первую очередь вы могли бы также загрузить всю карту в память) и слишком много времени (при условии, что у вас не была предварительно загружена вся карта). Когда это произойдет? Когда они открывают диалог быстрого перемещения? Проблема станет только в несколько раз хуже!
Вот почему даже в большинстве игр с пейджингом без нагрузки все еще есть экраны загрузки при быстром путешествии. Также, если вы двигаетесь достаточно быстро, вы можете иногда запускать экраны загрузки даже в играх с картами без нагрузки (я помню, что делал это в TES Oblivion).
Теперь представьте, что это применимо к игровым ресурсам в целом, где отношения часто не очевидны. В конечном итоге вам придется либо загрузить все возможные варианты, либо начать гадать, что собирается делать пользователь. Гадание является дорогостоящим (как в разработке, так и в процессоре) и сложным беспорядком для программирования. Конкретные примеры:
- Сохранение файлов: вам нужно будет загрузить каждый файл сохранения до того, как пользователь достигнет экрана сохранения, или угадать, какой файл он может загрузить (последние 5 и т. Д.).
- Интерфейс: Многие стратегические игры меняют свой интерфейс в зависимости от вашей фракции. Вам нужно будет загрузить все возможные дизайны пользовательского интерфейса, прежде чем пользователь начнет свою игру.
- Игровой мир: в процедурно сгенерированных играх, таких как Minecraft или RTS, таких как Civilization, мир не существует, пока его не увидят, в разной степени. Предварительная загрузка это невозможно, так как они не существовали с самого начала; их предварительный расчет в лучшем случае можно выполнить аналогично предварительной загрузке, что не применимо в случае RTS.
Могут быть способы решения некоторых из этих проблем, но это стоит реальных денег, чтобы разобраться. Большинство геймеров допускают разумные экраны загрузки и, во всяком случае, склонны тратить больше на оборудование, чтобы смягчить их. Это рассматривается как аппаратная проблема, а не проблема игры , за исключением случаев, когда она чрезмерно чрезмерна или иным образом нарушает работу (например, загрузка в середине уровней).
И имейте в виду, фоновая загрузка не является бесплатной. Обычно современное использование фоновой загрузки ландшафта и некоторых файлов модели оказывает минимальное влияние, но если вы вдруг догадываетесь о множестве различных ресурсов, особенно если у вас нет надежных метрик и вам нужно выгрузить много ресурсов и загрузить лишние. Вы можете измельчить систему в пыль.
Идея фоновой загрузки состоит в том, чтобы использовать мертвые циклы для лучшего использования, но есть только так много мертвых циклов для использования. То же самое касается памяти - предварительная загрузка может существенно увеличить использование памяти в игре. С помощью экрана загрузки вы можете сбросить существующие ресурсы. Нет такой роскоши с фоновой загрузкой, это означает, что она может удвоить требования к памяти игры только на этот счет.