Доброе утро, мои друзья. Меня зовут Донпиресо, и сегодня я пишу этот блог о трудностях, с которыми сталкивается Hypixel в грандиозном процессе обновления сервера Hypixel для Minecraft до самых последних версий Minecraft. По иронии судьбы, я не разработчик - я руководитель команды. Я указываю на вещи, чтобы они реализовались, затем другие делают их. Затем я выписываю им большую зарплату - хорошее время для всех нас.
Большая часть информации, которую вы собираетесь прочитать, как и ожидалось от моей роли, была написана другими членами команды. Моя цель в этом блоге разработчиков - собрать всю информацию, которую я могу получить от своих людей, о текущем большом меме: "Где добывать корм? Для тех, кто не играет в Hypixel SkyBlock, этот вопрос, вероятно, не имеет смысла.
Три года назад мы впервые упомянули об обновлении Foraging Update для игроков.
С самого начала мы всегда ставили перед собой цель дать игрокам солидное обновление для фуражиров, равное обновлению для добытчиков в гномьих шахтах и кристальных впадинах. Очевидно, что добыча полезных ископаемых и кормодобыча - это совершенно разные игровые стили (кроме бездумного аспекта), и атмосфера и локации вокруг них всегда должны быть совершенно разными - мы не можем просто поместить игроков в пещеру на дереве.
Очень быстро мы поняли, что последние версии Minecraft имеют всевозможные новые активы и механики, которые могут значительно улучшить кормовой остров. Пользовательские биомы, новые текстуры и блоки, всевозможные реквизиты для растительности - карта для фуражировки может выглядеть просто потрясающе.
Вдобавок ко всему, мы начали думать о будущем Minecraft - по сути, о том, что мы, как сервер - ведущий сервер, не меньше - так надолго застряли в прошлом. Если честно, мы многого добились с тем, что у нас есть. Такие карты, как Пещеры гномов и Багровые острова, просто фантастические, и все благодаря нашей невероятной команде сборщиков. Но у нас появился зуд - что, если бы у нас были карты последней версии? Что, если бы у нас была последняя версия геймплея, предметов и существ? Что, если бы у нас были надкрылья? Что, если бы у нас былибелые медведи ? Что, если бы мы сделали пользовательские пакеты ресурсов, уникальные меню, уникальные модели и уникальных боссов? Наше воображение не знало границ.
С тех пор мы работаем над целым рядом проектов, которые могут похвастаться последними возможностями версии (хотя не все из них дойдут до публики). Но как так получилось, что прошло лет с тех пор, как мы начали, а нам почти нечего показать? Это и будет сегодняшней темой, друзья мои.
Много лет назад, когда сервер был еще маленьким мальчиком, бегающим по летней траве, команда эльда принимала решения, которые в конечном итоге повлияли на будущее сервера. @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 - необходимо провести множество экспериментов и испытаний, прежде чем мы сможем написать правильный код и выпустить его в продажу, ведь мы так долго работали над сервером на нашем собственном коде. Он должен продолжать работать.
В тайне, в фоновом режиме, который не видят игроки, мы понемногу переделывали всю нашу серверную инфраструктуру. Я хотел бы поблагодарить @TheMGRF, @Nitroholic_ и @ConnorLinfoot, которые усердно работали над этими вещами, и за их помощь в написании этого раздела.
Это те вещи, которые мы обкатали в сети на данный момент - вещи, которые вы не видите, так как они не обязательно используются или используются в фоновом режиме. На данный момент насчитывается более 30 000 строк кода, распределенных по более чем 800 коммитам в более чем 500 файлах:
Перечисленные ниже работы находятся в стадии завершения и еще не перенесены на живой сервер. Они содержат более 70 000 строк кода, распределенных по более чем 900 коммитам в более чем 400 файлах:
Это лишь небольшой обзор того, над чем нам пришлось поработать для поддержки последней версии Hypixel. Есть еще столько всего, что мы не будем вдаваться в подробности.
О боже, сколько всего мы можем сделать. Есть несколько популярных серверов последней версии, которые уже могут доказать, что мы можем сделать, когда обновим Hypixel до последней версии. Это и пользовательские меню, и пользовательские мобы, и пользовательские биомы, и уникальные предметы, и функциональность - всего очень много. На данном этапе большая часть разработок в Hypixel для игр ожидает завершения этих изменений. Вам, ребята, больше всего знакома игра Foraging.
Но как насчет того, чтобы взглянуть на некоторые другие? Я не буду вдаваться в подробности о некоторых из них - вы, ребята, можете строить догадки и теряться в догадках.
Прежде чем я удовлетворю вашу жажду спойлеров, утечек и разоблачений, я должен упомянуть одну важную деталь. Мы не будем полностью переписывать Hypixel SkyBlock, как многие предполагали тут и там.
Все это не означает переписывания SkyBlock. Hygot - это серверное программное обеспечение Hypixel, а не сами игры. Ни одна из игр не переписывается, так как это было бы немыслимым объемом работы и только риском повторения ошибок (дубли?).
Улучшения происходят в виде дополнений - мы добавляем новые функции в SkyBlock, и, возможно, редактируем некоторые старые, которые могли бы быть обновлены (подумайте о меню с ресурс-паками). Функциональность этих меню не изменяется и не переписывается, так что это также не риск дублирования/стирания, просто все перемещается и выглядит лучше, функционирует лучше и читается лучше. Это просто лучше.
Мы планировали выпустить первый из трех островов, так как он уже завершен, но нам придется подождать, пока мы не будем готовы выпустить контент последней версии. Тем временем мы отлично продвинулись в работе над Охотой.
С момента последнего обновления мы внесли некоторые изменения в систему Охоты. Вместо того чтобы игроки выбирали свои атрибуты в меню, теперь все атрибуты будут неотъемлемыми, то есть будут работать одновременно. Мы поняли, что при таком большом выборе в SkyBlock постоянная смена атрибутов может стать обременительной. Теперь игроки сосредоточатся на сборе как можно большего количества осколков с помощью охоты или слияния, чтобы максимально улучшить свои атрибуты. Имейте в виду, что эта система может быть изменена по мере тестирования (в том числе на Альфе).
Обновление "Охота" также позволило нам сделать карту более живой, добавив таких существ, как лягушки, аксолотли, различные подводные существа Галатеи и многое другое.
Мы усердно работаем над завершением "Охоты", прежде чем выпустить ее в последних версиях. Мы понимаем, что некоторые игроки обеспокоены переходом на новую систему и потенциальным влиянием на тех, кто потратил значительное время на получение редких божественных камней. Наша цель - сделать это обновление выигрышным для всех, поэтому мы прилагаем дополнительные усилия, чтобы обеспечить справедливый и выгодный переход для всех игроков.
А пока вот несколько милых зверушек!
Одна менее секретная вещь, над которой мы работаем, и мы очень рады, что вы, ребята, поиграете с ней в какой-то момент в будущем, это меню. Это то, что регулярно можно увидеть на большинстве современных серверов последних версий — невероятно красивые меню, каждое из которых имеет уникальный вид, отражающий сервер, на котором вы играете.
Начиная со SkyBlock, но в конечном итоге и для всей сети (или, по крайней мере, для большой ее части), мы выпустим классные меню для игроков последних версий, чтобы они могли с ними поиграть. Вот небольшой тизер двух из этих меню, демонстрирующий, насколько больше мы можем показать с помощью пакета текстур:
Нам нечего раскрывать по этому поводу, потому что мы пока не уверены, в каком направлении мы собираемся двигаться. Однако я могу сказать, что мы очень много думаем о потенциальном выпуске сиквелов некоторых из наших самых знаковых и популярных мини-игр с сильными функциями последней версии. Это потребует от нас довольно много экспериментов, пока мы не решим, что мы хотим с ними делать (или даже что мы можем сделать). В конце концов, это должно быть лучше .
На этом завершается этот блог разработчиков, написанный в основном не разработчиками. Мы надеемся, что эта информация поможет с долгим ожиданием, поскольку мы так же взволнованы и нетерпеливы в отношении этих вещей, как и вы. Эти вещи требуют времени для разработки, и не все наши разработчики обладают техническими знаниями для этого. Будьте уверены, что те, кто это делает, посвящают все свое время тому, чтобы мы достигли нашей новой цели.