27 сентября 2021 27.09.21 21 10K

Ищем глубину лаборатории из Portal 2

+78
Лучший блог недели
1000 ₽

Примечание

Привет, уважаемый #USER_NAME#! Это маленький сиквел к моему тексту про цитадель, который я публиковал тут несколько месяцев назад. На удивление, многим он вкатил, так что я решил, что если жизнь даёт тебе лимоны, то нужно давить лимонад. Далее нас ждёт немного аналитической работы и погружение под капот некоторых локаций  Portal 2. Данный блог — это текстовая адаптация видео, которое будет прикреплено ниже (или просто текст сценария, по которому я читал текст для видео). Если вашему глазу милее текст, то вы его можете увидеть чуть ниже видео, но я рекомендую именно видеоформат. А теперь погнали!

 

Видео версия блога

После работы над прошлым видео у меня осталось небольшое количество материалов, о которых бы хотелось рассказать. Касаться они будут уже не  Half-Life 2, а другой игры из той же вселенной, созданной на движке Source, а именно —  Portal 2. Вообще, в играх существует не так уж и много вещей, которые можно измерить и представить их в реальности. В  Half-Life 2 было только несколько элементов дизайна игры, которые хотелось проверить в реальности. Скажем, что это может быть «Цитадель и её высота», и разве что прототип реального места действия игры.

На этом вопросы по игре лично у меня заканчиваются. Другого такого бреда в моей голове больше не появляется. Высота цитадели — единственная вещь, которую хотелось бы проверить в реальности. Мир Half-Life выполнен с размахом, и раз уж он объединяет в себе и другие игры, то в них должно быть что-то такое же монструозное. И если для  Half-Life 2 этой вещью является Цитадель, то для  Portal 2 — это сам комплекс Aperture Science, в стенах которого разворачивается сюжет обеих игр серии.

На протяжении всей игры мы буквально как пушечное ядро летаем в огромных тестовых камерах, размер которых порой напоминают огромный стадион. Им нет конца и края. Это огромный, бесконечный город, который объединён в одно огромное здание. И тут парадоксально то, что несмотря на размах этих тестовых камер, в течении всей игры на нас почти незаметно давит это ужасающее чувство клаустрофобии. За очередной комнатой будет ещё одна комната. После каждой лифт будет опускать нас всё ниже и ниже. И при взгляде на окна, которые встречаются в этих комнатах можно заметить, что горит в них не свет солнца, а люминесцентной лампы. В течении всей первой части  Portal нам не дают понять где мы находимся. Это абсолютно пустые помещения какой-то лаборатории, где единственное разумное создание, показывающее наличие интеллекта — это бесчувственный, лишённый любой человеческой эмпатии робот GLaDOS. Давно покинутое людьми, управляемое безумной машиной, испытательное поле для одного тебя. И я отчётливо помню тот самый момент, в самом конце игры, когда после уничтожения GLaDOS что-то нас подхватывает, поднимает в воздух и выбрасывает на улицу. Мы видим снаружи простую парковку, по которой разбросаны обломки, но нет ни одного здания на горизонте. Простая парковка посреди леса. Эта сцена сильно напоминает мне момент из Матрицы, когда Нео и Тринити на своём корабле на секунду воспаряют над облаками, и после момента радости солнечному свету падают обратно в тёмную бездну.

 

Отрывок из фильма «Матрица 3»

Также и в игре  Portal после минутки просветления мы обратно возвращаемся к сдавливающим нас стенам, пролетаем между километрами коммуникаций комплекса куда-то в самую его глубь, чтобы узнать, что на самом деле «Cake isn’t a lie».

 

В этот момент игрок понимает, что всё это время мы находились глубоко под землёй. И мозг пытается просто навскидку представить и понять, как эти комнаты размерами со стадион поместились там под землёй? И насколько глубоко под землю простирается комплекс Aperture Science?

