Как работают порталы в portal
Технической начинке Portal свойственны особенности любой другой игры на Source — из-за открытого SDK можно легко понять назначение многих объектов и принципы работы движка в целом. А благодаря удобной консоли возможность заглянуть за пределы уровней есть без всяких модов — достаточно ввести команду noclip.
Выбрали самое интересное из нового выпуска Boundary Break, где блогер Shesez рассказывает о «закулисье» видеоигр.
В первую очередь Shesez отметил, что в Portal, как и в других играх на движке Source, пустота за пределами уровня не всегда выглядит как однотонное пространство. Иногда случается так, что она перестаёт «обновляться», из-за чего при перемещении камеры изображение уровня начинает дублироваться и рябить.
Также одна из загвоздок «закулисья» Portal заключается в том, что при попытке выбраться туда многие объекты исчезают с уровня.
Пропадают даже те предметы, которые хранятся в пустоте для того, чтобы появиться в нужный момент в нужном месте. К примеру, кубы, выпадающие из распределителя — чтобы их заметить, «за кадр» пришлось «выглядывать» совсем аккуратно.
Но что легко можно увидеть, так это объекты, которые спаунят энергетические шары. В игре они отображаются как большие красные точки, находящиеся далеко за границами локации.
Причём, на шестом уровне таких точек можно увидеть две — однако, по словам Shesez, задействована лишь одна из них, так как в локации всего одна энергетическая установка. Вторую, судя по всему, забыли убрать разработчики.
Чтобы лучше разобраться, блогер обратился к авторам пользовательских карт. Как выяснилось, в Source объекты не могут фактически храниться за пределами уровня — вместо этого их помещают в невидимые кубы с текстурами, которые в редакторах помечены как «no draw».
В самой же игре, если посмотреть на «no draw» изнутри, как раз и начинает появляться та самая рябь, о которой говорилось выше. То есть, технически настоящая «пустота» начинается лишь за пределами этих условных кубов.
Изображение специально обесцвечено для комфортного просмотраЗатем Shesez перешёл к классической части передач о «закулисье». Так выглядит локация с парковкой из концовки.
На ней, как выяснилось, припрятана пара сюрпризов. Например, маленькая коробка из под фасоли — в ней размещена камера игрока, когда его утаскивают обратно в лабораторию.
Другая находка — это радио. И если по нему выстрелить (в Portal можно подключить оружие из Half-Life 2), то. из него пойдёт кровь.
А всё потому, что здесь радиомагнитофон обозначен не как физический объект, а как NPC — и он ответственен за все звуковые эффекты в последней катсцене.
Через инструменты в Portal можно включить визуальное отображение всех триггеров. К примеру, на выходе с уровней почти всегда расположены скрипты, которые отвечают за воспроизведение фраз ГЛэДОС.
Здесь так же видно, что на лестнице расположен триггер — как только игрок его задевает, лестница обваливается.
А в случае с моментом уничтожения куба-компаньона всё слегка усложняется. В утилизаторе куб сначала пролетает через триггер, отвечающий за фразу ГЛэДОС, затем — за открытие двери, и уже потом за уничтожение куба.
В редакторе даже есть возможность отключить триггеры, ответственные за уничтожение кубов при проходе через поля антиэкспроприации. И так получится перенести их на следующий уровень.
Также Shesez рассказал, как работают сами порталы в игре. С визуальной точки зрения один портал отображает то, как выглядит место с перспективы второго, и не более — с другой стороны уровень не достраивается. А когда игрок проходит через него, в определённый момент он просто-напросто телепортируется в нужное место.
Лучше всего это видно в режиме от третьего лица, который также можно включить через консоль.
Вот так выглядит локация с тортом, которую игрок видит в главном меню после прохождения. Как выяснилось, слева расположена дверь — увидеть при нормальном ракурсе её никак нельзя.
В комнате с проектором, которую игрок может заметить в одной из локаций за стеклом, запрятана отсылка к Half-Life 2 — на одном из планшетов написано про HEV-костюм.
Если посмотреть на проектор вблизи, то становится виден номер модели и логотип EIKI — название реально существующей компании, создающей проекторы. Интересно, есть ли у Valve права на его использование?
А вот так выглядит самая последняя катсцена.
. но от третьего лица.
И комната с тортом без эффектов освещения. Ничего необычного.
Как настроить дозагрузкуконтента для тяжёлой игры
из-за чего при перемещении камеры изображение уровня начинает дублироваться и рябить.
Буфер цвета не чистится потому-что, раньше так экономили время гпу, сейчас эта операция почти бесплатная.
Также одна из загвоздок «закулисья» Portal заключается в том, что при попытке выбраться туда многие объекты исчезают с уровня.
Не проходят PVS тест. Дело в том, что потенциальная видимость всех сущностей запекается ещё на этапе компиляции карты, а поскольку видимость за картой не просчитана - энтити не проходят PVS тест.
К примеру, на выходе с уровней почти всегда расположены скрипты, которые отвечают за воспроизведение фраз ГЛэДОС.
Здесь так же видно, что на лестнице расположен триггер — как только игрок его задевает, лестница обваливается.
не, ну это шок-контент
Так устроены все игры🤷🏼♂️
Нормально с вами на дтф не поэпилептишь, конечно
А любовь? — Иллюзия. — А религия? — Распространённый суррогат веры. — Вы скептик. — Ничуть! Я дизайнер уровней
Это можно назвать Reverse engineering'ом ?
Скорее, видео про то, как геймер узнал про консоль и читы
Если конечная цель посмотреть примеры использования различных трюков, чтобы повторить их в своей игре на source, то вполне да.
Как работают порталы в серии игр Portal
В те золотые времена, когда Valve делали игры, а не продавали шапки, средь нескольких замечательных проектов вышла доселе никому неизвестная Portal, где подход к решению физических головоломок был можно сказать инновационным.
Виновницей таких лесных высказываний, как вы уже очевидно догадались, была отлично реализованная механика сотворения и пользования порталами. Уверен не один миллион игроков, балуясь внутриигровой физикой, задумывался о том как они работают, однако ответ скрыт за кучей нетривиальных хитростей, о которых статья и расскажет.
Что есть портал, камеры и рекурсия
Итак, начать стоит с того, что портал не является 3D моделью в обычном понимании, это - плоскость с текстурой портала. Можно предположить так же что это обыкновенная декаль, будто от выстрела, только побольше, однако портал может появится не везде и тут стоит понять как он вообще появляется.
После выстрела из портальной пушки, в его направлении летит луч и проверяет, может ли появится портал на встречающей его поверхности (и не мешает ли этому другой портал) , в случае успеха, спросив направление нормали, на ней под правильным заинверсированным углом появляется плоскость с натянутой текстурой.
Текстура зависит от того, оба ли портала задействованы : если нет - получите мыльное, заливающееся будто огнем месиво; если да - изображение на текстурах будут генерировать камеры.
Как оно видно ниже, к порталам привязано по камере, которые двигаются и поворачиваются относительно своего хозяина так же, как это делает Челл относительно другого портала. Именно поэтому, находясь далеко от одного из них, при приближении, камера так же будет приближаться и выходить из недр стены, создавая реалистичный эффект.
Затрагивая тему рекурсии - в случае двух расположенных напротив порталов, камера одного из них смотрит на другой, в котором в свою очередь он и виднеется. Не ограничивая количество итераций, такая бесконечная отрисовка текстуры в текстуре можно бестолково сожрать кучу ресурсов.
В движке Source, например, ограничение было в 9 итераций и это совершенно не бросалось в глаза, ибо главный герой не прозрачный, а чтобы заглянуть в "душу" портала, приходится тесниться к центру.
Старательно подобрав ракурс и уткнувшись в самую неживописную точку, можно узреть последний портал, что изображен в виде обычной его текстуры.
Дабы текстура с рекурсиями работала корректно, её отрисовка идет на кадр позже её генерации, так что незаметная задержка все же имеет место быть.
Перемещение и физика
Как вы уже наверняка поняли, передвижение и нахождение как бы меж двух порталов - тоже фикция. Достаточно в один кадр, при пересечении центра координат объекта, изменить его позицию в пространстве на ту, что при выходе с другого портала. Благодаря вышеописанным трюкам с камерой переход будет совершенно незаметным.
С физикой все тоже довольно просто - если скрипту не указано менять какие-либо переменные, он их и не трогает, поэтому вероятнее всего, при изменении позиции объекта действие сил не останавливается.
В подтверждении своих слов покажу небольшой пример с демки про разрушаемость машинок, статья о которой выйдет на днях :
Чтобы избавиться от подобного эффекта, мне пришлось усыплять компонент физики автомобиля на один кадр, дабы силы обнулились, тоесть физический движок NVIDIA PhysX, что есть в Unity, справляется с подобного рода задачами вполне логично.
Последней и самой неочевидной интересностью является клонирование входящих в портал предметов, Челл, например. Необходимо это для того, чтобы кусочек геометрии вылазил с другой стороны портала, а сделать это проще всего можно дублированием модели.
Клон так же повторяет все движения и повороты игрока относительно портала, другая же часть цельной модели кажется застревает в стене, но, учитывая наличие подходящих для портала поверхностей не только на стенах, но и на тонких платформах, модель обрезается шейдером.
Физика порталов ч.1
Итак, недавняя задача с порталами заставила меня серьезно задуматься о физике этих самых порталов. Своими исследованиями на эту тему я и хочу поделиться. Своей целью я ставил описание поведения тел при перемещении через портал и влияние порталов на классические, знакомые нам со школы законы физики. Исследования я старался проводить максимально систематизированно, основываясь на наблюдениях из игры, логике и здравом смысле. Главное правило – не плодить сущностей, к которым нет никаких предпосылок. Только наблюдения и выводы из них. Также замечу, что нам не важно, как технически реализованы порталы – все мы знаем, что в реальности они не существуют, и вряд ли будут существовать, так что это будет нашим единственным допущением. Порталы – существуют.
Начнем с простейшего эксперимента – у нас две комнаты, расположенные друг над другом. В нижней – мы, куб, скользкий пол (очень скользкий!), чтобы сила трения не мешала чистоте эксперимента, и оранжевый вход в портал. Наверху – всё тот же скользкий пол и синий вход в портал на той же стене. Итак, поехали:
Разумеется, все мы заранее знали, что произойдет – кубик заехал в портал внизу и выехал из портала наверху. Но давайте рассмотрим этот процесс повнимательнее. Для этого введем систему координат, отсчитывая координаты от нижнего левого угла нашего рисунка.
Первое, на что мы обратим внимание – время перехода между порталами. Как только какая-то часть куба погружается в портал внизу, она тут же выходит из портала наверху. Перемещение происходит мгновенно, нет ни момента, когда какая-то часть материи находится вне наблюдаемого нами мира.
Далее - изменение направления движения куба. До портала он двигался вправо, а после перемещения – влево. Некоторые спросят – ну а что такого в изменении направления, общая-то скорость та же осталась? Так вот, скорость – величина векторная. Как и импульс, являющийся произведением скорости и массы. Чтобы изменилось направление скорости, телу точно так же нужно ускорение – помните центростремительное ускорение вращающегося на нитке шарика? Его скорость по модулю была постоянной, но он всё время менял направление движения – не просто так, а за счет ускорения, направленного к центру. Даже в проекции на любую из осей, спроецированная скорость всегда будет меняться на значение спроецированного ускорения.
В общем мы не можем никак пренебречь этим изменением, мы вынуждены констатировать – скорость куба изменилась. Если мы спроецируем наши скорости на горизонтальную ось и будем считать, что изначальная скорость равна V, то окончательная получится равна –V, и суммарное изменение составит -2V! Порталы, не двигаясь и не оказывая никакого физического воздействия на куб, заставили его изменить скорость и, соответственно, импульс, без участия ускорения. Таким образом, либо порталы нарушают закон сохранения импульса, либо переход через портал является источником импульса.
Теперь обратим внимание на положение куба в начале и конце движения. Изменилась его высота над точкой отсчета – и это при том, что вертикальной скорости он не имел ни в один момент. Посмотрим, что на этот счет думает закон сохранения энергии. Так как трения в нашем высокотехнологичном эксперименте нет, кинетическая энергия куба была постоянной, так как модуль скорости не менялся, как и соответственно его квадрат. Ни какие другие энергии так же не менялись, кроме двух. Одна из них очевидна – потенциальная энергия куба. E = mgh, помните? Масса и ускорение свободного падения не менялись (ну если быть совсем точными, последнее изменилось, но совершенно незначительно для нашего эксперимента), а вот высота изменилась аж на целый этаж. Итого, куб приобрел потенциальную энергию в количестве mg(h1-h0) . Но я упомянул два изменения энергии, какое же второе? А второе – потенциальная энергия воздуха, вытесненного кубом из верхней комнаты в нижнюю. Однако вот незадача – вытеснил-то куб тот же объем воздуха, а вот плотность его значительно ниже, и как следствие, меньше суммарная масса. Итого, небольшой объем воздуха потерял потенциальную энергию во много меньшем объеме, чем сам куб. Сумма всех энергий увеличилась. Отсюда мы можем сделать вывод - либо порталы нарушают закон сохранения энергии, либо переход через портал является процессом, связанным с переходом неизвестного нам типа энергии в потенциальную и обратно. Так как количество возможных переходов через один и тот же портал неограничено, то если мы предположим существование некоей новой энергии, её количество также будет неограничено, то есть бесконечно – и это будет лишать закон сохранения энергии смысла. Итого, мы вынуждены остановиться на том, что порталы напрямую нарушают закон сохранения энергии.
А теперь вернемся к скоростям. Обратите внимание на средний рисунок – здесь порталы делят куб на две части. И мы наблюдаем интересную картину – часть куба движется ВЛЕВО, а часть – ВПРАВО. И при этом куб не разрывает на части, он остается целостным. Таким образом, порталы допускают движение частей сплошного твердого тела относительно друг друга с сохранением целостности тела.
Глядя на средний рисунок и оглядываясь на изменение импульса и энергии можем отметить, что объем куба, для которой произошло изменение, возрастает постепенно от нуля до всего куба целиком, и изменение энергии и импульса системы происходит не мгновенно в какой-то момент, а по мере прохождения материи через портал.
Теперь эксперимент номер два, поставим куб так, чтобы меньшая его часть стояла на полу, а большая – ушла в портал и торчала со стены. Вот так (левая половина рисунка):
Итак, наше новое наблюдение – части тела, находящиеся по разные стороны портала, могут быть подвержены различному воздействию одной и той же силы, а между собой взаимодействуют благодаря силе упругости.
Итак, вернемся к нашим порталам. Пожалуй, нам нужен ещё один эксперимент со статичными порталами. Вернемся в нашу скользкую комнату без трения и поставим два портала – один на северную стену, другой на восточную. Запнем кубик в северный портал и посмотрим, что будет, в этот раз возьмем вид сверху, а заодно проведем оси координат:
Но это лишь первая, самая простая часть физики порталов. С неподвижными порталами мы много работали в игре, и в принципе всё и так о них знаем. Задача проведенного исследования состоялась в сборе информации, которая поможет нам узнать, как вели бы себя порталы, если бы они могли располагаться на подвижных поверхностях. Для этого исследования мы будем использовать законы сохранения только при использовании выведенного правила переноса системы отсчета через портал, а предварительно будем пытаться воспроизвести поведение объектов и порталов через законы классической физики, примененные к происходящему с каждой стороны портала по-отдельности.
Портальная магия: как воссоздать механику порталов из Portal Статьи редакции
Автор YouTube-канала DigiDigger под ником Digit в 2017 году выпустил видео, в котором воссоздал порталы из серии Portal. Он показал принцип их работы и описал все тонкости, которые нужно знать, чтобы воссоздать их самостоятельно. Но помните, что автор ролика — не работник Valve, поэтому все его решения — это предположения о том, как разработчики Portal реализовали эту механику. Мы выбрали из видео главное.
Особенность порталов заключается в том, что через них можно не только перемещать объекты, но и смотреть, что происходит по ту сторону портала. Создать такой визуальный эффект не так уж просто. Первое, что нужно сделать — поставить камеры на каждый из них и транслировать изображение с камеры на втором портале.
В синий портал транслируется изображение из камеры в оранжевом портале и наоборот Получившееся изображение абсолютно плоское, и оно никак не меняется при смене ракурсаСледующий шаг — сделать так, чтобы изображение менялось в зависимости от угла, под которым игрок смотрит на портал. Самый простой способ добиться этого — менять угол камеры на противоположном портале в соответствии с углом зрения игрока.
Чтобы создавался эффект, словно портал — это обычное окно, угол камеры должен быть равен углу зрения игрока относительно портала При смене ракурса должно меняться и изображение в порталеНо результат всё ещё выглядит неправильно, потому что изображение в камере учитывает только ракурс игрока, а не его удалённость от портала.
Дело в том, что поле зрения игрока не соответствует полю зрения камеры Первое решение, которое приходит на ум — отодвинуть камеру так, чтобы она находилась на том же расстоянии от стены, что и игрокИ это частично правильный подход, но он не решает проблему поля зрения. Её суть в том, что камера работает как широкоугольный объектив, который захватывает почти всё пространство комнаты. А это не соответствует тому, что видит игрок.
Поле зрения (field of view, FoV) камеры не соответствует полю зрения игрокаЧтобы решить эту проблему, автор ролика изменил масштаб картинки, которую передавала камера из второго портала.
Если изменить масштаб изображения так, чтобы оно соответствовало разрешению камеры, то всё встанет на свои местаНо всё это касалось только визуального аспекта порталов. Не менее важно правильно воссоздать их свойства с точки зрения механик и геймплея.
Чтобы телепортация происходила незаметно, нужно подобрать правильный момент для перехода. Если он будет слишком рано или поздно, то это сотрёт иллюзию плавной телепортации.
В этом примере телепортация происходит слишком рано, что разрушает иллюзию бесшовного перехода Чтобы переход был незаметным, телепортация должна происходить ровно в тот момент, когда игрок пересекает поверхность порталаТак как игрок телепортируется не сразу же после того, как касается портала, а немного пройдя вперёд, возникает проблема с коллизией — герой просто не может пройти, так как стена, находящаяся за порталом, сдерживает его. Автор ролика не знает наверняка, как разработчики из Valve решили эту проблему, но он нашёл свой подход.
Когда игрок соприкасается с порталом, всё остальное окружение для него становится неосязаемым. Это привело к новой проблеме — игрок просто проваливался вниз.
Когда игрок соприкасался с порталом, всё остальное окружение становилось для него неосязаемым, поэтому он просто проваливался внизНо порталы в Portal воспринимаются как осязаемый проход, например, игрок может упереться в их границу или стоять прямо в портале. Автор ролика добавил осязаемую границу в портале — когда игрок касался его, всё, кроме этой границы, становилось неосязаемым. Поэтому не возникало проблем с переходом через стену.
Всё это работает и с остальными игровыми объектами. Единственная сложность связана с моментом, когда предмет находится посередине между двумя порталами. На этом этапе создания механики предмет просто «перепрыгивает» через портал, что выглядит неестественно.
Здесь очень хорошо виден переход из одного портала в другой Автор считает, что в Portal не возникает этой проблемы из-за того, что игра создаёт копию предмета, которая находится ровно в той же позиции относительно портала, что и оригинальный объект Digit использовал этот подход, чтобы объекты в промежуточном состоянии выглядели корректноЗавершающий штрих для создания корректно работающей механики порталов — сохранение скорости движения. По словам автора, это довольно простая задача: нужно лишь сохранить информацию о скорости при входе в портал и задать её при выходе.
Конечно, это не итоговые порталы из Portal, но автору удалось воссоздать базовые принципы, на основе которых работает механика:
- порталы выглядят реалистично и похожи на физический переход из одной точки в другую;
- игрок может перемещаться между порталами;
- объекты могут перемещаться между порталами;
- при перемещении сохраняется скорость.
Этих базовых принципов достаточно, чтобы понять принцип того, как устроены порталы в оригинальной игре.
Как настроить дозагрузкуконтента для тяжёлой игры
автор ролика — не работник Valve, поэтому все его решения — это предположения о том, как разработчики Portal реализовали эту механику
Звучит правдоподобно, особенно с учетом того, что в халф-лайф 2 Вальв игрались с тем, что изображения на телевизорах - это не предварительно записанные видео, а трансляции объектов и действий, совершаемых в других комнатах ред.
Конечно правдоподобно звучит, особенно с учетом того, что сами Valve это рассказывали еще 12 лет назад ред.
Сейчас так все делают
Ну сейчас. А 2 Халфе вот-вот 16 лет исполниться.
Ой, прошу прощения. Я не хотел нарушать правила Русского языка. Мозги плывут на карантине. ред.
Слово "русского" с маленькой буквы :)
Кроме самих вальв, которые сделали видеозвонок Аликс с Илаем в виде видеофайла:)
Скорее всего, это была оптимизация под ВР. Там же надо рендерить два изображения разом и желательно с фпс больше 60.
лет вы дождётесь своего ответа, с уважением Фанат серии Portal ред.
Не все выкупили анноунсера, эх.
В нулевых зеркала работающие через Render to Texture и Stencil buffer были обычным делом в играх и входили в любой туториал для начинающих. Потом, видимо с засилием готовых движков, у всех отвалились руки и вместо зеркал стали вставлять серые мыльные текстуры хорошо если хотя бы c рефлекшн мепингом заранее отрендереного окружения. И теперь нормально работающее зеркало или портал без RTX вызывает удивление "о боже магия".
Тоже удивляюсь тому, как раньше спокойно делали работающие зеркала (не важно каким способом, но они работали), а сейчас это уже непосильная задача. Словно древние утерянные технологии.
Серьезно? Статья с описанием видео? А если я напишу статью, в которой буду описывать эту статью — это тоже годнота будет?
Более того, про копию предмета (и её физику) вольво ещё в первом портале сами рассказывали.
Вообще, это видео не покрывает один очень важный момент: если создавать копию для анимированного объекта, то ей нужно синхронизировать анимацию, что не всегда бывает возможно. В этом случае вместо копии объекта можно использовать специальный шейдер, отсекающий по плоскости и перемещающий вершины относительно портала.
Это прекрасный формат. Статью сильно удобнее и быстрее прочитать, чем видео посмотреть (про что он там 8 минут рассказывает, когда есть 4 простых тезиса?).
Видео к слову гораздо понятнее подано, не содержит практически ничего лишнего, а статья является простым переписыванием текста, а не "выбрали главное". Выбрали всё и переписали. В статье из-за перевода и картинок-гифок вместо цельного видео я сломался на моменте с "зумом", посмотрев видео стало в разы понятнее о чём речь.
Спасибо тем людям, которые делают пересказ видео в статье, еще и с гифками. Смотреть видосы не всегда удобно (особенно бесит, когда идей в видео на два абзаца, а само видео полчаса идёт)
Спасибо тем людям, которые пишут самостоятельные статьи с подробными выкладками, а не доделывают за авторов видосиков то, что те сами не в состоянии сделать (выложить «тутор» в текстовом виде).
Вот на днях смотрел материал по Prey(не от беседки), там реализация порталов тоже была хороша, но управлять ими нельзя было. Можно было даже убить себя стреляя в спину. Ну и в целом в своё время была крутая игра.
Этот материал случаем не Разбор Полётов?
помню прошел ее на одном дыхании. жаль не вышло продолжения с Томми
Читал как устроены порталы проходя игру с комментариями разработчика и охреневал как это им удалось: мои познания механики трехмерных движков закончились на Вольфе 91-года, дальше уже так - выборочно ) ред.
Могу вспомнить спидраны по порталу, и там народ становился внутрь портала, совершал выстрел, и дальше мог проходить сквозь стены, так что насчет отключения коллизий звучит правдоподобно
Читайте также: