WorldRegenerator. Даёшь чистую карту!

WorldRegenerator. Даёшь чистую карту!
WorldRegenerator. Даёшь чистую карту!
Пожалуй, одной из главных проблем игры-песочницы как Minecraft является состояние карты, которое постепенно ухудшается в связи с деятельностью игроков (добыча ресурсов). На приватных серверах дело обстоит получше: большая карта и малый поток игроков - износ карты происходит гораздо медленнее. Но у нас публичный сервер и карта износится быстро. Износ карты - одна из причин необходимости проведения вайпов. Ведь с изношенной картой сервер теряет привлекательность для новичков: где найти нужные ресурсы, если их выкопали другие игроки?

Увы, порча карты не ограничивается лишь на одной добыче ресурсов. Подрастающее поколение строит столбы и многое другие, что заметно портит внешний вид карты. Похоже, что им нравится жить в "свалке" из блоков. После нескольких месяцев работы сервера хуже всего выглядят биомы "джунгли" и "пустыня". Также карту портят и нормальные игроки, но не они, а механизмы вроде карьера, которые выкапывают большие ямы.
WorldRegenerator. Даёшь чистую карту!
Вся суть столбостроительства.

Что же делать?
Делать вайп каждый месяц? - Нет, игроков только распугаем. Вайпать карту с сохранением приватов? - Не годится, некоторые блоки из модов плохо переносятся (теряются свойства, инвентарь). В голову нам приходит последний вариант - регенерировать участки карты, которые находятся в плохом состоянии. С самого запуска первых серверов мы активно занимались такой чисткой, правда, это делалось вручную. А сейчас серверов стало много и размеры карт уже не те, что раньше - всё обойти нам не по силам. Можно конечно было назначить людей, которые бы этим занимались, но тут проблема в доверии и в их силах - а вдруг отрегенерируют то что не нужно?

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

Ещё полгода назад по нашему заказу была разработана первая версия регенератора. Но её работа не увенчалась успехом - по непонятным причинам он попросту зависал. Его код был сложен для понимания, поэтому проект был заморожен и сотрудничество с тем исполнителем, который нам его написал было прекращено (первая версия модификации Additional Blocks с кучей багов - тоже его заслуга). :ploxo:

Совсем недавно было решено разморозить проект. В этот раз мы взяли всё в свои руки - так надёжнее. Решили писать с нуля. Результат увенчался успехом. Простой и понятный код, работает как часы. :smile:

Все три последние дня мы обкатывали регенератор на каждом из наших серверов. Была проведена регенерация основного и нижнего миров. Было обработано порядка 750 000 чанков, процесс занял около 7 часов (на один сервер).

Что же такое регенерация?
Регенерация - процесс восстановления участков карты в первоначальное состояние. Под участками мы понимаем чанки и выбор на них пал не случайно. Дело в том, что незаприваченная часть карты имеет сложную форму - её нужно как-то "выделить".

Во-вторых, обработать всю карту целиком нельзя - сервер упадёт. Следовательно, приходится разбивать задание на порции и чанки здесь подошли в самый раз. Дело в том, что Bukkit API предоставляет возможность регенерации чанков. Да, именно чанков. Регенерировать конкретную область нельзя - только весь чанк целиком. Возможно, Вы знакомы с командой WorldEdit - //regen. Так вот, эта команда регенерирует все чанки, по которым проходит выделенная область, а потом восстанавливает, то что не попало в выделенную область - в результате Вам кажется что произошла регенерация только выделенной области. Постройки игроков в этом случае могут пострадать, о чём говорилось, почему нам не подходит вайп с сохранением приватов.

В-третьих, так проще обработать незаприваченную часть карты в связи с её сложной формы. Тут система работает довольно просто: когда очередь доходит до чанка, система проверяет наличие приватов в нём. Если есть приват - пропускает чанк и переходит к следующему, выполняя аналогичную проверку. Чанк будет отрегенерирован только если в нём не удалось обнаружить приваты.

Таким образом, регенерация решает следующие проблемы:
  • Поддержка карты в хорошем состоянии.
  • Делает сервер привлекательным для новичков в любое время - теперь нет проблем с поиском ресурсов.
  • Убирает дыры от карьеров и прочих механизмов, изменяющих ландшафт.

Некоторым из Вас может показаться, что на этом всё: можно вводить безвайповую систему. Увы, но нет. Регенератор решает проблему состояния карты, но не решает проблему переизбытка ресурсов у игроков и даже способствует этому (ведь ресурсы можно будет добывать уже несколько раз в одном и том же месте). Всё же нашей главной целью введения регенератора было сделать сервер привлекательным для новичков, которые только зашли на сервер и наладить внешний вид карты. "Свалка из блоков" смотрится крайне ужасно. Не правда ли?

Ещё мы сняли для Вас "кино", демонстрирующее работу регенератора.
WorldRegenerator. Даёшь чистую карту!

Комментарии

