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


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

Вся суть столбостроительства.
Что же делать?
Делать вайп каждый месяц? - Нет, игроков только распугаем. Вайпать карту с сохранением приватов? - Не годится, некоторые блоки из модов плохо переносятся (теряются свойства, инвентарь). В голову нам приходит последний вариант - регенерировать участки карты, которые находятся в плохом состоянии. С самого запуска первых серверов мы активно занимались такой чисткой, правда, это делалось вручную. А сейчас серверов стало много и размеры карт уже не те, что раньше - всё обойти нам не по силам. Можно конечно было назначить людей, которые бы этим занимались, но тут проблема в доверии и в их силах - а вдруг отрегенерируют то что не нужно?
Автоматика приходит на помощь
Поняв, что вручную нам такую работу не осилить, дело переходит к автоматике. Автоматизация является одним из направлений нашего развития - её задачей является снизить количество рутиной работы для нашей команды. Так было принято решение о разработке регенератора карты (потому что в свободном доступе их нет).
Ещё полгода назад по нашему заказу была разработана первая версия регенератора. Но её работа не увенчалась успехом - по непонятным причинам он попросту зависал. Его код был сложен для понимания, поэтому проект был заморожен и сотрудничество с тем исполнителем, который нам его написал было прекращено (первая версия модификации Additional Blocks с кучей багов - тоже его заслуга). :ploxo:
Совсем недавно было решено разморозить проект. В этот раз мы взяли всё в свои руки - так надёжнее. Решили писать с нуля. Результат увенчался успехом. Простой и понятный код, работает как часы. :smile:
Все три последние дня мы обкатывали регенератор на каждом из наших серверов. Была проведена регенерация основного и нижнего миров. Было обработано порядка 750 000 чанков, процесс занял около 7 часов (на один сервер).
Что же такое регенерация?
Регенерация - процесс восстановления участков карты в первоначальное состояние. Под участками мы понимаем чанки и выбор на них пал не случайно. Дело в том, что незаприваченная часть карты имеет сложную форму - её нужно как-то "выделить".
Во-вторых, обработать всю карту целиком нельзя - сервер упадёт. Следовательно, приходится разбивать задание на порции и чанки здесь подошли в самый раз. Дело в том, что Bukkit API предоставляет возможность регенерации чанков. Да, именно чанков. Регенерировать конкретную область нельзя - только весь чанк целиком. Возможно, Вы знакомы с командой WorldEdit - //regen. Так вот, эта команда регенерирует все чанки, по которым проходит выделенная область, а потом восстанавливает, то что не попало в выделенную область - в результате Вам кажется что произошла регенерация только выделенной области. Постройки игроков в этом случае могут пострадать, о чём говорилось, почему нам не подходит вайп с сохранением приватов.
В-третьих, так проще обработать незаприваченную часть карты в связи с её сложной формы. Тут система работает довольно просто: когда очередь доходит до чанка, система проверяет наличие приватов в нём. Если есть приват - пропускает чанк и переходит к следующему, выполняя аналогичную проверку. Чанк будет отрегенерирован только если в нём не удалось обнаружить приваты.
Таким образом, регенерация решает следующие проблемы:
-
Поддержка карты в хорошем состоянии.
- Делает сервер привлекательным для новичков в любое время - теперь нет проблем с поиском ресурсов.
- Убирает дыры от карьеров и прочих механизмов, изменяющих ландшафт.
Некоторым из Вас может показаться, что на этом всё: можно вводить безвайповую систему. Увы, но нет. Регенератор решает проблему состояния карты, но не решает проблему переизбытка ресурсов у игроков и даже способствует этому (ведь ресурсы можно будет добывать уже несколько раз в одном и том же месте). Всё же нашей главной целью введения регенератора было сделать сервер привлекательным для новичков, которые только зашли на сервер и наладить внешний вид карты. "Свалка из блоков" смотрится крайне ужасно. Не правда ли?
Будем ждать сея чудо на магиках ^^
next;
else
recovery;