Помогите Проверка на ровность локации

GenerateIdeal

Ньюби
Баллы
1
Я создаю ивент с большой схематикой (10x10) и бывает так что ивент спавнится в горе или вообще в речке, кто знает какие можно добавить дополнительные проверки чтобы ивент спавнился только на ровных локациях
 
При выборе локации, в зоне 10 на 10 от центра проверять что на y или y-n(Где n варьируется от 0 до 10, чтобы проверять) находяться блоки не являющаяся воздухом, лавой, водой, а если нет - то выбирать другую локацию?
 
попробовал только что такое сделать, не, слишком долго. Есть ещё какие-то варианты сделать это с минимальной нагрузкой и высокой скоростью?
 
Ограничь спавн ивента только для биомов с ровной поверхностью ( равнины, к примеру )
 
Ограничь спавн ивента только для биомов с ровной поверхностью ( равнины, к примеру )
Так ведь равнины не всегда идеально плоские, если согласиться с небольшими выступами - то ок)

Или можно совместить первый способ, с проверкой биомов, для наилучшей точности)
 
Последнее редактирование:
тоже так думал, но все равно скорость будет хромать + на моем сервере кастомная генерация мира и даже на то что я там сделал 50% ровнин все равно жоска виснет
 
парящий эвент в небесах, особенно когда кто-то построит ужасный высокий гигантский столб


тоже так думал, но все равно скорость будет хромать + на моем сервере кастомная генерация мира и даже на то что я там сделал 50% ровнин все равно жоска виснет
а чанки прогружены? А то может виснет от прогрузки чанков, в которые падает аирхрень (ой аирдроп)
 
парящий эвент в небесах, особенно когда кто-то построит ужасный высокий гигантский столб
Всего лишь дал более эффективные и каноничные методы, решать задачу плотностью и не собирался.
 
парящий эвент в небесах, особенно когда кто-то построит ужасный высокий гигантский столб
Ну естественно, если проверка ограничилась одним лишь блоком, а не средним числом блоков под схематикой, удалив все неровности.
 
тоже так думал, но все равно скорость будет хромать + на моем сервере кастомная генерация мира и даже на то что я там сделал 50% ровнин все равно жоска виснет
Так веди расчеты в отдельном потоке, в идеале в копии мира, что бы загрузка чанков не тормозила основной поток, а потом уже вставляй схематик.
 
Пример того, как делал я:

Вместо проверки высоты каждого блока достаточно проверять лишь каждый 3-й или 4-й по сетке.
При проверке нужно в отдельных переменных хранить минимальную и максимальную найденную высоту. Если разница между этими двумя значениями начинает превышать 5 блоков - тогда сразу отменять перебор и начинать поиск другой локации.

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

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

После вставки можно равнять территорию близь шематика, чтобы смотрелось ещё более натурально.

Для каждой структуры можно иметь свои параметры вставки и буфер подходящих локаций. Просто методом тыка подобрать:
- Список подходящих биомов
- Расстояние между точками при анализе местности
- Максимальный разброс по высоте
- Размер буфера подходящих локаций
- Расстояние, на котором после вставки будет сглаживаться территория
 
Назад
Верх Низ