Тут не будет каких-то громких откровений как в прошлом, потому что этот вопрос поднимался на форумах не так часто, и на Reddit я его находил только в достаточно скромных тредах на десяток комментов максимум. Однако на вики по игре, как и в случае с Half-Life, написана чёткая цифра. Вот что о размерах пишут на одном из таких вики.

Центр обогащения чрезвычайно велик, даже по стандартам, установленным такими объектами, как Исследовательский комплекс Черная Меза, который по сравнению с ним ничтожен. Соляная шахта состоит из девяти вертикальных стволов глубиной не менее 4000 метров каждая и шириной в сотни метров. Внутри кавернозных шахт находится большое количество пространства, которое не используется Aperture, и установки часто подвешены над огромными обрывами, которые уходят глубоко в шахты. Между Центром обогащения и испытательными шахтами находится большой люк, который в открытом состоянии позволяет лифту соединять первоначальный объект с современным. Через этот соединительный люк протекает также система труб Mobility Gel. Современный объект поддерживается множеством больших пружин, вероятно, сетью сейсмических изоляторов, чтобы предотвратить воздействие нестабильности шахтных стволов на чувствительное исследовательское оборудование.

В реальном мире шахты и пещеры бывают разные. Это всегда прорытый искусственно или естественным путём тоннель под землёй, который в ширину обычно бывает не больше нескольких десятков метров. Каверна же — это большая полость под землёй. Они бывают разные, одни могут быть образованы соляными отложениями, другие подземными водоёмами. Если говорить о реальных подземных полостях, то известны и поистине огромные. В России, например, печально известен город Березняки, который год за годом продолжает проваливаться под землю. Там с советских времён разрабатывалось соленое месторождение, и по мере выработки полости освобождались. В некоторых местах эти полости могут иметь высоту до сотни метров. Только представьте, что на земле стоит девятиэтажка, а под ней пустое пространство глубиной в 27 таких же этажей. Вполне себе подходит как кандидат на место строительства лаборатории исследования природы порталов и человеческой стойкости. Ещё один пример — антарктическое подземное озеро «Восток», самое большое подводное озеро, которое на протяжении 15 миллионов лет было спрятано от окружающего мира трёх-киллометровым слоем льда. Глубина этого озера может доходить уже до 800 метров, что примерно сопоставимо с высотой самых высоких небоскрёбов. Также может быть, что каверна находится под ещё одним естественным углублением в земле, как например подземное озеро острова Оуи в Ирландии, которое находится на 50 метров ниже другого озера. В общем, кандидатов на застройку в нашей реальности достаточно много, но они так и не дотягивают до умопомрачительных 4000 метров.

Город Березняки. Как-то так, наверное, может выглядеть Aperture Science на поверхности.
Город Березняки. Как-то так, наверное, может выглядеть Aperture Science на поверхности.

Но даже будь у нас в распоряжении здание на глубине 4 километров, там было бы просто невозможно находится. Всё дело в крайне высокой температуре под землёй. Cчитается, что температура в ядре и мантии земли составляет в среднем 6000 и 4000 градусов по Цельсию соответственно. Эти температуры просто трудно представить, но и достигаются они в сотнях и тысячах километрах под землёй. Но даже не смотря на это, относительно не глубоко температура тоже очень высока. Например, максимальная температура была измерена и зафиксирована на глубине около 6000 метров и составила 274 градуса по Цельсию. Это примерно на 100 градусов выше той температуры, при которой вы запекаете мясо в духовке. Содержать здание на такой глубине скорее всего не очень реально, потому что физику не обманешь. Тепло — это энергия, которая не может просто так испарится.

К счастью, если конкретно измерить глубину залегания лаборатории Aperture Science в игре  Portal 2, то можно в итоге узнать, могла бы она существовать в реальности или нет? Для этого как и в прошлый раз нам нужно декомпилировать архив с игровым контентом на нужной нам карте, открыть всё в Hammer Tools или Blender, и замерить всё линейкой. Ничего сложного.

sp_a3_00
sp_a3_00

