{"id":4094,"url":"\/distributions\/4094\/click?bit=1&hash=9d794bcd6120e613dd479f448eb38d23f5bf2998d46cacb8cc7673cfb9db5949","title":"\u0417\u0430\u0447\u0435\u043c \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a\u0443 \u043c\u0438\u0448\u043a\u0430-\u0431\u0443\u043d\u0442\u0430\u0440\u044c, \u043a\u043e\u0442\u0438\u043a \u0414\u0437\u044b\u043d\u044c \u0438 \u0447\u0451\u0440\u043d\u0430\u044f \u0443\u0442\u043e\u0447\u043a\u0430?","buttonText":"","imageUuid":""}

Тысячи игроков в одном чанке: новая ветка развития Minecraft

Как «синхронизировать» множество серверов в единый бесшовный мир и как изменится игровое сообщество с выходом нового серверного ядра — MultiPaper.

Как тебе такое, Маркус Перссон? Отрывок со стрима Ish.

Одной из самых главных проблем большинства игровых серверов является однопоточность или сильная зависимость от главного потока, где важна частота процессора (а точнее IOPS), что сильно ограничивает масштабность игры в мультиплеере. Разработчики Minecraft пытаются решить данную проблему ещё с версии 1.14, но всё упирается в сложности разработки и «неповоротливость» компании. С каждой новой версией производительность серверов наоборот ухудшалась. Многие всё ещё остаются на 1.12 ради возможности вместить больше 200 игроков.

В 2020 году студия Mojang экспериментировала с Aether Engine компании Hadean, чьи технологии используются в EVE Online Aether Wars. Они смогли поднять сервер на 1024 игрока.

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

Майкл Вайлбахер, CTO Mojang Studios

Что в итоге получилось от сотрудничества непонятно. Сообщество решило взять эту задачу в свои руки. С каждым годом серверные ядра, плагины и моды пытались превзойти друг друга добавляя всё больше оптимизаций и переписываний оригинального кода игры под многопоточность.

В 2021 году появился проект Mammoth от WorldQL. Они пытались добавить возможность горизонтального масштабирования с использованием общей базы данных и брокера сообщений. Проект провалился.

Горизонтальное масштабирование подразумевает увеличения вычислительных ресурсов путём распределения задач на разные компьютеры и сервера. А вертикальное — увеличение на уже имеющихся мощностях (апгрейд процессора, добавление памяти)


Форк — использование кодовой базы программного проекта в качестве старта для другого, при этом основной проект может как продолжать существование, так и прекратить его. Википедия

Также можно отметить попытки реализовать полностью самописные движки для сервера. С 2019 года в медленном темпе разрабатывается Feather, написанный на Rust. Выглядит перспективно, но не понятно что с проектом.

Ещё есть Minestom, что также пытаются написать свой мультипоточный сервер, но уже на Java. Имеют довольно активное сообщество. Подходит скорее для мини-игр, чем на полноценный опыт.

Для ядер Fabric и Forge также были попытки написать моды на многопоточность — MCTM и MCTMFabric. Разработка практически не ведётся.

Начало положено

В это же время над своим решением начал работать австралийский разработчик PureGeroMultiPaper (github / сайт). Основой для него является серверное ядро Pufferfish. Это позволяет получить лучшую производительность со всеми оптимизациями и сохранить совместимость с гигантской экосистемой плагинов Bukkit. Вот так выглядят отношения между популярными серверными ядрами:

  • Vanilla → CraftBukkit → Spigot → Paper → Airplane → Pufferfish → MultiPaper

  • Vanilla → CraftBukkit → Spigot → Paper → Airplane → Pufferfish → Purpur

  • Vanilla → Fabric

В начале марта 2022 года проект вышел в полный open-source и публичную бету. Это произошло благодаря финансированию со стороны CritterzNFT. До этого использовалась модель с платным доступом к ветке с более оптимизированной и «вместительной» версией. Известность проект уже получил с выходом видео ютубера Ish с РП ивентом про тюрьму.

1000 игроков симулируют тюрьму в Minecraft

Потенциал невероятный и оно уже работает! Не без багов, но всё же. Вы только представьте какие весёлые и масштабные идеи можно реализовать: вместо мини-игр можно устраивать уже большие, королевская битва на несколько тысяч игроков, политические сервера с упором на экономику с городами и королевствами, сервера анархии с безумными событиями. Это действительно превратит Minecraft в ММО со своей существующей метавселенной.

