Блог разработчиков — Навигация по мультиверсиям мира Minecraft

Блог разработчиков — Навигация по мультиверсиям мира Minecraft


Доброе утро, мои друзья. Меня зовут Донпиресо, и сегодня я пишу этот блог о трудностях, с которыми сталкивается Hypixel в грандиозном процессе обновления сервера Hypixel для Minecraft до самых последних версий Minecraft. По иронии судьбы, я не разработчик - я руководитель команды. Я указываю на вещи, чтобы они реализовались, затем другие делают их. Затем я выписываю им большую зарплату - хорошее время для всех нас.

Большая часть информации, которую вы собираетесь прочитать, как и ожидалось от моей роли, была написана другими членами команды. Моя цель в этом блоге разработчиков - собрать всю информацию, которую я могу получить от своих людей, о текущем большом меме: "Где добывать корм? Для тех, кто не играет в Hypixel SkyBlock, этот вопрос, вероятно, не имеет смысла.

Три года назад мы впервые упомянули об обновлении Foraging Update для игроков.


Хаха, позже, в 2021 году, он сказал... ой, это был я.


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

Очень быстро мы поняли, что последние версии Minecraft имеют всевозможные новые активы и механики, которые могут значительно улучшить кормовой остров. Пользовательские биомы, новые текстуры и блоки, всевозможные реквизиты для растительности - карта для фуражировки может выглядеть просто потрясающе.



Вдобавок ко всему, мы начали думать о будущем Minecraft - по сути, о том, что мы, как сервер - ведущий сервер, не меньше - так надолго застряли в прошлом. Если честно, мы многого добились с тем, что у нас есть. Такие карты, как Пещеры гномов и Багровые острова, просто фантастические, и все благодаря нашей невероятной команде сборщиков. Но у нас появился зуд - что, если бы у нас были карты последней версии? Что, если бы у нас была последняя версия геймплея, предметов и существ? Что, если бы у нас были надкрылья? Что, если бы у нас былибелые медведи ? Что, если бы мы сделали пользовательские пакеты ресурсов, уникальные меню, уникальные модели и уникальных боссов? Наше воображение не знало границ.

С тех пор мы работаем над целым рядом проектов, которые могут похвастаться последними возможностями версии (хотя не все из них дойдут до публики). Но как так получилось, что прошло лет с тех пор, как мы начали, а нам почти нечего показать? Это и будет сегодняшней темой, друзья мои.

SpigotHygot

Много лет назад, когда сервер был еще маленьким мальчиком, бегающим по летней траве, команда эльда принимала решения, которые в конечном итоге повлияли на будущее сервера. @Plancke был там тогда, и ему есть что сказать.

В Hypixel Spigot уже давно стал нашим основным фреймворком, превратившись из базового форка в нечто уникальное. Изначально он начинался как простая модификация, с несколькими исправлениями, чтобы раскрыть внутренние механизмы, для которых не хватало API. Со временем эти небольшие исправления превратились в беспорядочный пользовательский код. Остальная часть нашей кодовой базы превратилась в клубок размышлений. Мы хотели сократить, упорядочить и, прежде всего, оптимизировать ее под наши нужды.

С каждой добавленной функцией и каждой строчкой кода мы все больше отдалялись от ядра Spigot. В конце концов, мы достигли точки, когда единственным логичным шагом стал хард форк. И вот, 4 сентября 2014 года родился Hygot, основанный на релизе 1.7.10 protocol hack, который стал основой нашего серверного банка.

По мере выхода новых версий Minecraft, Hygot начал отражать наши развивающиеся потребности. По мере необходимости мы внедряли такие возможности 1.8, как стойки для брони, границы мира и названия. Когда летом 2015-го и в начале 2016 года стали появляться снимки для 1.9, мы сразу же ухватились за них. Привычка ванильной пусковой установки автоматически выбирать последнюю версию означала, что игроки, особенно новички, ожидали получить доступ к ней в первый же день. Быть впереди было очень важно.

С тех пор мы поддерживаем новые версии, хотя наша база игроков в основном придерживается версии 1.8.9. Новые функции, такие как частицы, сущности, блоки и щиты, часто оставались неиспользованными, поскольку старые клиенты их не поддерживали. Нам предстояло решить, как отобразить альтернативы или полностью отказаться от функций. Например, функция Sneaking изменяла рост игрока, позволяя пользователям 1.14 получать доступ к зонам, недоступным для старых версий.

