Портальная магия: как воссоздать механику порталов из Portal
Поэтапный разбор основной механики игры.
Автор YouTube-канала DigiDigger под ником Digit в 2017 году выпустил видео, в котором воссоздал порталы из серии Portal. Он показал принцип их работы и описал все тонкости, которые нужно знать, чтобы воссоздать их самостоятельно. Но помните, что автор ролика — не работник Valve, поэтому все его решения — это предположения о том, как разработчики Portal реализовали эту механику. Мы выбрали из видео главное.
Особенность порталов заключается в том, что через них можно не только перемещать объекты, но и смотреть, что происходит по ту сторону портала. Создать такой визуальный эффект не так уж просто. Первое, что нужно сделать — поставить камеры на каждый из них и транслировать изображение с камеры на втором портале.
Следующий шаг — сделать так, чтобы изображение менялось в зависимости от угла, под которым игрок смотрит на портал. Самый простой способ добиться этого — менять угол камеры на противоположном портале в соответствии с углом зрения игрока.
Но результат всё ещё выглядит неправильно, потому что изображение в камере учитывает только ракурс игрока, а не его удалённость от портала.
И это частично правильный подход, но он не решает проблему поля зрения. Её суть в том, что камера работает как широкоугольный объектив, который захватывает почти всё пространство комнаты. А это не соответствует тому, что видит игрок.
Чтобы решить эту проблему, автор ролика изменил масштаб картинки, которую передавала камера из второго портала.
Но всё это касалось только визуального аспекта порталов. Не менее важно правильно воссоздать их свойства с точки зрения механик и геймплея.
Чтобы телепортация происходила незаметно, нужно подобрать правильный момент для перехода. Если он будет слишком рано или поздно, то это сотрёт иллюзию плавной телепортации.
Так как игрок телепортируется не сразу же после того, как касается портала, а немного пройдя вперёд, возникает проблема с коллизией — герой просто не может пройти, так как стена, находящаяся за порталом, сдерживает его. Автор ролика не знает наверняка, как разработчики из Valve решили эту проблему, но он нашёл свой подход.
Когда игрок соприкасается с порталом, всё остальное окружение для него становится неосязаемым. Это привело к новой проблеме — игрок просто проваливался вниз.
Но порталы в Portal воспринимаются как осязаемый проход, например, игрок может упереться в их границу или стоять прямо в портале. Автор ролика добавил осязаемую границу в портале — когда игрок касался его, всё, кроме этой границы, становилось неосязаемым. Поэтому не возникало проблем с переходом через стену.
Всё это работает и с остальными игровыми объектами. Единственная сложность связана с моментом, когда предмет находится посередине между двумя порталами. На этом этапе создания механики предмет просто «перепрыгивает» через портал, что выглядит неестественно.
Завершающий штрих для создания корректно работающей механики порталов — сохранение скорости движения. По словам автора, это довольно простая задача: нужно лишь сохранить информацию о скорости при входе в портал и задать её при выходе.
Конечно, это не итоговые порталы из Portal, но автору удалось воссоздать базовые принципы, на основе которых работает механика:
- порталы выглядят реалистично и похожи на физический переход из одной точки в другую;
- игрок может перемещаться между порталами;
- объекты могут перемещаться между порталами;
- при перемещении сохраняется скорость.
Этих базовых принципов достаточно, чтобы понять принцип того, как устроены порталы в оригинальной игре.