Проект находится в стадии бета-тестирования и постоянно улучшается. Но требуется помощь сообщества в распространении информации о нём. Это поможет в интеграции и поддержке серверов MutliPaper уже существующими плагинами и написанию новых из-за увеличения популярности. Я верю, что проект станет трендовым. Возможно даже привлечёт новую аудиторию в игру. Всё из-за того, что здесь нет слишком амбициозных замашек вроде написания движка с нуля.

Клиент на Fabric с множеством модов на Multipaper сервере с плагинами

Как это работает?

Концепт MultiPaper состоит из мастера — общей базы данных, шардов (нод) — игровых серверов, и прокси. Шарды общаются друг с другом напрямую p2p и координируются с мастером.

Схема инфраструктуры

Multipaper Master — это прокси-сервер и база данных, которая взаимодействует между подчиненными серверами и предоставляет сервис, на основе которого эти серверы синхронизируют свои данные и отправляют пакеты. Каждый сервер MultiPaper подключается к одному Master, чтобы данные между ними обновлялись в режиме реального времени. Если игрок на сервере A атакует другого игрока на сервере B, сервер A отправит эти данные прямо на сервер B, чтобы сервер B нанес повреждения игроку и применил обратную связь.

PureGero, автор проекта

Такая координация позволяет удостоверится, что каждый загруженный чанк «тикается» только одним сервером за раз и позволяет осуществлять смену текущего «владельца» чанка в зависимости от нагрузки. Каждый шард кэширует чанки, которые нужны игрокам, что обслуживаются им. Если правильно всё сделать, то вы сможете поднимать/останавливать шарды по мере необходимости и игроки практически бесшовно будут переключаться между ними (увидят лишь загрузочный экран на 1 секунду).

Вывод команды /servers с информацией о состоянии каждого шарда

Недавно PureGero поставил рекорд по заполненности сервера — 7000 ботов в одном прегенерированном мире на 7200x7200 блоков со 100+ ботами на каждом шарде. Для этого использовались виртуальные сервера Google Cloud Platform. Также потребовались тонкие оптимизации настроек методом проб и ошибок.

Стресс-тест ботами - https://github.com/PureGero/minecraft-stress-test

Достаточно тяжело уловить золотую середину между количеством шардов на машине, количеством памяти на один шард и расходами на хостинг. Всё это очень индивидуально и зависит от концепции сервера. Рекомендуется арендовать выделенные сервера на расстоянии до 1мс между шардами и мастером для избегания проблем с синхронизацией и с хорошей шириной канала.

Уже есть некоторый список проверенных плагинов, что были опробованы с MultiPaper. Вы можете попробовать и другие. Если в плагине есть поддержка работы с базами данных, то есть вероятность, что он заработает без изменений. Тут уже надо экспериментировать.

Советую вступить в discord разработчика MultiPaper, чтобы иметь возможность задавать вопросы и делится своим ценным опытом с другими. Есть слухи, что уже больше 5 крупных коммерческих компаний готовят новые сервера на MultiPaper на протяжении последних нескольких месяцев.

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

Немного расскажу про свой опыт. Я являюсь одним хостом довольно крупного игрового проекта и discord-сообщества на 17000+ участников. Оно сформировано по совершенно другой нишевой игре, не Minecraft. Дневной онлайн на наших игровых серверах составляет обычно 400-600 игроков.

Недавно попробовали вместе с некоторыми стримерами Банды (суммарно вышло 1к+ зрителей) организовать ивент на MultiPaper сервере с двумя этапами: строительство игровой зоны (город/пригороды) и последующая масштабная королевская битва. Как оказалось, привлечь больше чем 100 игроков довольно трудно, даже если есть такое немалое сообщество и среднего размера стримеры.

Поэтому мне интересно посотрудничать со стримерами, ютуберами и сообществами в организации чего-нибудь интересного на MultiPaper или просто общения для обмена опытом.

Telegram: @azizonkg

0
142 комментария
Написать комментарий...
Gelatin Based Lifeform

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
1 комментарий
Юриевич Я

Есть ссыль на этот видос?

Ответить
Развернуть ветку
1 комментарий
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
3 комментария
BroShow

90 уже есть

Ответить
Развернуть ветку
3 комментария
Fahrenheit

Помню давно был проект под названием Ц-Фактотри и там можно было построить свой город и устанавливать свои правила

