Ответ на пост «Было время»
Во что я играл раньше
Во что я играю сейчас))
P. S. Сарказм конечно, но яндекс задолбал тупые игры рекламировать.
Настоящий размер комплекса Aperture Science
Привет, уважаемый читатель! Это маленький сиквел к моему тексту про цитадель, который я публиковал тут несколько месяцев назад. На удивление, многим он вкатил, так что я решил, что если жизнь даёт тебе лимоны, то нужно давить лимонад. Далее нас ждёт немного аналитической работы и погружение под капот некоторых локаций Portal 2. Данный блог — это текстовая адаптация видео, которое будет прикреплено ниже (или просто текст сценария, по которому я читал текст для видео). Если вашему глазу милее текст, то вы его можете увидеть чуть ниже видео, но я рекомендую именно видеоформат.
После работы над прошлым видео у меня осталось небольшое количество материалов, о которых бы хотелось рассказать. Касаться они будут уже не Half-Life 2, а другой игры из той же вселенной, созданной на движке Source, а именно — Portal 2. Вообще, в играх существует не так уж и много вещей, которые можно измерить и представить их в реальности. В Half-Life 2 было только несколько элементов дизайна игры, которые хотелось проверить в реальности. Скажем, что это может быть «Цитадель и её высота», и разве что прототип реального места действия игры.
На этом вопросы по игре лично у меня заканчиваются. Другого такого бреда в моей голове больше не появляется. Высота цитадели — единственная вещь, которую хотелось бы проверить в реальности. Мир Half-Life выполнен с размахом, и раз уж он объединяет в себе и другие игры, то в них должно быть что-то такое же монструозное. И если для Half-Life 2 этой вещью является Цитадель, то для Portal 2 — это сам комплекс Aperture Science, в стенах которого разворачивается сюжет обеих игр серии.
На протяжении всей игры мы буквально как пушечное ядро летаем в огромных тестовых камерах, размер которых порой напоминают огромный стадион. Им нет конца и края. Это огромный, бесконечный город, который объединён в одно огромное здание. И тут парадоксально то, что несмотря на размах этих тестовых камер, в течении всей игры на нас почти незаметно давит это ужасающее чувство клаустрофобии. За очередной комнатой будет ещё одна комната. После каждой лифт будет опускать нас всё ниже и ниже. И при взгляде на окна, которые встречаются в этих комнатах можно заметить, что горит в них не свет солнца, а люминесцентной лампы. В течении всей первой части Portal нам не дают понять где мы находимся. Это абсолютно пустые помещения какой-то лаборатории, где единственное разумное создание, показывающее наличие интеллекта — это бесчувственный, лишённый любой человеческой эмпатии робот GLaDOS. Давно покинутое людьми, управляемое безумной машиной, испытательное поле для одного тебя. И я отчётливо помню тот самый момент, в самом конце игры, когда после уничтожения GLaDOS что-то нас подхватывает, поднимает в воздух и выбрасывает на улицу. Мы видим снаружи простую парковку, по которой разбросаны обломки, но нет ни одного здания на горизонте. Простая парковка посреди леса. Эта сцена сильно напоминает мне момент из Матрицы, когда Нео и Тринити на своём корабле на секунду воспаряют над облаками, и после момента радости солнечному свету падают обратно в тёмную бездну.
Также и в игре Portal после минутки просветления мы обратно возвращаемся к сдавливающим нас стенам, пролетаем между километрами коммуникаций комплекса куда-то в самую его глубь, чтобы узнать, что на самом деле «Cake isn’t a lie».
В этот момент игрок понимает, что всё это время мы находились глубоко под землёй. И мозг пытается просто навскидку представить и понять, как эти комнаты размерами со стадион поместились там под землёй? И насколько глубоко под землю простирается комплекс Aperture Science?
Тут не будет каких-то громких откровений как в прошлом, потому что этот вопрос поднимался на форумах не так часто, и на Reddit я его находил только в достаточно скромных тредах на десяток комментов максимум. Однако на вики по игре, как и в случае с Half-Life, написана чёткая цифра. Вот что о размерах пишут на одном из таких вики.
Центр обогащения чрезвычайно велик, даже по стандартам, установленным такими объектами, как Исследовательский комплекс Черная Меза, который по сравнению с ним ничтожен. Соляная шахта состоит из девяти вертикальных стволов глубиной не менее 4000 метров каждая и шириной в сотни метров. Внутри кавернозных шахт находится большое количество пространства, которое не используется Aperture, и установки часто подвешены над огромными обрывами, которые уходят глубоко в шахты. Между Центром обогащения и испытательными шахтами находится большой люк, который в открытом состоянии позволяет лифту соединять первоначальный объект с современным. Через этот соединительный люк протекает также система труб Mobility Gel. Современный объект поддерживается множеством больших пружин, вероятно, сетью сейсмических изоляторов, чтобы предотвратить воздействие нестабильности шахтных стволов на чувствительное исследовательское оборудование.
В реальном мире шахты и пещеры бывают разные. Это всегда прорытый искусственно или естественным путём тоннель под землёй, который в ширину обычно бывает не больше нескольких десятков метров. Каверна же — это большая полость под землёй. Они бывают разные, одни могут быть образованы соляными отложениями, другие подземными водоёмами. Если говорить о реальных подземных полостях, то известны и поистине огромные. В России, например, печально известен город Березняки, который год за годом продолжает проваливаться под землю. Там с советских времён разрабатывалось соленое месторождение, и по мере выработки полости освобождались. В некоторых местах эти полости могут иметь высоту до сотни метров. Только представьте, что на земле стоит девятиэтажка, а под ней пустое пространство глубиной в 27 таких же этажей. Вполне себе подходит как кандидат на место строительства лаборатории исследования природы порталов и человеческой стойкости. Ещё один пример — антарктическое подземное озеро «Восток», самое большое подводное озеро, которое на протяжении 15 миллионов лет было спрятано от окружающего мира трёх-киллометровым слоем льда. Глубина этого озера может доходить уже до 800 метров, что примерно сопоставимо с высотой самых высоких небоскрёбов. Также может быть, что каверна находится под ещё одним естественным углублением в земле, как например подземное озеро острова Оуи в Ирландии, которое находится на 50 метров ниже другого озера. В общем, кандидатов на застройку в нашей реальности достаточно много, но они так и не дотягивают до умопомрачительных 4000 метров.
Город Березняки
Но даже будь у нас в распоряжении здание на глубине 4 километров, там было бы просто невозможно находится. Всё дело в крайне высокой температуре под землёй. Cчитается, что температура в ядре и мантии земли составляет в среднем 6000 и 4000 градусов по Цельсию соответственно. Эти температуры просто трудно представить, но и достигаются они в сотнях и тысячах километрах под землёй. Но даже не смотря на это, относительно не глубоко температура тоже очень высока. Например, максимальная температура была измерена и зафиксирована на глубине около 6000 метров и составила 274 градуса по Цельсию. Это примерно на 100 градусов выше той температуры, при которой вы запекаете мясо в духовке. Содержать здание на такой глубине скорее всего не очень реально, потому что физику не обманешь. Тепло — это энергия, которая не может просто так испарится.
К счастью, если конкретно измерить глубину залегания лаборатории Aperture Scienceв игре Portal 2, то можно в итоге узнать, могла бы она существовать в реальности или нет? Для этого как и в прошлый раз нам нужно декомпилировать архив с игровым контентом на нужной нам карте, открыть всё в Hammer Tools или Blender, и замерить всё линейкой. Ничего сложного.
Первый и самый очевидный способ: зная скорость и время падения мы можем высчитать пройденное расстояние. Объектом нашего исследования станет карта sp_a3_00. Сперва перейдём на требуемую локацию, и сразу же откроем консоль. Теперь введём команду, которая добавит нам к экрану информацию с нашими координатами, и также будет нам показывать информацию о скорости перемещения. Теперь нам нужно лишь засечь время, снять игру с паузы и дождаться падения. Проведя все требуемые расчёты мы получим требуемую цифру.
Вот незадача. Магическим образом счётчик скорости застыл на нуле. Нужно разобраться, почему счётчик показывает 0.
Вводим следующие команды в консоль:
r_drawclipbrushes — эта команда отображает на экране элемент, который называется Clip Brushes, или также его можно назвать «невидимой стеной». Это элемент, который поваляет создать невидимую структуру, благодаря которой решаются многие проблемы с левел дизайном любой игры и локации выполненной на движке Source. К примеру, чтобы игроки не застревали на выступах вдоль стен. Эти структуры прозрачны и незаметны. Они пропускают через себя рэгдолы, физические объекты, но не пропускают игрока и ботов. Абсолютно необходимый инструмент любого левел-дизайнера. И как видите, тут игрок окружён именно такой структурой. Видимо, он стоит на месте и просто не имеет физической способности передвигаться, даже со включенным параметром noclip.
sp_a3_00
Это меня заинтриговало, тут я решил разобраться в строении уровня. Учитывая что мы достаточно долго летим вниз, можно предположить, что этот уровень должен быть одним из самых больших в игре. Проверить это можно в одной из утили из набора модера для движка Source. Каждая карта из игры лежит в отдельной директории в виде отдельного файла. Когда мы переходим на новый уровень игра запрашивает файл с нужным названием и загружает именно ту локацию, которая нужна по игре. Сам файл представляет собой архив, в котором лежит информация о моделях, самом игровом поле, текстуры, анимации и ссылки на ресурсы, которые могут подтягиваться из sdk. Данная утилита может проверить этот файл на целостность и работоспособность. Грубо говоря она показывает, прогружается ли вся информация из этого архива или нет. Интересно тут то, что эта программа также показывает и размеры локации по осям X, Y и Z. Результаты отображаются в Hammer Unit-ах. Мы уже говорили о них в прошлом видео, если забыли, то советую пересмотреть.
Удивительно, но утила сообщает нам о том, что сама по себе локация крайне маленькая. Всего 13700 h/u в высоту. Это говорит нам о том, что уровень строится более интересным образом. Игрок находится в невидимой коробки, посреди маленькой комнаты с невидимыми стенами. Всё то, что находится в самой комнате — отрисовывается, а всё то, что за ней просто не отображается. Чтобы проверить так ли это — вернёмся в игру и введём ещё две команды.
mat_luxels 1 — эта команда отображает нам сетку на каждой модельке, которая появляется на уровне.
mat_leafvis 1 — эта команда отображает так называемые «Чанки», или условные блоки, в которых находится игрок и к которой прогружается тот или иной контент.
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-е. Мы видим тут два огромных параллелепипеда.
Файл называется simpleworldmodel.mdl — 1) открыт в Blender, 2) открыт в Hammer World Craft
Файл называется simpleworldmodel.mdl — 1) открыт в Blender, 2) открыт в Hammer World Craft
Тот что поменьше — это, вероятно, место, где хранятся сегменты большой трубы. Как видно из информации, которую я нашёл в интернете — сегменты трубы прогружаются в отдельной зоне локации. И ещё есть длинная часть, которая вероятно и является местом, где эта труба и соединяется в одну целую конструкцию.
Единственное, что теперь нас отделяет от ответа на вопрос — это линейка из инструментария Blender-а. И теперь я могу уверенно заявить, что глубина научного комплекса Aperture Science составляет 2500 метров. Считая глубину навскидку я ошибся всего-то на несколько сот метров. А значит и эту информацию в википедии можно поправить. Я надеюсь вам было интересно узнать столь бесполезный, но очень интересный факт.
Ссылка на оригинальную статью:
Вы хотите головоломок?
Их есть у нас! Красивая карта, целых три уровня и много жителей, которых надо осчастливить быстрым интернетом. Для этого придется немножко подумать, но оно того стоит: ведь тем, кто дойдет до конца, выдадим красивую награду в профиль!
Эпизод 15. Математика
Как определить угловой размер в компьютерных играх
Всем доброго времени суток
Когда возникает желание что-то посчитать в игре, то нередко приходится определять размеры объектов по их изображению, то есть иметь дело с угловыми размерами объектов. Например, есть за картой звездолет и хочется узнать, насколько он большой. Для этого как раз нужно в том числе и определять его угловой размер. Что это такое и как его найти и будет рассказано в этом посте
Что такое угловой размер
Угловой размер - это мера того, насколько большим мы видим объект. И пожалуй объясню это на примере
Представьте, что вы стоите напротив шара диаметром 3 метра и смотрите на него. Сперва вы смотрите на него с расстояния в 1 метр, затем отходите подальше и смотрите уже с 4 метров. Сам шар размеры свои не изменил, однако для вас он стал меньше, потому что вы удалились. И вот как раз то, насколько большим вы его видите, угловой размер и показывает:
Естественно, угловой размер связан не с самим шаром, а с диаметром круга, который мы видим (изображение шара для глаза - это круг). Ну то есть в общем случае он связан с отрезком, который видит человек, камера или персонаж в игре
Как строится изображение
Предупреждение: так как я не занимаюсь разработкой видеоигр, то могу не могу быть полностью уверен в данной математической модели. Если она ошибочна в общем случае, то прошу указать об этом в комментариях
Спроецируем все объекты, которые мы можем увидеть из некоторой точки на какую-то поверхность. Вот только на какую? Так как по любому направлению проецироваться объекты должны одинаково, то очевидным будет сделать проекцию на сферу, в центре которой находится наблюдатель. На этой сфере находятся все объекты, которые может увидеть наблюдатель, изменяя только направление своего взгляда. Естественно, из-за ограниченного угла обзора наблюдатель видит только часть этой сферы
Однако мониторы прямоугольные и, в основном, плоские, поэтому теперь видимый кусок сферы нужно спроецировать на прямоугольник. Отсечем от сферы те части, которые наблюдатель не видит, а из концов отрезанного куска проведем прямые, пересекающиеся в центре. На этих отрезках и будет лежать прямоугольник, и для удобства его можно построить прямо на концах куска сферы:
Зеленая плоскость - это как раз плоскость монитора
И теперь, чтобы спроецировать некоторую точку на плоскость монитора, проведем прямую от этой точки на сфере до центра сферы. Точка пересечения с плоскостью и будет проекцией точки на эту плоскость. Кстати, такой метод проецирования объясняет, почему по краям изображение растягивается
Находим угловые размеры
Пусть есть какой-то отрезок, который находится в поле зрения наблюдателя. Проведем прямые из концов этого отрезка в центр сферы. Угол между прямыми как раз и будет угловым размером этого отрезка. Теперь пересекаем эти прямые с плоскостью монитора и получаем концы отрезка уже на изображении. И теперь, если нам известны точки, которыми отрезок ограничен, то мы можем определить угловой размер. Как это сделать?
Сперва введем 2 системы координат: одна 3-мерная, из центра сферы, другая 2-мерная, связанная с плоскостью монитора:
Здесь L - длина изображения в пикселях, D - высота, что, впрочем, видно и по рисунку. Также здесь у нас появилась неизвестная H, которую надо бы найти. Рассекаем объекты с рисунка плоскостью xOy и, соединяя с началом координат края сечения монитора получим следующую картину:
Так как начало координат находится ровно над центром монитора, то мы получаем равнобедренный треугольник. Теперь можем из FOV-а (угла обзора) и длины изображения выразить неизвестную:
Изначально мы будем знать координаты точки в системе координат монитора (например, координата пикселя в Paint-е), поэтому из них определим координаты уже в системе Oxyz для некоторой точки:
Не забываем, что Oxyz находится над центром монитора
Теперь вернемся к исходной картинке, нанесем на плоскость точки A и B, которые будут границами нашего отрезка и проведем вектора из наблюдателя (нуля Oxyz) в эти точки:
Напомню, что эти векторы лежат на прямых, угол между которыми нужно найти. А значит нужно найти угол между векторами. Тут же напрашивается скалярное произведение этих векторов, поэтому не будем изобретать велосипед и воспользуемся им:
Вторая картинка - та же формула, но с записью обозначений, чтобы ее можно было сохранить и потом быстро ею воспользоваться
Ну и что ж, вот конечная формула. Определяем координаты пикселей, разрешение и угол обзора, подставляем в формулу и получаем угловой размер. Однако такая формула выглядит довольно громоздко, поэтому я решил написать небольшую консольную программу, которая сможет считать угловые размеры. Оставлю здесь ссылку для скачивания на Яндекс диск, а также код самой программы, вдруг кто захочет разобраться в ней:
Ну а на этом все, удачи вам в расчетах и вычислениях)
Математическая игра из 2000-2010х
Привет, пикабу, некоторое время ищу игру из своего детства, вдруг кто играл или знает название.
Игра развлекательно-развивающая, про математику, можно было путешествовать по карте и в разных локациях делать различные действия, из того, что помню:
Пицца - нужно было помочь развести пиццу оптимальным маршрутом
Магазин - прочувствуйте на себе долю кассира, посчитайте покупки и выдайте сдачу (помню что монеты еще помещались в монетницы по номиналу)
На еще какой-то локации нужно было высчитывать периметры фигур
На другой отгадывать загадки стервятников
Игрушка интересная с одной стороны, с другой мне бы просто поностальгировать,а может и сейчас кого привлечет такая подача)
На какой широте расположен Сумеру? | Genshin Impact
Всем доброго дня
Сегодня решил глянуть синематики, посвященные уже вышедшему аль-Хайтаму. И тут мне на глаза попался один довольно интересный и, естественно, информативный кадр, вот он:
Здесь мы видим вращение звездного неба, а оно, как известно, вызвано вращением Земли вокруг своей оси. По положению точки, вокруг которой крутятся звезды, и по направлению вращения можно примерно определить широту точки наблюдения, то есть Сумеру (ну аль-Хайтам из Сумеру, и пейзажи сумерские, думаю, в синематике Сумеру показан). Что ж, приступим
Начнем с углового значения широты (хотя на этом мы и закончим). Чтобы понять, что и как должно вращаться, нарисуем вращение Земли Тейвата относительно небесной сферы, а затем небесной сферы относительно сферической поверхности Тейвата:
Оставлю небольшое замечание: Тейват таки является сферическим, об этом говорит один из ученых, который как раз вычислял его кривизну:
Точка, вокруг которой крутятся звезды, должна лежать на оси вращения звездного неба относительно поверхности (короче на оси вращения Земли Тейвата) и при этом она лежит на оси вращения звездного неба относительно наблюдателя. Вот картинка для наглядности:
Так как эта точка бесконечно удалена, то можно считать, что те две оси параллельны. Теперь разрезаем планету и видим, как связано угловое расстояние от той точки до горизонта и широта:
Доказательство построения: так как оси вращения пересекаются, то они образуют плоскость (этой плоскостью мы резали планету). В то же время радиус из центра к наблюдателю проходит через обе оси, значит он лежит в этой плоскости. Касательная плоскость перпендикулярна радиусу => она перпендикулярна первой плоскости => чтобы определить угол между осью наблюдателя и плоскостью нужно определить угол между осью и прямой пересечения плоскостей. Это как раз показано на рисунке
Как мы видим, угловое расстояние от точки до горизонта и есть широта
А теперь внимательно смотрим на картинку из начала поста и замечаем, что эта точка находится где-то рядом с горизонтом, значит, широта Сумеру близка к нулю. Ну а это значит, что Сумеру расположен близко к экватору. В южном полушарии или в северном - не имеет значения, ибо точное угловое расстояние не получить - и горизонт, и точка вращения спрятаны за горами
Разве что можно сказать, куда смотрит аль Хайтам. Вспоминаем один из чертежей, но теперь проводим касательную, лежащую в одной плоскости с осью вращения:
По картинке понятно, что если смотреть на юг, то звезды будут крутиться по часовой стрелке. Прям как на кадре из синематика. Значит, аль Хайтам смотрит куда-то на юг. К слову, вот похожее место:
Ну а на этом все. Надеюсь, пост получился интересным, а, может, кому-то даже помог чуть-чуть разобраться в геометрии и астрономии
Всем добра и выигранных 50/50)
Задача про вероятность
Играю я в одну онлайн игру, сыграл несколько тысяч игр и знаю свой процент побед (48%). Соревнуясь с другими игроками, вы поднимаетесь выше по лигам. Попав в новую лигу, вы уже не можете упасть в лигу ниже, даже если проиграете сколько угодно раз. При победе вы поднимаетесь на одну ступень выше к новой лиге, при поражении опускаетесь вниз, но ниже нулевой ступени упасть не можете. Изначально в новой лиге вы находитесь на нулевой ступени, вам надо подняться на определенное число ступеней (в каждой лиге разное).
Вопрос такой - сколько мне нужно сыграть боёв, чтобы с вероятностью допустим 80% подняться в новую лигу?
Хотел решить эту задачу перебором, но не силен в программировании и запутался...
Может быть есть уже готовая формула для такого случая?
Или хотя бы показать как получить решение для частного простого случая при числе ступеней - 6, если я сыграю 12 игр при 48% побед с какой вероятностью я попаду в новую лигу?
Что надо успеть за выходные
Выспаться, провести генеральную уборку, посмотреть все новые сериалы и позаниматься спортом. Потом расстроиться, что время прошло зря. Есть альтернатива: сесть за руль и махнуть в путешествие. Как минимум, его вы всегда будете вспоминать с улыбкой. Собрали несколько нестандартных маршрутов.