Несмотря на отсутствие широкого распространения, мы все же интегрировали улучшения качества жизни для новых версий:
- Эффекты свечения для 1.9+
- Цветные полосы боссов для 1.9+
- Цветные кровати в BedWars для 1.12+
- Цифры на табло скрыты для 1.20.3+
- Ссылки на сервер для 1.21+

Планке, сетевые операции

Внезапное осознание

Шли годы, и мы чувствовали себя комфортно. Hygot выполнял свою работу и был очень хорошо оптимизирован для того, что он делал. Но вот чего он не делал, так это всего остального. Мы никогда не обновляли Hygot для последних версий. Мы не делали много работы и оптимизировали наши ресурсы. Мы позволили игрокам последних версий присоединиться к серверу, но мы не учили Hygot всем новым крутым вещам Minecraft.

В фоновом режиме Spigot продолжал расти. Если бы сегодня мы взяли Spigot и просто применили его к Hypixel, это бы просто не сработало. Это потребовало бы переписать все наши игры. После оценки работы стало ясно, что лучшим вариантом будет обновление Hygot. Однако для этого необходимо проделать огромную работу.

К сожалению, вся эта работа не может быть просто скопирована из текущего Spigot - необходимо провести множество экспериментов и испытаний, прежде чем мы сможем написать правильный код и выпустить его в продажу, ведь мы так долго работали над сервером на нашем собственном коде. Он должен продолжать работать.

Релиз Hypixel Latest

В тайне, в фоновом режиме, который не видят игроки, мы понемногу переделывали всю нашу серверную инфраструктуру. Я хотел бы поблагодарить @TheMGRF, @Nitroholic_ и @ConnorLinfoot, которые усердно работали над этими вещами, и за их помощь в написании этого раздела.

Это те вещи, которые мы обкатали в сети на данный момент - вещи, которые вы не видите, так как они не обязательно используются или используются в фоновом режиме. На данный момент насчитывается более 30 000 строк кода, распределенных по более чем 800 коммитам в более чем 500 файлах:

  • Новые атрибуты
  • Новые эффекты зелий
  • Новые картины
  • Обновлена обработка тиков и движений игрока
  • Правильно реализован режим зрителя "noclip"
  • Переработаны определения сущностей, чтобы они лучше масштабировались с новыми версиями и позволяли использовать статические ссылки на сущности для привязки сущностей к версиям
  • Значительно улучшена поддержка версионности (привязка к протоколу/версии) для блокировки элементов, сущностей и блоков к определенным версиям
  • Пользовательские данные модели
  • Отделка брони
  • Возможность скрыть всплывающую подсказку для отмеченных предметов
  • Форматирование табло (скрытие красных цифр)
  • Много рефакторинга

Перечисленные ниже работы находятся в стадии завершения и еще не перенесены на живой сервер. Они содержат более 70 000 строк кода, распределенных по более чем 900 коммитам в более чем 400 файлах:

  • Новые частицы
  • Больше новых картин
  • Поддержка работы с руками
  • Улучшения двигателя освещения
  • Обновленная механика лодок
  • Поддержка обновленной механики передвижения (например, ползание, плавание и элитра)
  • Поддержка пользовательских биомов
  • Поддержка пользовательских моделей и анимаций (!!!!)
  • Поддержка RGB-цветов текста (что приведет к еще большей работе над ресурспаком)
  • Поддержка блоков до версии 1.20.5 (включает улучшения поведения/коллизий существующих блоков)
  • Поддержка сущностей до 1.20.5Мы
    • также будем добавлять сущности и блоки более новых версий по мере необходимости
  • Поддержка новых атрибутов сущностей, например, возможность контролировать размер сущностей (включая игрока)
  • Конвертер миров, который будет принимать миры в формате последней версии и переносить их в наш формат 1.7
  • Поддержка нативной загрузки миров из формата последней версии, чтобы заменить конвертер миров для лучшей и быстрой поддержки.

Это лишь небольшой обзор того, над чем нам пришлось поработать для поддержки последней версии Hypixel. Есть еще столько всего, что мы не будем вдаваться в подробности.

Что же это позволяет нам делать?

О боже, сколько всего мы можем сделать. Есть несколько популярных серверов последней версии, которые уже могут доказать, что мы можем сделать, когда обновим Hypixel до последней версии. Это и пользовательские меню, и пользовательские мобы, и пользовательские биомы, и уникальные предметы, и функциональность - всего очень много. На данном этапе большая часть разработок в Hypixel для игр ожидает завершения этих изменений. Вам, ребята, больше всего знакома игра Foraging.