Ответить
Развернуть ветку
2 комментария
Charlie King

Только вот смысл от технологии, если отрисовка все равно остаётся главным бутылочным горлышком игры?
Частично это исправимо модами на стороне клиента (такими как Distant Horizons для новейших версий), но клиент все равно обязан отправлять запросы на сервер, а это весьма недёшево для хостинга.
И да, Mojang & Microsoft натуральные злодеи-капиталисты, при их возможностях и сверхприбылях могли бы уже давно всё это реализовать.
Новость топ, на серверах Minecraft никогда не играл, только одиночный режим, но представляю, какую радость это доставит другим.

Ответить
Развернуть ветку
Евгений Белоусов

Какая ебанутые претензия)
Это как подойти к столяру, который делает табуретку и заявить "ну ты мудак, а мог бы сделать скамейку, на которой сидели бы сразу несколько человек!"

Ответить
Развернуть ветку
21 комментарий
Азиз Чыналиев
Автор

Я настроил на сервере отрисовку игроков на расстоянии 16 чанков, но прорисовку до 8-ми. Но на клиенте у меня стоит мод FarSight с отрисовкой на 32 чанка (он держит в памяти недостающие чанки). Отлично работает.

Ответить
Развернуть ветку
Grand Osyotr
отрисовка все равно остаётся главным бутылочным горлышком

Особо никогда не ообращал внимания, ибо и 16 чанков за глаза, что уж про 32 говорить. С оптифайном тем более.
С дистант хорайзоном тем более

Ответить
Развернуть ветку
Азиз Чыналиев
Автор

Советую такую сборку модов для клиента на Fabric:

• BetterF3 (https://www.curseforge.com/minecraft/mc-mods/betterf3) - цветной текст в дебаг таблице

• BetterThirdPerson (https://www.curseforge.com/minecraft/mc-mods/better-third-person) - улучшение игры от 3-го лица

• Blur (https://www.curseforge.com/minecraft/mc-mods/blur-fabric) - приятный блюр при открытии инвентаря

• Continuity (https://www.curseforge.com/minecraft/mc-mods/continuity) - улучшение работы с текстурами

• DynamicSoundFilters (https://www.curseforge.com/minecraft/mc-mods/dynamic-sound-filters) - усиливает звуки от всего

• EntityCulling (https://www.curseforge.com/minecraft/mc-mods/entityculling) - улучшает произвотельность, не давая рендерится всему что не видно

• FallingLeaves (https://www.curseforge.com/minecraft/mc-mods/falling-leaves-fabric) - добавляет листопад для атмосферности

• Farsight (https://www.curseforge.com/minecraft/mc-mods/farsight-fabric) - помогает отрисовывать чанки в радиусе до 32, держа чанки в памяти.

• FerriteCore (https://www.curseforge.com/minecraft/mc-mods/ferritecore-fabric) - оптимизация памяти

• Indium (https://www.curseforge.com/minecraft/mc-mods/indium) - аддон для Sodium, оптимизация рендеринга

• Iris (https://www.curseforge.com/minecraft/mc-mods/irisshaders) - для использования шейдеров

• JourneyMap (https://www.curseforge.com/minecraft/mc-mods/journeymap) - удобная карта и мини-карта

• LiteMatica (https://www.curseforge.com/minecraft/mc-mods/litematica) - Для визуализации чертежей построек

• Lithium (https://www.curseforge.com/minecraft/mc-mods/lithium) - оптимизации

• ModMenu (https://www.curseforge.com/minecraft/mc-mods/modmenu) - меню модов

• ReplayMod (https://www.replaymod.com/) - запись событий вокруг игрока (аля регистратор на 360 градусов)

• Sodium (https://www.curseforge.com/minecraft/mc-mods/sodium) - оптимизация графики, самый важный мод

• Spark (https://www.curseforge.com/minecraft/mc-mods/spark) - профайлер для дебага

• Starlight (https://www.curseforge.com/minecraft/mc-mods/starlight) - оптимизация освещения

• Zoomify (https://www.curseforge.com/minecraft/mc-mods/zoomify/) - добавляет кнопку зума

Ответить
Развернуть ветку
icelandic one

И они не конфликтуют с друг другом и на 1.19 официальной версии нормально работать будут?

Ответить
Развернуть ветку
3 комментария
Arveredy

Спасибо тебе большое.

Ответить
Развернуть ветку
Grand Osyotr
приятный блюр

Ебучий блюр не может быть приятным

Ответить
Развернуть ветку
4 комментария
Kuro Nya

Блюр с содиумом ставить ммм

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
28 комментариев
Няша El Duro Россия! Мужчина

Майнкрампф моя жизнь!!!

Ответить
Развернуть ветку
Jerry Green

Майнкрампф: Как я боролся с драконом

Ответить
Развернуть ветку
1 комментарий
Маркий Марк

Осуждаем

Ответить
Развернуть ветку
Grino
Ответить
Развернуть ветку
AGRH SHT

Скоро у всех блогеров летсплейщиков:
- "Заходи на новый сервер Маинкрафт 5 РП и получай 10 фриспинов на свой депозит"

Ответить
Развернуть ветку
Jerry Green

NFT-сервер майнкрафта: купи своего уникального персонажа с уникальной внешностью, а когда перестанешь играть, продай его за дороже

Тут же начнётся бум доткомов в майнкрафте, и все начнут скупать персонажей даже если они им не нужны. Абсолютно пустые миры с поддержкой 10к игроков, где играют три с половиной инвалида, и остальные 9к аккаунтов просто ради «инвестирования»

Ответить
Развернуть ветку
1 комментарий
Dmitriy Studenikin

Аве легион. Но вообще удивлен, что только 100ку набрали игроков. Если бы шусс подрубил, я думаю под 500 зашло бы.

Ответить
Развернуть ветку
Маку Гибельный

Таки да, Алькора тогда смотрели 400-500 человек.

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

А не так чтобы, игроки зашли и занимались чем попало, как будто играют в соло.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Gabriel

Не знаю что на счёт срачей, но неофициальный сервер в подсайте майнкрафта есть

Ответить
Развернуть ветку
Креативный Директор

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

Ответить
Развернуть ветку
Абырвалг Абырвалг

Create к такому довольно близко подошёл, поезда у них точно неплохие.

Ответить
Развернуть ветку
Bee

Их и не будет, потому что концептуально в майнкрафте все структуры из блоков статичные, только лишь как в моде на корабли на 1.7.10

Ответить
Развернуть ветку
1 комментарий
Charlie King

Есть классный The Ships Mod, но он под 1.7.10. В комментарии ссылка на сам мод и его обзор.
https://www.curseforge.com/minecraft/mc-mods/ships-mod
https://youtu.be/neK_B63kI_4

Ответить
Развернуть ветку
1 комментарий
Alexander Petrov

Я еще в Archimedes ships играл с похожей механикой. Попробовал запустить воздушный шарик с крыши своей башни, забыл отшвартоваться и улетел вместе с башней.

Ответить
Развернуть ветку
1 комментарий
PoLaRus

Мод Валькирия есть
Вот он крутой…

Ответить
Развернуть ветку
Фабиус Байл

https://www.curseforge.com/minecraft/mc-mods/valkyrien-skies шикарный мод для 1.12.2 с вот этим вот всем. У меня не лагало.

Ответить
Развернуть ветку
Олег тян

есть Davincis Vessels, но он не поддерживается давно и остановился на 1.12.2:
https://www.curseforge.com/minecraft/mc-mods/davincis-vessels
потом, как сверху уже сказали, недавно в Create поезда добавили:
https://youtu.be/rR8W-f9YhYA
так же для Креэйта люди аддоны разрабывают, так что советую посмотреть и следить
Create Aeronautics:
https://youtu.be/1y-X2m4Pw0Y
Create Offroad Expansion:
https://discord.gg/Srtr3B7jHN
Create Liftoff:
https://discord.gg/R4VgZrwe8Q

Ответить
Развернуть ветку
2 комментария
Darmol

Есть мод The Create, но там есть лишь поезда

Ответить
Развернуть ветку
Aldo

Добавьте пж, теги: название игры, жанр

Ответить
Развернуть ветку
Азиз Чыналиев
Автор

Ой, забыл добавить

Ответить
Развернуть ветку
1 комментарий
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Азиз Чыналиев
Автор

Ещё список нишевых проектов, что пытались решить проблему:
• Anchor (https://github.com/AnchorMC/Anchor) - реализация на Go, небольшой список реализованных фич.
• flying-squid (https://flying-squid.prismarine.js.org/) - сервер на NodeJS, так же очень маленький список реализованного. Зато у них хорошая библиотека для создания ботов.
• basin/MotorMC (https://github.com/basinserver/basin / https://github.com/garet90/MotorMC) - реализация на C, зато blazing fast, multi-threaded, asynchronous, но заброшены
• Cuberite (https://cuberite.org/) - Реализация на C++, своя система плагинов на Lua и по утверждениям огромная производительно с разделение задач на треды (похоже на MCMT), так же скрин с их утверждениями VVV

by Morty

Ответить
Развернуть ветку
andrey 27

Cuberite очень перспективный был, пока не застрял на обнове до 1.13, которой так и нет. К сожалению, без последних версий смысла от него нету..

Ответить
Развернуть ветку
Маркий Марк

Давайте теперь то же самое в СтарСитизен, чтобы его был повод скачать

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
1 комментарий
Азиз Чыналиев
Автор

Там Ish во всю смакует MultiPaper. Недавно была "цивилизация на 1000 игроков". Теперь прятки на 1000 игроков.

Ответить
Развернуть ветку
Jerry Green

Цивилизация на 1000 игроков? Сколько такая игра должна длиться? Две тысячи лет?

Ответить
Развернуть ветку
2 комментария
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Рома Дмитриев

мультивселенная безумия, так вот она какая

Ответить
Развернуть ветку
Rick Dalton

Пиши ещё, интересно.

Ответить
Развернуть ветку
Ебанькот

Ave получается

Ответить
Развернуть ветку
De Gugo

Ребята, если скачать пиратку, то можно ли играть на серверах? Просто никогда не играл в Майнкрафт, сейчас чёт захотелось

Ответить
Развернуть ветку
andrey 27

С пиратки - только на приатских, с лицухи - на любых

Ответить
Развернуть ветку
XOCPOB

Бегаю ток на ванилках, там тока и молишся, чтоб другого игрока не встретить... Ну их.

Ответить
Развернуть ветку
Jarrvi

В кой то веке можно политические сервера хоть с какой то жизнью на сервере держать

Ответить
Развернуть ветку
Vitaliy A.
Такая координация позволяет удостоверится, что каждый загруженный чанк «тикается» только одним сервером за раз и позволяет осуществлять смену текущего «владельца» чанка в зависимости от нагрузки.

Не совсем понимаю: а если в чанк забежит вся тысяча человек разом - сервер сдохнет?
.
Плюс что будет если игроки на двух чанках начнут активно взаимодействовать - ведь каждое взаимодействие будет запускать обмен сообщениями между серверами, всё может сильно просесть.
.
А так да, интересный проект. Хотя, подозреваю, багов там фиксить-не перефиксить.

Ответить
Развернуть ветку
Азиз Чыналиев
Автор

Игроки и мобы обрабатываются серверами, на которых они находятся. Но конкретно всё остальное лежит на плечах одного сервера, чей чанк.

Ответить
Развернуть ветку
Пифагор Games

Ну кто играет думаю если не школьник и не дурак, то рубит бабок на стримах. Я вот смысла играть не вижу, вроде как еще гамаз открыл игру коммьюнити в бородатых 2009-2010 годах

Ответить
Развернуть ветку
Креативный Директор

Технически решение интересное. Я делал когда-то, лет 10 назад, до 5К игроков в одном чанке для корейского проекта. В итоге оказалось, что ни игрокам ни геймдизайнером до таких количеств интереса нет. Тогда уже была мода на "измерения", мы в итоге разбили игроков по "измерениям", чтобы один клиент видел только часть интересных для него игроков, остальные по необходимости.

Ответить
Развернуть ветку
Азиз Чыналиев
Автор

Круто! Надо было в open source пускать)

Ответить
Развернуть ветку
Grand Osyotr

До сих пор жду нормальной мморпг на основе майна. С квестами, данжами, рейдами, боссами, ивентами и глобальным сюжетом, изменениями в мире. И конечно же войной гильдий с осадами и захватом территорий

Ответить
Развернуть ветку
Азиз Чыналиев
Автор

Потихоньку набирает популярность https://youtu.be/mEeXhNpv8nI?t=346

Ответить
Развернуть ветку
Азиз Чыналиев
Автор

Обнаружил, что допустил ошибку в тексте: не IOPS, а IPS

Ответить
Развернуть ветку
deathinitely666

кубаноиды, в атакуууу! xD

Ответить
Развернуть ветку
135 комментариев
Раскрывать всегда
null