Первый и самый очевидный способ: зная скорость и время падения мы можем высчитать пройденное расстояние. Объектом нашего исследования станет карта sp_a3_00. Сперва перейдём на требуемую локацию, и сразу же откроем консоль. Теперь введём команду, которая добавит нам к экрану информацию с нашими координатами, и также будет нам показывать информацию о скорости перемещения. Теперь нам нужно лишь засечь время, снять игру с паузы и дождаться падения. Проведя все требуемые расчёты мы получим требуемую цифру.

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

Вводим следующие команды в консоль:

r_drawclipbrushes — эта команда отображает на экране элемент, который называется Clip Brushes, или также его можно назвать «невидимой стеной». Это элемент, который поваляет создать невидимую структуру, благодаря которой решаются многие проблемы с левел дизайном любой игры и локации выполненной на движке Source. К примеру, чтобы игроки не застревали на выступах вдоль стен. Эти структуры прозрачны и незаметны. Они пропускают через себя рэгдолы, физические объекты, но не пропускают игрока и ботов. Абсолютно необходимый инструмент любого левел-дизайнера. И как видите, тут игрок окружён именно такой структурой. Видимо, он стоит на месте и просто не имеет физической способности передвигаться, даже со включенным параметром noclip.

Это меня заинтриговало, тут я решил разобраться в строении уровня. Учитывая что мы достаточно долго летим вниз, можно предположить, что этот уровень должен быть одним из самых больших в игре. Проверить это можно в одной из утили из набора модера для движка Source. Каждая карта из игры лежит в отдельной директории в виде отдельного файла. Когда мы переходим на новый уровень игра запрашивает файл с нужным названием и загружает именно ту локацию, которая нужна по игре. Сам файл представляет собой архив, в котором лежит информация о моделях, самом игровом поле, текстуры, анимации и ссылки на ресурсы, которые могут подтягиваться из sdk. Данная утилита может проверить этот файл на целостность и работоспособность. Грубо говоря она показывает, прогружается ли вся информация из этого архива или нет. Интересно тут то, что эта программа также показывает и размеры локации по осям X, Y и Z. Результаты отображаются в Hammer Unit-ах. Мы уже говорили о них в прошлом видео, если забыли, то советую пересмотреть.

Удивительно, но утила сообщает нам о том, что сама по себе локация крайне маленькая. Всего 13700 h/u в высоту. Это говорит нам о том, что уровень строится более интересным образом. Игрок находится в невидимой коробки, посреди маленькой комнаты с невидимыми стенами. Всё то, что находится в самой комнате — отрисовывается, а всё то, что за ней просто не отображается. Чтобы проверить так ли это — вернёмся в игру и введём ещё две команды.

mat_luxels 1 — эта команда отображает нам сетку на каждой модельке, которая появляется на уровне.

mat_leafvis 1 — эта команда отображает так называемые «Чанки», или условные блоки, в которых находится игрок и к которой прогружается тот или иной контент.

Сперва посмотрим на них. Как вы видите, там где находится игрок — появляется синий параллелепипед, а если выйти за его рамки, то начнёт отображаться соседний. Если на уровне в трубе мы будем действительно падать, то эти Чанки будут меняться. Теперь перейдём к следующей команде, которая отображает нам сетку на каждой модельке. Эта сетка поможет нам увидеть, прорисована ли труба изначально, или она появляется частями по мере того, как сама труба движется вверх через нас.

Присмотритесь, там в дали силуэт проступает.
Присмотритесь, там в дали силуэт проступает.

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

Любой опытный спидраннер или сёрфер из  CSGO может чисто на вскидку сказать с какой скоростью движется окружение. Представим, что по ощущениям скорость будет около 1500 u/s. Если представить, что получится?

Считаем 1500 u/s * 75 секунд сцены. И мы получаем 112500 юнитов, а 16 юнитов равны 1 футу. Считаю 112500 юнитов делим на 16 и выходит 7031 футов, или 2143 метра. Оставим эту цифру в голове. Попробуем разобрать файл с картой.

