Game test framework майнкрафт что это
Вкратце постараюсь рассказать об анархо-сервере майнкрафта 2b2t и об эксплоите nocom, создатели которого годами отслеживали действия всех игроков сервера.
2b2t (2builders2tools) - это анархический сервер майнкрафта, запущенный в декабре 2010 года. На нём нет правил, можно писать что угодно, строить что угодно, использовать читы, баги, дюпать предметы и тд. Единственное негласное правило сервера - это не создавать лаг машины или каким-либо другим способом создавать нагрузку на сервер.
На этом сервере проводились войны, строились гигантские постройки, некоторые виды читов были созданы здешними игроками. В общем есть чем заняться, но зачастую геймплей на этом сервере похож на: "singleplayer с чатом", как описал один из игроков 2b2t.
В 2018 году 2 игрока под никами 0x22 и Babbaj придумали, как можно подгружать огромное кол-во чанков (областей 16x16 блоков), тем самым вызывая лаги и падения сервера. Они заметили, что кликать можно на все блоки карты и не важно где при этом находится кликающий игрок. А когда ты жмёшь на блок, то сервер запускает прогрузку его чанка. Этим эта парочка и воспользовалась. За секунду были прогружены тысячи чанков из-за чего сервер упал.
Так можно было кошмарить сервак до бесконечности, но они придумали как можно использовать это с выгодой для себя. Они поняли, что единственным возможном фиксом этого со стороны админов будет проверка на наличие игрока около блока, на который хотят тыкнуть. В случае если игрока там не оказалось, то сервер просто не прогружал чанк. Это позволило бы получить информацию о местоположении всех игроков на сервере.
0x22 и Babbaj рассказали об этом своему другу и члену группы хакеров Nerds Inc, игроку под ником fr1kin. Ему понравилась эта идея и они приступили к реализации. Снова и снова они ложили сервер, пока админ Hausemaster не написал в поддержку движка PaperMc, на котором стоял 2b2t, с просьбой пофиксить эту проблему. И в тот же день выходит фикс, на который и рассчитывала наша компания. Теперь после клика на блок его чанк подгружался только в том случае, если в нём находился игрок. Также, в случае прогрузки чанка, хакеры получали информацию о самом блоке, на который они нажали.
В кратчайшие сроки была создана первая версия координатного эксплоита nocom (no comment). Она была достаточно примитивной.
На сервер помещался бот, который по спирали прокликивал блоки от спавна и, если встречал игроков - приватно отправлял координаты в чат и помещал их на график. Babbaj было достаточно даже такой информации чтобы находить и уничтожать хранилища других игроков.
leijurv доработал программу и научил её следующему:
- Нахождение игроков на главных дорогах сервера и бесконечное преследование.
- Идентификация преследуемых.
Nocom стал отслеживать все подключения и отключения игроков и сопоставлял их с каждым, за кем она следует. То-есть если след из блоков прекращался, как только какой-то игрок выходил с сервера, то этот след приписывался ему.
Чуть позже exploit научился находить необычные блоки, которые либо очень редко генерируются самим майнкрафтом, либо вообще не генерируются. Блоки, которые ставят зачастую сами игроки. Благодаря этому появилась возможность находить базы и хранилища игроков по всему серверу.
Спустя три года использования, в июле 2021 года, эксплоит попал в открытый доступ из-за чего 15 июля админ сервера Hausemaster залил нужные фиксы и теперь стало невозможным отслеживать игроков удалённо.
Итого: 15 тысяч баз рассекречено, сотни уничтожены, 200 млн предметов украдены, было собрано более 2-ух терабайт информации 300 тысяч игроков.
Я опустил много подробностей типа того, что хакеры, когда кто-то начинал догадываться, что на сервере используется координатный эксплоит, начинали писать этому человеку, что он бредит, вкидывали фейковую информацию или даже делали небольшие эксплоиты для отвода глаз. Поэтому подробнее можете почитать в источниках или посмотреть подробные видосы по этой теме.
Итак, Minecraft RTX вроде бы как официально вышел из беты почти 2 месяца назад. Но у пользователей до сих пор возникают проблемы с тем, чтобы активировать эту технологию NVIDIA в данной игре.
При этом сама Microsoft ничего не делает для того, чтобы владельцы версии игры из Windows Store могли просто зайти в игру, нажать пару галок и увидеть заветную трассировку на своём экране. Путь к графону оказался гораздо более тернист, чем хотелось бы
Что ж, придется обмазываться сторонними решениями. Зря что ли мы RTX карты покупали по тройной цене у перекупов, не так ли? Да и сам бесполезный Bedrock Edition многими покупался исключительно ради этой фичи.
Начнем с того, что без танцев с бубнами RTX доступен только на предзатовленных корпорацией Дженсена Хуанга специальных демонстрационных картах.
Раньше они были доступны в демо-версии игры, которая активировалась через Xbox Insider. Сейчас как обстоят дела с доступом на эти карты я не знаю. И знать уже не хочу.
Вне этих демок RTX включить можно только если поставить соответствующий resource pack. Этим мы и займемся.
Итак, на данный момент у нас есть как минимум два более-менее полнофункциональных ресурсных пака с поддержкой RTX.
Первый качается с сайта NVIDIA. О втором чуть позже. Первая ссылка - страница с гайдом. Вторая ссылка - ссылка на само скачивание пака. Да уж, сделать большую кнопку DOWNLOAD для удобства пользователей они не могли - ссылка на скачивание запрятана в самом тексте.
И вот примерно так он выглядит.
Как вы можете понять по скриншотам, эта версия ресурсного пака почему-то очень сильно отличается от классического майнкрафтовского, да и от текстур в демо-сценах отличается. Что мешало NVIDIA сделать нормальные классические текстуры - совершенно непонятно.
Так же по ссылкам ниже можно скачать два ресурсных пака от нвидии с HD-текстурами. Однако в этих паках нет emessive составляющей у материалов. Проще говоря, блоки лавы и редстоуна в этих паках не светятся. А еще нет нормал маппинга и бампа.
Выглядит оно как-то так.
Нахонец, мы переходим ко второму, нормальному варианту - Kelly's RTX.
Кстати, хз в чём дело, но на данный момент мой гуглохром жалуется на вредоносность сайта. Так что посещаете на свой страх и риск. Первая ссылка - на саму тему с паками. Вторая - на скачивание файла. Третья - ссылка на скачивание пака с моего гуглодиска. Версия, которую я скачивал задолго до появления предъяв гуглохрома к этому сайту.
Данный пак делался с прицелом на ванильные, классические текстуры майнкрафта и потому смотрится, пожалуй, лучше всех остальных.
По большому счёту это всё. Теперь вы можете любоваться полноценной трассировкой в реальном времени с оригинальным дизайном блоков.
Но есть ряд важных аспектов. Ими мы сейчас как раз и займемся.
Начнём с того, как в игре работает освещение с точки зрения геймплея и функциональности. Вот как выглядит наша тестовая сцена в оригинале, без RTX и прочих шейдеров (в потолке дырка, без неё непроглядная тьма)
А так с RTX. Как мы видим, никакой свет не попадает внутрь шахты. Результат - темно как в жопе у коренного жителя африканского континента.
А вот немного модифицированный вариант.
Как мы это сделали? Сейчас мы займемся своего рода моддингом. Идём на нашем компе по следующему адресу:
C:\Users\"имя вашей учетной записи на вашем компе" \AppData\Local\Packages\Microsoft.MinecraftUWP_"куча цифр и буков"\LocalState\games\com.mojang\resource_packs\Kelly'sRTX\textures\blocks
Далее нам нужна текстура камня. И не простая текстура, а MER-текстура - stone_mer. MER означает "Metallness-Emissive-Roughness" - классические PBR параметры, отвечающие за зеркальность, свечение и матовость материала соответственно.
Красный цвет в них отвечает за metallness - зеркальность. Зеленый отвечает за emissive - свечение. Синий отвечает за roughness - матовость. Нам нужно к нашей синей текстуре нашего матового камня добавить немного зеленого цвета.
Для этого расчехляем наш купленный на торрентах за кровные 0 рублей фотошоп. Если вы не являетесь поклонником продукции Adobe, то можете заюзать GIMP или Krita.
По умолчанию параметр G: (зеленый цвет) стоит в значении 0. Я выставил значение 2 и просто залил полученным цветом всё изображение.
Благодаря этому текстура нашего камня по умолчанию слегка светится и вы даже в самой анальной темноте не сможете потеряться.
В принципе можно выставить значение и свыше 2, но желательно не больше 5.
Подразумевается, что эту же операцию нужно провернуть со всеми текстурами, которые могут встретиться под землей - гранит, андезит, гравий, все руды и так далее. Однако мне лень тратить время на ручной перебор сотен текстурок. Если кто-то умеет в скриптинг в среде фотошопа, то он бы в два счёта смог сделать эту работу. Лично я не знаю и не умею.
А ещё было бы здорово, если бы Microsoft или NVIDIA сделали некий глобальный параметр, который всем материалам добавлял чутка emissive. Однако эта технология явно не столько для удовольствия людей делалась, сколько ради маркетинга. И об удовлетворении подобных прихотей они наверняка даже не подумали ни разу.
Вариант от NVIDIA имеет нормал маппинг. Это такая фиолетовая текстурка, которая как бэ поворачивает пиксели и создаёт эффект игры света на поверхности, тем самым имитируя объем. И потому этот пак может давать более интересные результаты с технической точки зрения. Однако его нужно перерисовать под ваниллу чуть менее, чем полностью. Этим я даже не пытался заниматься.
Вариант от Kelly по дефолту не поддерживает нормал маппинг. Вместо этого он работает через бамп маппинг - черно-белую текстурку. Это чуть более примитивная технология, которая как бэ приподнимает пиксели и тем самым создаёт объем. Очень грубый объем. На практике оно выглядит как кафельная плитка.
Данный эффект можно убрать или снизить, обработав текстуры с припиской normal. Тут для примера я взял текстуру песка (sand_normal) и залил ее черным цветом. И получилось это.
Раздел справочной информации на сайте Minecraft пополнился сразу тремя публикациями. Посвящены они, на первый взгляд, достаточно банальным вещам, которые не содержат какой-то новой информации. Например, две статьи — это описание команд и рассказ о возможности создания NPC в Minecraft Bedrock.
В целом все три статьи направлены на то, чтобы проинформировать читателя о существовании отдельного справочного портала для тех, кто хочет разрабатывать аддоны для Minecraft Bedrock.
И поэтому третья статья из серии публикаций значительно интереснее — в ней рассказывается о GameTest Framework, добавленном в Minecraft Bedrock.
Несмотря на то, что статья на сайте Minecraft преподносит GameTest Framework как нечто новое, сам фреймворк был интегрирован в Minecraft ещё в феврале 2021 г. в бета-версии 1.16.210.60.
Чтобы запустить Minecraft с поддержкой GameTest Framework, необходимо включить его при создании мира. И читы тоже надо включить.
Предназначен он для проведения тестов контента, добавляемого в игру разрабатываемыми аддонами, хотя при желании можно также тестировать и поведение стандартных игровых механик.
Тестирование и проверка того, как работает разрабатываемый аддон — это важнейшая часть создания игровых дополнений. Ты создаёшь что-то и проверяешь в игре, переделываешь и снова проверяешь в игре, и это могут быть сотни и тысячи проверок, на которые уходит времени не меньше, чем на саму разработку.
Фреймворк GameTest позволяет создавать такие небольшие проверки.
Для этого создаётся небольшой аддон, который содержит структуру — постройку, внутри которой нужно проводить тестирование. И скрипт, в котором описываются необходимые условия тестирования. Например, можно заспавнить определённых мобов, которые должны будут сразиться, а по результатам кто-то из них должен выжить. Или спрятаться. Или зарыться в землю. Тест будет считаться пройденным, если выполнено необходимое условие.
Таких тестов разработчик может написать столько, сколько ему нужно, для каждого элемента создаваемого аддона, и тогда на любом этапе разработки он будет знать, повлияло ли изменение на то, что было создано ранее.
Чтобы понять, как это работает, можете попробовать запустить и воспользоваться одним из встроенных тестов.
Например, тест на работу вагонетки можно запустить командой /gametest run minecarttest:turn.
Встроенные тесты интересны, но основное назначение фреймворка — это тестирование собственных разработок. И тут уже одной командой не обойтись.
Нужно создавать собственный тестовый аддон, который включает в себя структуры и тестирующие скрипты.
Подробную инструкцию с примерами можно найти здесь.
Добавлю, что разработчиками Minecraft выпущено дополнение для редактора Visual Studio Code, которое добавляет средства отладки кода, выполняемого GameTest Framework, что, безусловно, значительно упростит работу над созданием аддонов.
Раздел справочной информации на сайте Minecraft пополнился сразу тремя публикациями. Посвящены они, на первый взгляд, достаточно банальным вещам, которые не содержат какой-то новой информации. Например, две статьи — это описание команд и рассказ о возможности создания NPC в Minecraft Bedrock.
В целом все три статьи направлены на то, чтобы проинформировать читателя о существовании отдельного справочного портала для тех, кто хочет разрабатывать аддоны для Minecraft Bedrock.
И поэтому третья статья из серии публикаций значительно интереснее — в ней рассказывается о GameTest Framework, добавленном в Minecraft Bedrock.
Как Aether может изменить Minecraft
О конкретных планах о том, как изменится Minecraft благодаря интеграции, он не рассказал.
В пресс-релизе на сайте Hadean рисуют самые заманчивые, но при этом очень размытые, перспективы. Упоминается возможность создания глобальных игровых миров и фактическое превращение игр в социальные платформы, где могут проводиться виртуальные концерты и иные шоу.
На мой взгляд, можно выделить следующие области применения технологии Aether:
- В Minecraft Earth можно будет создать общественные точки, в которых сможет одновременно взаимодействовать огромное число игроков. Представляется целый парк, полный людей.
- В Minecraft Realms может появится поддержка большого числа игроков (сейчас в Realms для Minecraft Bedrock может играть одновременно не больше 10 человек).
- Партнёрские сервера в Minecraft Bedrock смогут поддерживать огромное число игроков.
Ну, и в заключение, обязательно надо произнести фразу: «World of Minecraft». Я имею в виду, что, теоретически, используя Aether, можно создать глобальную песочницу с неограниченным числом игроков. Но, как мне кажется, если разработчики Minecraft и решат сделать что-то подобное, то, скорее всего, в качестве основы будет взята Minecraft Dungeons, а не привычный нам Minecraft.
P.S. Если вы хотите спросить, как это повлияет на Minecraft Java Edition. Думаю, никак.
Что такое GameTest Framework
Несмотря на то, что статья на сайте Minecraft преподносит GameTest Framework как нечто новое, сам фреймворк был интегрирован в Minecraft ещё в феврале 2021 г. в бета-версии 1.16.210.60.
Предназначен он для проведения тестов контента, добавляемого в игру разрабатываемыми аддонами, хотя при желании можно также тестировать и поведение стандартных игровых механик.
Тестирование и проверка того, как работает разрабатываемый аддон — это важнейшая часть создания игровых дополнений. Ты создаёшь что-то и проверяешь в игре, переделываешь и снова проверяешь в игре, и это могут быть сотни и тысячи проверок, на которые уходит времени не меньше, чем на саму разработку.
Фреймворк GameTest позволяет создавать такие небольшие проверки.
Для этого создаётся небольшой аддон, который содержит структуру — постройку, внутри которой нужно проводить тестирование. И скрипт, в котором описываются необходимые условия тестирования. Например, можно заспавнить определённых мобов, которые должны будут сразиться, а по результатам кто-то из них должен выжить. Или спрятаться. Или зарыться в землю. Тест будет считаться пройденным, если выполнено необходимое условие.
Таких тестов разработчик может написать столько, сколько ему нужно, для каждого элемента создаваемого аддона, и тогда на любом этапе разработки он будет знать, повлияло ли изменение на то, что было создано ранее.
Чтобы понять, как это работает, можете попробовать запустить и воспользоваться одним из встроенных тестов.
Например, тест на работу вагонетки можно запустить командой /gametest run minecarttest:turn .
Как создавать собственные тесты
Встроенные тесты интересны, но основное назначение фреймворка — это тестирование собственных разработок. И тут уже одной командой не обойтись.
Нужно создавать собственный тестовый аддон, который включает в себя структуры и тестирующие скрипты.
Подробную инструкцию с примерами можно найти здесь.
Добавлю, что разработчиками Minecraft выпущено дополнение для редактора Visual Studio Code, которое добавляет средства отладки кода, выполняемого GameTest Framework, что, безусловно, значительно упростит работу над созданием аддонов.
Разработчики Minecraft заключили соглашение с технологическим стартапом Hadean об интеграции в проект движка Aether.
Что такое Aether, и зачем он нужен Minecraft
Движок, который приглянулся разработчикам Minecraft, никак не связан с Minecraft, несмотря на название, схожее с «небесным» измерением, которое игроки давно просят добавить в игру.
Aether позволяет решить самую главную проблему разработчиков онлайн-игр, где необходимо обеспечить одновременное взаимодействие множества игроков.
На поддержку каждого игрока, который подключается к сетевой игре, требуются определённые ресурсы, и рано или поздно достигает тот момент, когда сервер перестаёт с ними справляться.
Чаще всего разработчики игр решают проблему, ограничивая число одновременных игроков, разбивая потенциально неограниченный мир на множество сегментов. С точки зрения Minecraft такими сегментами можно считать реалмы, которые можно приобрести в качестве игровых миров.
Aether позволяет отказаться от подобного сегментирования и уже на начальных этапах тестирования в Minecraft показал отличные результаты.
С помощью него разработчики за три дня смогли создать лобби-сервер поддерживающий 1024 игрока.
Технический директор Mojang Studios Майкл Вейлбахер положительно отозвался о проекте: «Движок Aether, разработанный Hadeon, меняет правила игры и открывает целый ряд новых возможностей для разработки не только таких игр, как Minecraft, но и для стриминговых платформ, сообществ разработчиков и даже корпоративных приложений».
Читайте также: