Споры о фаст-тревеле в Spider-Man 2 начались ещё до релиза игры – сначала кто-то показал, насколько он быстрый, потом кто-то в это не поверил. Из-за этого разработчики попытались объяснить, что никто никого не обманывает.
Во время прохождения мне стало интересно, а как всё-таки он работает. Игры я никогда не разрабатывал, поэтому всё написанное – просто рассуждения, которые могут быть очень далеки от фактической реализации.
Мысль первая – какую бы точку ни выбрал игрок, после перемещения Человек-Паук всегда будет лететь с юга на север.
Кажется мелочью, но в этом случае игра всегда знает где появится персонаж и в каком направлении он будет двигаться. Может ли это повлиять на скорость загрузки? Думаю, да.
Мысль вторая – очень редко игрок попадёт именно в ту точку, которую выбирал при зажатии кнопки перемещения.
Во время зажатия кнопки перемещения точка, которую выбрал игрок, может немного сместиться. Вполне возможно, что таким образом игра одновременно решает две задачи – не помещать игрока в тупиковые локации/узкие проулки и упростить себе процесс загрузки.
Мысль третья – из-за заданий игрок телепортируется ещё дальше
Фаст-тревел к некоторым заданиям может сместить точку сильнее, чем обычно. Вряд ли это как-то влияет на систему перемещения, скорее всего это обусловлено заданием (за это расстояние персонаж может поговорить по телефону или выдать реплику).
Мысль четвёртая – некоторые районы не поддерживают фаст-тревел (Кони-Айленд)
Ещё на карте есть некоторые районы, в которых фаст-тревел вообще не работает – Кони-Айленд, к примеру.
Мысль пятая – пролёт персонажа после перемещения – скрытая загрузка
После перемещения контроль над персонажем возвращается через пару секунд – возможно, этого времени достаточно, чтобы загрузить весь остальной мир вокруг игрока.
Что в итоге
1. На карте скорее всего размечены дороги и перекрёстки, на которых после фаст-тревела может появиться персонаж;
2. Во время нажатия кнопки фаст-тревела игра уже точно знает куда отправится персонаж (дальнейшее зажатие просто показывает точку игроку);
3. Зная, что персонаж полетит с юга на север карты, игра может пометить нужные ассеты для загрузки (если кнопка останется зажатой);
4. В момент перемещения грузятся отмеченные ассеты;
5. Пока над персонажем нет контроля, загружается остальной мир.