Портальная магия: как воссоздать механику порталов из Portal

Поэтапный разбор основной механики игры.

Автор YouTube-канала DigiDigger под ником Digit в 2017 году выпустил видео, в котором воссоздал порталы из серии Portal. Он показал принцип их работы и описал все тонкости, которые нужно знать, чтобы воссоздать их самостоятельно. Но помните, что автор ролика — не работник Valve, поэтому все его решения — это предположения о том, как разработчики Portal реализовали эту механику. Мы выбрали из видео главное.

Особенность порталов заключается в том, что через них можно не только перемещать объекты, но и смотреть, что происходит по ту сторону портала. Создать такой визуальный эффект не так уж просто. Первое, что нужно сделать — поставить камеры на каждый из них и транслировать изображение с камеры на втором портале.

В синий портал транслируется изображение из камеры в оранжевом портале и наоборот
В синий портал транслируется изображение из камеры в оранжевом портале и наоборот
Получившееся изображение абсолютно плоское, и оно никак не меняется при смене ракурса

Следующий шаг — сделать так, чтобы изображение менялось в зависимости от угла, под которым игрок смотрит на портал. Самый простой способ добиться этого — менять угол камеры на противоположном портале в соответствии с углом зрения игрока.

Чтобы создавался эффект, словно портал — это обычное окно, угол камеры должен быть равен углу зрения игрока относительно портала
Чтобы создавался эффект, словно портал — это обычное окно, угол камеры должен быть равен углу зрения игрока относительно портала
При смене ракурса должно меняться и изображение в портале

Но результат всё ещё выглядит неправильно, потому что изображение в камере учитывает только ракурс игрока, а не его удалённость от портала.

Изображение всё ещё выглядит некорректно
​Дело в том, что поле зрения игрока не соответствует полю зрения камеры
​Дело в том, что поле зрения игрока не соответствует полю зрения камеры
​Первое решение, которое приходит на ум — отодвинуть камеру так, чтобы она находилась на том же расстоянии от стены, что и игрок
​Первое решение, которое приходит на ум — отодвинуть камеру так, чтобы она находилась на том же расстоянии от стены, что и игрок

И это частично правильный подход, но он не решает проблему поля зрения. Её суть в том, что камера работает как широкоугольный объектив, который захватывает почти всё пространство комнаты. А это не соответствует тому, что видит игрок.

​Поле зрения (field of view, FoV) камеры не соответствует полю зрения игрока
​Поле зрения (field of view, FoV) камеры не соответствует полю зрения игрока

Чтобы решить эту проблему, автор ролика изменил масштаб картинки, которую передавала камера из второго портала.

Если ​изменить масштаб изображения так, чтобы оно соответствовало разрешению камеры, то всё встанет на свои места
Если ​изменить масштаб изображения так, чтобы оно соответствовало разрешению камеры, то всё встанет на свои места
Финальный вариант визуального эффекта

Но всё это касалось только визуального аспекта порталов. Не менее важно правильно воссоздать их свойства с точки зрения механик и геймплея.

Чтобы телепортация происходила незаметно, нужно подобрать правильный момент для перехода. Если он будет слишком рано или поздно, то это сотрёт иллюзию плавной телепортации.

В этом примере телепортация происходит слишком рано, что разрушает иллюзию бесшовного перехода
Чтобы переход был незаметным, телепортация должна происходить ровно в тот момент, когда игрок пересекает поверхность портала

Так как игрок телепортируется не сразу же после того, как касается портала, а немного пройдя вперёд, возникает проблема с коллизией — герой просто не может пройти, так как стена, находящаяся за порталом, сдерживает его. Автор ролика не знает наверняка, как разработчики из Valve решили эту проблему, но он нашёл свой подход.

Когда игрок соприкасается с порталом, всё остальное окружение для него становится неосязаемым. Это привело к новой проблеме — игрок просто проваливался вниз.

Когда игрок соприкасался с порталом, всё остальное окружение становилось для него неосязаемым, поэтому он просто проваливался вниз

Но порталы в Portal воспринимаются как осязаемый проход, например, игрок может упереться в их границу или стоять прямо в портале. Автор ролика добавил осязаемую границу в портале — когда игрок касался его, всё, кроме этой границы, становилось неосязаемым. Поэтому не возникало проблем с переходом через стену.

Всё это работает и с остальными игровыми объектами. Единственная сложность связана с моментом, когда предмет находится посередине между двумя порталами. На этом этапе создания механики предмет просто «перепрыгивает» через портал, что выглядит неестественно.

Здесь очень хорошо виден переход из одного портала в другой
​Автор считает, что в Portal не возникает этой проблемы из-за того, что игра создаёт копию предмета, которая находится ровно в той же позиции относительно портала, что и оригинальный объект
​Автор считает, что в Portal не возникает этой проблемы из-за того, что игра создаёт копию предмета, которая находится ровно в той же позиции относительно портала, что и оригинальный объект
Digit использовал этот подход, чтобы объекты в промежуточном состоянии выглядели корректно

Завершающий штрих для создания корректно работающей механики порталов — сохранение скорости движения. По словам автора, это довольно простая задача: нужно лишь сохранить информацию о скорости при входе в портал и задать её при выходе.

Портальная магия: как воссоздать механику порталов из Portal

Конечно, это не итоговые порталы из Portal, но автору удалось воссоздать базовые принципы, на основе которых работает механика:

  • порталы выглядят реалистично и похожи на физический переход из одной точки в другую;
  • игрок может перемещаться между порталами;
  • объекты могут перемещаться между порталами;
  • при перемещении сохраняется скорость.

Этих базовых принципов достаточно, чтобы понять принцип того, как устроены порталы в оригинальной игре.

280280
28 комментариев

автор ролика — не работник Valve, поэтому все его решения — это предположения о том, как разработчики Portal реализовали эту механикуЗвучит правдоподобно, особенно с учетом того, что в халф-лайф 2 Вальв игрались с тем, что изображения на телевизорах - это не предварительно записанные видео, а трансляции объектов и действий, совершаемых в других комнатах

28
Ответить

Конечно правдоподобно звучит, особенно с учетом того, что сами Valve это рассказывали еще 12 лет назад

42
Ответить

Сейчас так все делают

6
Ответить

Почти лонгрид (Почти, т.к. тут особо и не почитаешь, так как текста тут меньше, чем в указанном документе Российской Федерации котором говорится о длине Лонгрида, и это, очевидно, мало (Принят данный документ в 11 областях, 4 регионах, 1 городе фед. назначения)) - достойный фаната Portal. Говорю от лица (т.е. от себя), фаната Portal. То, что я фанат Portal подтверждено лично компанией Valve и Aperture Science, подтверждён факт сего также тремя референтами, которые лично заверили меня фанатом Portal. Если вам что-то не нравится в этом, то вы можете послать одному из референтов сообщение и через 20~ лет вы дождётесь своего ответа, с уважением Фанат серии Portal 

20
Ответить

Не все выкупили анноунсера, эх....

1
Ответить

В нулевых зеркала работающие через Render to Texture и Stencil buffer были обычным делом в играх и входили в любой туториал для начинающих. Потом, видимо с засилием готовых движков, у всех отвалились руки и вместо зеркал стали вставлять серые мыльные текстуры хорошо если хотя бы c рефлекшн мепингом заранее отрендереного окружения. И теперь нормально работающее зеркало или портал без RTX вызывает удивление "о боже магия".

6
Ответить

Тоже удивляюсь тому, как раньше спокойно делали работающие зеркала (не важно каким способом, но они работали), а сейчас это уже непосильная задача. Словно древние утерянные технологии.

3
Ответить