Но как насчет того, чтобы взглянуть на некоторые другие? Я не буду вдаваться в подробности о некоторых из них - вы, ребята, можете строить догадки и теряться в догадках.

Означает ли это переписывание Hypixel SkyBlock?

Прежде чем я удовлетворю вашу жажду спойлеров, утечек и разоблачений, я должен упомянуть одну важную деталь. Мы не будем полностью переписывать Hypixel SkyBlock, как многие предполагали тут и там.

Все это не означает переписывания SkyBlock. Hygot - это серверное программное обеспечение Hypixel, а не сами игры. Ни одна из игр не переписывается, так как это было бы немыслимым объемом работы и только риском повторения ошибок (дубли?).

Улучшения происходят в виде дополнений - мы добавляем новые функции в SkyBlock, и, возможно, редактируем некоторые старые, которые могли бы быть обновлены (подумайте о меню с ресурс-паками). Функциональность этих меню не изменяется и не переписывается, так что это также не риск дублирования/стирания, просто все перемещается и выглядит лучше, функционирует лучше и читается лучше. Это просто лучше.

➥ Небольшой бонус за добычу корма

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

С момента последнего обновления мы внесли некоторые изменения в систему Охоты. Вместо того чтобы игроки выбирали свои атрибуты в меню, теперь все атрибуты будут неотъемлемыми, то есть будут работать одновременно. Мы поняли, что при таком большом выборе в SkyBlock постоянная смена атрибутов может стать обременительной. Теперь игроки сосредоточатся на сборе как можно большего количества осколков с помощью охоты или слияния, чтобы максимально улучшить свои атрибуты. Имейте в виду, что эта система может быть изменена по мере тестирования (в том числе на Альфе).

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

Мы усердно работаем над завершением "Охоты", прежде чем выпустить ее в последних версиях. Мы понимаем, что некоторые игроки обеспокоены переходом на новую систему и потенциальным влиянием на тех, кто потратил значительное время на получение редких божественных камней. Наша цель - сделать это обновление выигрышным для всех, поэтому мы прилагаем дополнительные усилия, чтобы обеспечить справедливый и выгодный переход для всех игроков.

А пока вот несколько милых зверушек!



Одна менее секретная вещь, над которой мы работаем, и мы очень рады, что вы, ребята, поиграете с ней в какой-то момент в будущем, это меню. Это то, что регулярно можно увидеть на большинстве современных серверов последних версий — невероятно красивые меню, каждое из которых имеет уникальный вид, отражающий сервер, на котором вы играете.



Начиная со SkyBlock, но в конечном итоге и для всей сети (или, по крайней мере, для большой ее части), мы выпустим классные меню для игроков последних версий, чтобы они могли с ними поиграть. Вот небольшой тизер двух из этих меню, демонстрирующий, насколько больше мы можем показать с помощью пакета текстур:


 


➥ Что-то еще ?



➥ А как насчет других мини-игр ?

Нам нечего раскрывать по этому поводу, потому что мы пока не уверены, в каком направлении мы собираемся двигаться. Однако я могу сказать, что мы очень много думаем о потенциальном выпуске сиквелов некоторых из наших самых знаковых и популярных мини-игр с сильными функциями последней версии. Это потребует от нас довольно много экспериментов, пока мы не решим, что мы хотим с ними делать (или даже что мы можем сделать). В конце концов, это должно быть лучше .

► Заключительные мысли

На этом завершается этот блог разработчиков, написанный в основном не разработчиками. Мы надеемся, что эта информация поможет с долгим ожиданием, поскольку мы так же взволнованы и нетерпеливы в отношении этих вещей, как и вы. Эти вещи требуют времени для разработки, и не все наши разработчики обладают техническими знаниями для этого. Будьте уверены, что те, кто это делает, посвящают все свое время тому, чтобы мы достигли нашей новой цели.


img

Другие новости

Sheep Wars v1.0 — комплекты, новые карты и лобби Wool Games

Sheep Wars v1.0 — комплекты, новые карты и лобби Wool Games

Сегодня мы выпускаем Sheep Wars в обновленном лобби Wool Games! Вот что включено в это обновление...

Блог разработчиков — Навигация по мультиверсиям мира Minecraft

Блог разработчиков — Навигация по мультиверсиям мира

Большая часть информации, которую вы собираетесь прочитать, как и ожидалось от моей роли, была написана другими...

Оставить комментарий