Компания Mojang только что объявила об историческом решении для Minecraft: Java Edition: полном отказе от обфускации игрового кода. На практике это означает, что исходный код больше не будет «зашифровываться» перед распространением. Это изменение, запланированное после полного запуска Mounts of Mayhem , знаменует собой значительный шаг к большей открытости разработки и улучшению доступности для сообщества моддеров.
До сих пор файлы игры намеренно делались нечитаемыми для защиты интеллектуальной собственности студии, что было распространённой практикой в индустрии видеоигр. Моддерам приходилось использовать инструменты дешифрования и «маппинги», чтобы понять, чему соответствуют классы, функции или переменные в коде Minecraft.
От обфускации к «маппингам»: медленное раскрытие кода
С самых ранних версий Minecraft код Java был полностью обфусцирован. Каждый элемент игры – будь то блок, сущность или внутреннее поведение – имел зашифрованное имя, что значительно усложняло работу моддеров.
В 2019 году Mojang уже сделала шаг к большей прозрачности, опубликовав файлы сопоставления, называемые «картами обфускации». Эти карты позволяли пользователям связывать зашифрованные имена с читаемыми терминами. Эта инициатива упростила работу разработчиков, но не раскрыла полностью принцип работы игры.
Сегодня студия делает новый шаг: запутывание просто исчезнет.
Новая эра для разработчиков модов
Начиная с первого снимка после полного релиза Mounts of Mayhem, файлы клиента и сервера Minecraft Java больше не будут обфусцированы. Оригинальные имена классов, переменных и методов теперь будут напрямую встроены в файлы игры.
Чтобы облегчить переход, Mojang изначально предложит экспериментальные версии без обфускации, которые будут выпускаться одновременно с традиционными. Это позволит разработчикам адаптировать свои инструменты и избежать несовместимости с фреймворками для моддинга, такими как Forge или NeoForge , которые ранее использовали обфусцированный код.
Конкретные преимущества для создания и отладки
Это изменение призвано значительно упростить и ускорить создание, обновление и отладку модов. Разработчикам больше не придётся тратить часы на расшифровку внутренних классов игры: они смогут напрямую читать технические названия элементов и мгновенно понимать их назначение.
Журналы сбоев станут более понятными, а инструменты разработки — более точными. Для Mojang это решение, прежде всего, отражает центральную роль моддинга в экосистеме Minecraft Java. Устраняя технический барьер, студия подаёт мощный сигнал: игра должна быть более прозрачной, открытой и совместной.
Никаких изменений в лицензии и условиях использования.
Mojang подтверждает, что данное изменение не влияет на лицензионное соглашение с конечным пользователем ( EULA ) или правила использования Minecraft . Таким образом, правила создания и распространения модов остаются неизменными.
Каждый jar-файл теперь будет содержать файл LICENSE, напрямую ссылающийся на официальную лицензию игры.
Поэтому будущие версии и снимки состояния будут включать:
- Отсутствие файлов картографии, которые стали бесполезными.
- Необфусцированные клиентские и серверные файлы.
- В каждую банку вложен файл лицензии.
На пути к более прозрачному будущему
Устранение обфускации знаменует собой поворотный момент в отношениях Mojang и сообщества. Если раньше защита кода была первостепенной задачей, то теперь приоритет отдаётся сотрудничеству и прозрачности.
Создатели модов смогут работать свободнее, экспериментировать быстрее и вносить более эффективный вклад в развитие Minecraft Java. Mojang также приглашает моддеров делиться своими отзывами в течение этого переходного периода, чтобы улучшить инструменты и обеспечить плавный переход на новый этап разработки.
Моддеры приветствуют этот жест, но остаются осторожными.
На Reddit многие разработчики отреагировали на это объявление. Один из самых содержательных комментариев был оставлен пользователем scratchisthebest , активным участником моддинга. По его словам, это изменение не приведёт к кардинальным изменениям в разработке модов , хотя и станет значительным шагом вперёд.
Сначала он отмечает, что обновления Minecraft будут выпускаться в том же темпе , поскольку Mojang по-прежнему управляет разработкой игры. Таким образом, отмена обфускации не ускорит и не усложнит адаптацию модов к новым версиям . Инструменты для моддинга всегда включали автоматический этап «деобфускации», который большинству разработчиков никогда не приходилось выполнять напрямую.
Пользователь также подчеркивает несколько технических моментов:
- Это изменение не имеет обратной силы , поэтому оно применимо только к будущим версиям.
- Это не публикация исходного кода Minecraft: внутренние комментарии Mojang остаются конфиденциальными.
- И нет, это не улучшит производительность или FPS — напоминание об этом часто необходимо на Reddit.
С практической точки зрения, основные загрузчики модов, такие как NeoForge и Fabric, должны быть затронуты минимально . Например, NeoForge уже использовал имена «Mojang» во время выполнения, поэтому отчёты о сбоях не будут более подробными, чем сейчас. Однако отчёты о сбоях для базовой версии станут более читабельными , что будет особенно полезно для начинающих разработчиков.
Наконец, scratchisthebest отмечает, что инструменты и установщики модов-загрузчиков должны будут доработаться : некоторые части кода, связанные с деобфускацией, могут быть удалены, что может даже немного ускорить загрузку игры . Mojang теперь будет предоставлять имена локальных параметров и переменных — информацию, ранее отсутствовавшую в файлах сопоставления, — что упрощает понимание кода без необходимости полагаться на проекты сообщества, такие как Parchment .
Подводя итог, моддер считает, что это решение представляет собой приятный жест со стороны Mojang : способ подтвердить свою сдержанную, но реальную поддержку сообщества моддеров Java , не нарушая при этом его текущую практику.