Переходим в папку с игрой и открываем директорию, в которой лежат файлы самих локаций. Как мы помним, на уровне sp_a3_00 есть огромный Чанк, в который и прогружается вся труба целиком. Конвертируем карту в уже привычный мне obj-файл и открываем его в Blender-е. Мы видим тут два огромных параллелепипеда.

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

Единственное, что теперь нас отделяет от ответа на вопрос — это линейка из инструментария Blender-а. И теперь я могу уверенно заявить, что глубина научного комплекса Aperture Science составляет 2500 метров. Считая глубину навскидку я ошибся всего-то на несколько сот метров. А значит и эту информацию в википедии можно поправить. Я надеюсь вам было интересно узнать столь бесполезный, но очень интересный факт.


Лучшие комментарии

Там же на стенках туннеля таблички висят с глубиной. Хотя… если мерить и вычислять, то мерить и вычислять по полной!

Примем то, что падение длилось 75 секунд. Их не кидали силой вниз, т.к. произошел обрыв лифта после ударов. То есть по сути это было свободное падение. Ускорение свободного падения равно 9,8 м/с2. Формула пути равноускоренного движения с начальной нулевой скоростью S = ( a * t^2 ) / 2. a = 9,8 м/с2. t = 75 с. Подставляем S = ( 9.8 * 75^2 ) / 2 = 27562,5 м = 27,56 км. Это правда без учета сопротивления воздуха. Но учитывая то, что Гладос, обладая меньшей площадью сопротивления воздуху,  не слишком обогнала Челл во время падения, я думаю этим можно пренебречь. Хоть за время разговора она ее и обогнала.

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

Можно померить время падения между табличками, которые расставлены каждые 125 метров. Это время около 4 секунд. Если взять время падения 75 секунд, то получается S = 75 с / 4 с * 125 м = 2343,75 м. Но есть одно но. В видео в котором я мерил время падения между табличками приземление на доски происходит на 1:08. Последняя табличка появляется на 1:04 с цифрой «4250 м», а первая на 0:19 с цифрой «2875 м». То есть примерно за 45 секунд было преодолено 1375 м. Что примерно и есть падение на 125 м за каждые 4 секунды. То есть скорость постоянная. Но если скорость постоянная, то до таблички 2875 падение происходило: 2875 м/125 м * 4 с = 92 с. Получается падение началось за 72 с до появления картинки после загрузки игры. И общее время падения равняется не 75 с, а 72 + 68 = 140 с. Следовательно — 140 с / 4 с * 125 м = 4375 м. Получается, что Челл приземлилась на доски на глубине 4375 м и потом еще некоторое время падала. Сколько длилось это «дополнительное» падение непонятно, потому что нет звука окончательного приземления Челл, по которому можно точно определить время приземления.

Так что глубина научного комплекса примерно 4,5 км плюс-минус 125 м.

Тут смысл есть, конечно, но я по сути просто померил локацию линейкой. Меньше всего условностей.

Начало локации было в месте начала сцены падения. То есть в месте выхода из затухания в начале главы. Плюс минус. Если судить по табличкам, то начало сцены, было на глубине, примерно, 2275 м. А ты в этом месте принимаешь глубину равную 0 м. Поэтому у меня получилось 4,5 км, а у тебя 2,5 км. Как раз на эти 2 км разница. Померил то ты правильно, но вот только начальная часть локации не была сделана из-за ненадобности, но в общую глубину она входит.

Ближе к центру земли ускорения свободного падения будет увеличиваться, а потому через него считать нельзя

Там разница будет не слишком большая.

Формула закона всемирного тяготения — F = G * (m1*m2)/r^2, где F — это сила притяжения двух тел, G — гравитационная постоянная, равная 6,67 * 10^(-11) м^3/(кг*с^2), m1 — масса первого тела, m2 — масса второго тела, r — расстояние между центрами тел. 