6
SirEdvin
Можно делать не прямоугольный приват?)
4
StAnm
оно работает ОНО РАБОТАЕТ. наконецто можно путешествовать.
2
NexXT
Как часто будет запускаться реген карты? Какие миры будут затронуты при регене (верхний, ад, эндер...)? Будут ли предупреждения о регене?
1
xSLIx
Цитата: NexXT
Как часто будет запускаться реген карты? Какие миры будут затронуты при регене (верхний, ад, эндер...)? Будут ли предупреждения о регене?
мне тоже интересно
5
Zoopa
А когда ждать такого чуда на Magic ?
4
Miori
Весьма неплохо, даже порадовало)
Будем ждать сея чудо на магиках ^^
3
IvanEender
Осталось подождать того как будут регенить обелиски
1
DimaPoich
ааа теперь понятно почему вчера я видел свою пещеру с рудами и всех их выкопал а вечером захожу - они всенаместе
fellow
1
Skeleton5099
Так, теперь главный вопрос : Ульи восстонавливоться будут 8_8
1
tolik08j
алмазыыыыы копать ура
1
trian
Цитата: SirEdivn
Можно делать не прямоугольный приват?)
у меня прямоугольный а это самое важное))
1
goharkohtan
На сервере RedPower будет всё таки вайп?
1
Folkem
Цитата: Eternal_Ender
Осталось подождать того как будут [color=#1F497D]регенить обелиски[/color]
Цитата: Skeleton5099
Так, теперь главный вопрос : Ульи восстонавливоться будут 8_8
Все чанки, на которых не было замечено приватов системой WorldRegenerator, будут регенерированы в первоначальное состояние. Если на чанке с обелиском/ульем/иным важным для вас ресурсом не будет замечено приватов - они будут отрегенерированы в то состояние, в котором были в момент создания карты.
Цитата: goharkohtan
На сервере RedPower будет всё таки вайп?
На всех серверах вайп производится 2 раза в год. Если вайп был летом, то соответственно следующий будет зимой.
3
KrisAlex
В принципе, Андрей, если найдётся лишнее время, то можно будет сделать обновление, там где вместо того, чтобы ресурсы ставились на те же места, ставились на другие. При этом ландшафт поверхности остаётся без изменений... Вроде плагин со схожим функционалом был на каком-то проекте... Но минус всё таки есть: если в чанке будет приват, чанк не будет трогаться. То есть, если заприватил даже один ряд кубов на другом чанке, всё, он будет таким же разрушенным... Вот если бы была возможность делать регенерацию, обводя приваты, регенерируя остальную область(Но игра просто не даст этого сделать...)
3
ForcePush
Цитата: KrisAlex
В принципе, Андрей, если найдётся лишнее время, то можно будет сделать обновление, там где вместо того, чтобы ресурсы ставились на те же места, ставились на другие. При этом ландшафт поверхности остаётся без изменений... Вроде плагин со схожим функционалом был на каком-то проекте... Но минус всё таки есть: если в чанке будет приват, чанк не будет трогаться. То есть, если заприватил даже один ряд кубов на другом чанке, всё, он будет таким же разрушенным... Вот если бы была возможность делать регенерацию, обводя приваты, регенерируя остальную область(Но игра просто не даст этого сделать...)

Цитата: Andrey
Так вот, эта команда регенерирует все чанки, по которым проходит выделенная область, а потом восстанавливает, то что не попало в выделенную область - в результате Вам кажется что произошла регенерация только выделенной области. Постройки игроков в этом случае могут пострадать, о чём говорилось, почему нам не подходит вайп с сохранением приватов.
1
Skeleton5099
Ульи регенирироваться будут?
1
ForcePush
Тебе же ответили -_-
Цитата: EnderFlame
Все чанки, на которых не было замечено приватов системой WorldRegenerator, будут регенерированы в первоначальное состояние. Если на чанке с обелиском/ульем/иным важным для вас ресурсом не будет замечено приватов - они будут отрегенерированы в то состояние, в котором были в момент создания карты.
1
GolderGas
Шикардос, пора в шахту
2
byurik
В чем проблема, приватьте по границам чанков. и будет вам счастье!
1
ToppieJobby
Круть,мне нравится!
1
JohnWest
if ( Private area )
next;
else
recovery;

wink
4
TheAndrey Автор
Цитата: JohnWest
if ( Private area )
next;
else
recovery;

wink
Syntax error at line 1.
1
Crispy_102
Цитата: SirEdivn
Можно делать не прямоугольный приват?)
надо сделать отдельную карту типа авто шахты
1
Graffoni
А вайпы будут?
1
Siriusmag
круто, мне нравиться)
1
ANTIKRIPER
Это значит вайпов не будет? pro
1
zeeeeet
я этого дождался ура obnimau
1
Torun
Достойно похвал.
2
MrMiks
Ну классно конечно а вайпов надеюсь не будет![color=#FF0000][/color]
2
MrMiks
Уже понял что вайп через месях так-что не чего не поделаешь!