Тысячи игроков в одном чанке: новая ветка развития Minecraft
Как «синхронизировать» множество серверов в единый бесшовный мир и как изменится игровое сообщество с выходом нового серверного ядра — MultiPaper.
Одной из самых главных проблем большинства игровых серверов является однопоточность или сильная зависимость от главного потока, где важна частота процессора (а точнее 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. Разработка практически не ведётся.
Начало положено
В это же время над своим решением начал работать австралийский разработчик PureGero — MultiPaper (github / сайт). Основой для него является серверное ядро Pufferfish. Это позволяет получить лучшую производительность со всеми оптимизациями и сохранить совместимость с гигантской экосистемой плагинов Bukkit. Вот так выглядят отношения между популярными серверными ядрами:
Vanilla → CraftBukkit → Spigot → Paper → Airplane → Pufferfish → MultiPaper
Vanilla → CraftBukkit → Spigot → Paper → Airplane → Pufferfish → Purpur
Vanilla → FabricСтрим ютубера Ish. Все 897 игроков собрались в одном месте."Попробовать поиграть самому можно уже сейчас на специально созданном под эту статью сервере на MultiPaper. Он тестовый и не будет регулироваться, поэтому прошу соблюдать рамки приличия и быть благоразумными.
Хотел сразу на 1.19 сделать, но один из плагинов на приват, HuskTown, не успел обновиться.
syndicate.ss220.space - Minecraft 1.18.2 (любой клиент)"
Как это работает?
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
Email: azizonkg@gmail.com
Подробнее
09:27 Day tine I x: -1410. z: 1792. y: 179 <11> savanna i да i V.V i 1
Players Players
ÍServers] <flvg Tick Tine / Tps / [seruer4S215] 17ns, 20.0 tps, 37 [seruer67063] 50ns, 16.4 tps, 39 Cseryer03712] 20ns, 20.0 tps, 42 [seruer93024] 50ns, 16.3 tps, ¿II [seruer774S7] 16ns, 20.0 tps, 39 [serrer36693] 41ns, 19.5 tps, 33 Cser'...'er76373] 17ns, 20.0 tps, 46 [seruer30057] 13ns, 20.0 tps, 38 [seryerlÛ750] 17ns, 20.0 tps, 43 [seruer61065] 42ns, 19.0 tps, 37 [seruer65443] 22ns, 20.0 tps, 43 [seruer21873] 47ns, 17.2 tps, 36 [ser'...'er97193] 20ns, 20.0 tps, 37 [seruerS4516] 19ns, 20.0 tps, 41 [seryer05750] 21ns, 20.0 tps, 38 Flayer Count) players players players players players players players players players players players players players players players
ñücel016 6 Mil flücel034 0 ..mi flücel052 0 O С> G G1 И G G1 G G G G G G G1 G1 G1 G G G1 00 T LO Г- CO U-. G -H 03 00 T LO ‘JJ Г- 00 CT-LO LO LO LO LO LO LO \û ■■£« ‘-.Ü ‘-.Ü vü vû ‘.Jj 4ü 'JJ Г-Q G G1 G1 G1 G1 G1 G1 G1 G G G1 G G1 G1 G1 G1 G G ■Н-Н-Н-Н-Н-Н-Н-Н-Н’Ч-Н’Ч-Н-Н-Н-Н-Н-Н-Н ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai о .9 .9 .9 .9 .9 .9 .9 .9 .9 .У .У .9 .9 .9.9 ccccccccccccccccccc C1 c G G G G1 G G1 G G G1 G' G1 G1 G G G G G1 LO 4ü Г- 00 iJï G -H OJ CO T ÜO чО Г- СО СГ-. G -H CO CO CO CO CO TTTTTTTTTTTÜOÜO ÜO Cl G G G G G G G G G G G G G G G G G G ai ai a> ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai .9 .9.9 .9.9.9.9 .ÿ .9.9.9.9.9.9.9 .9 CCCŒCCŒCCCCCCCCŒ Cl Ci G G G G G G G G G G G Ci G G G G G Г - СО СГ- G -H OJ CO T ÜO '■£} Г- CO CT. G -H OJ G ■H -H -H OJ OJ OJ OJ OJ OJ OJ OJ OJ OJ OJ O} 00 00 00 CO Ci G G G G G G G Ci G G G G G G G G G G ■Н’Ч-Н-Н-Н-Н’Ч-Н-Н-Н-Н-Н-Н-Н-Н-Н-Н-Н-Н ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai .9 .9.9.9.9 .9 .9.9.9.9.9.9.9.9.9.9 ccccccccccccccccccc Cl G G G G G 'G G G G G G G G G G G G G G G -H 0J 00 4- L0 VÛ Г- СО (T-. G H OJ 00 LO GGGGGGGGGGG’H-H-H-H-H-H-H С G G G G G G G G G G G G G G G G G G ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai ai .9.9.9.9 ü.9.9.9.9.9 .2 ü ü o ü о ü о ü ü cccccccccccccccccccc Flayers: 7000 I TF5: 20 I Fing: 203 ns
1000 Players Simulate Prison in Minecraft,Entertainment,ish13c,ish,Minecraft Civilization,Minecraft Prison,1000 Players Simulate Prison in Minecraft,prison escape,minecraft prison escape,100 players simulate civilization,100 player civilization in minecraft,minecraft,prison experiment,minecraft roleplay,minecraft story,minecraft movie,minecraft film,minecraft intense,minecraft funny,In this video, I put 1000 Minecraft players in a massive prison. There were 1000 cells, 100 guards, and 1 warden. Each player only had one life. Will the guards maintain order, or will the prisoners riot and escape? Who will survive? Find out now! JOIN MY DISCORD SERVER: https://discord.gg/state More info: Out of 4000+ applicants, 1040 players were accepted to play in my prison event. On the first day, players were led from a giant boat into the prison, where they explored their new home. The prison consisted of four large plots where players could build, long hallways with cells and bathrooms, a cafeteria, an infirmary, and the Warden's Tower. Some prisoners grouped up to cause trouble, while others remained peaceful. Guards functioned within a hierarchy—warden, deputy warden, elite team, prison guard, and perimeter team. Some of the visuals and audio in this video were recorded after the server ended and are not from the actual event. Additionally, some of the plot information in this video is inaccurate/incomplete for purposes of simplification and storytelling. 0:00 - Intro 0:36 - Day 1 6:43 - Day 2 13:57 - Day 3 19:34 - Day 4 28:46 - Day 5 #Civilization #Minecraft My Twitter: https://twitter.com/ish13c
Игры,Minecraft,Мультиплеер,видео,video,длиннопост
А вот если подобные технологии применить там, где карты реально масштабные (Дейзи), или где есть возможность для расширения и разнообразия (Конан) - то здесь уже огромный потенциал есть. Основная причина по которым в этих играх было скучно как раз обратная - мало игроков, в первом случае их хрен найдёшь, а во втором - многочисленная группа легко вытесянет с сервера остальных и убивает его. Не говоря уже о том что со временем сервер превращается в лагодром.
Там вроде создатели пубга клепают сейчас масштабную выживалку, может у них и получится. Или у кого ещё. Но я почти с самого детства мечтаю о подобной игре. В плане механик уже всё реализовали, осталось лишь докинуть масштаба и будет идеально.
Но зачем, если и так уже есть полноценные
> рол-плеи всякие, королевские битвы, ммо и так далее
Вооплощённые в других играх.
Вся прелесть именно в этом, хочешь устраивай войну королевств и строй замки под все это дело, захватывай их и тд.
Хочешь объединяйся и строй огромный жилой город, в средневековом ( или любом другом ) сетинге.
В общем одна из тех игр, которые позволяют творчески подойти к любому вопросу, другие игры с похожими возможностями зачастую ограниченны базовыми асетами, Майн ничем не ограничен, взял блок и пошел его ставить куда захотелось.
teh drama
да и в целом читать было интересно
Азиз все хуйней страдает.
Сперва кучу версий сс13 наподнимал, теперь майном занимается