Отсюда и выводится ускорение свободного падения, как g = G * m1 / r^2, где m1 как вес Земли — m1=6*10^24 кг.

Вычисляем ускорение свободного падения на поверхности. Берем r как средний радиус земли r = 6371 км = 6371000 м. Конечно по правилам необходимо прибавить еще 0,5-1 м до центра массы Челл, но этим мы пренебрежём. 

Подставляем g = 6,67 * 10^(-11) * (6 * 10^24) / 6371000^2 = 9.86 м/с^2

Вычисляем ускорение свободного падения на глубине 30 км. Берем r как средний радиус Земли минус 30 км, т.е. r = 6341 км = 6341000 м.

Подставляем g = 6,67 * 10^(-11) * (6 * 10^24) /6341000^2 = 9,95 м/с^2.

А теперь сравниваем S = g * t^2 / 2, при t = 75 с.

В первом случае, S = 9,86 * 75^2 / 2 = 27731 м = 27,73 км.

Во втором, S = 9,95 * 75^2 / 2 = 27984 м = 27, 98 км.

Разница d = 27984 м — 27731 м = 253 м, что менее 1%, между минимальным и максимальным ускорением свободного падения. А если сравнивать ответ полученный по минимальному g с максимально точным ответом или сравнивать ответ полученный по максимальному g с максимально точным ответом, то разница будет еще меньше.

И вот вопрос: «А зачем так париться?»)

Тут смысл есть, конечно, но я по сути просто померил локацию линейкой. Меньше всего условностей.

И. признаюсь, что изначально моей целью было найти какое-либо другое объяснение. Я. попытался просто упростить эту процедуру. Жаль только аргументировать много пришлось.

Там вообще путаница, потому что я могу ещё и сказать, что львиная часть комплекса находится на поверхности, потому что на открытых локациях в переделанной лабе под управлением Уитли видно на горизонте градиент как на поверхности. Кто-то мне писал в комментах о том, что какой-то парень с твиттера пару лет. назад выкладывал все уровни соединённые воедино, и мол там более 6км получается глубина. Мне просто показалось это всё неправильным. Опять же, я просто хочу посмотреть под другим углом.

Модель тяготения, подразумеваемая в расчете, некорректна. Судя по ней та масса вещества, которая находится выше места положения ГГ игры, перестает оказывать гравитационное воздействие на персонажа. Она как будто исчезает по мере погружения, а сама земля становится меньше радиусом.

Физически корректно было бы посчитать и ее тяготение, направленное в противоположную по вектору сторону.

Но в любом случае поправка будет копеечная, тут ты прав.

Хотя я чот отредачил. В редакторе поменялось а на странице нет.

Модель тяготения, подразумеваемая в расчете, некорректна.

Гугление показало, что ты прав. При расчете силы притяжения на глубине необходимо было уменьшать не только расстояние между центрами тел, как я сделал, но и саму массу Земли. А верхний слой не участвует в воздействии на тело, т.к. его гравитационное воздействие на тело компенсирует само себя.

Вывод формулы ускорения свободного падения на глубине тут я писать не буду, просто приложу ссылку.

Ускорение свободного падения на глубине — g1 = g * (r — h) / h, где g — ускорение свободного падения на поверхности; r — расстояние между центрами тел, когда они располагаются на поверхности; h — глубина.

Считаем g1 = 9.86 * (6371 — 30) / 6371 = 9.81 м/с^2.

Пересчитываем второй случай S = 9,81 * 75^2 / 2 = 27591 м = 27,59 км.

Пересчитываем разницу d = 27591 — 27731 = 140 м. Что еще меньше)

Непонятно на самом деле, почему ты принял за высоту трубы высоту чанка, а не сумму высот секций

Ближе к центру земли ускорения свободного падения будет увеличиваться, а потому через него считать нельзя 

это чё ещё такое? каждый ответ на ответ всё непонятней и непонятней

Слабоумие и отвага. Я сам себе это так называю.

Читай также