1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Сглаживание переходов между биомами (генерация мира)

Тема в разделе "Разработка плагинов для новичков", создана пользователем Dementiy, 24 окт 2019.

  1. Автор темы
    Dementiy

    Dementiy Ньюби

    Баллы:
    1
    Столкнулся с трудностью создать несколько разных типов биомов, чтобы одна локация была увешана горами, а другая - сплошная равнина. В итоге получается в точности как на картинке.
    [​IMG]
    Был вариант проверять близлежащие биомы и если есть несовпадение - применять сглаживание. Но это очень сильно бьёт по производительности. Вопрос, конечно, не совсем по bukkit api, но я надеюсь получить здесь помощь, как баккитскими методами можно добиться хорошего (нормального хотя бы) результата.
     
    Последнее редактирование: 24 окт 2019
  2. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Этот вопрос вообще не имеет решения в bukkit API, этот вопрос относится к понимаю алгоритмов шумов, ГПСЧ и прочей математике. В оригинальных генераторах используют смещение к Random, чтобы узнать что делать в этом чанке. Для получения быстрого решения рекомендую покопаться в исходниках.
     
  3. Автор темы
    Dementiy

    Dementiy Ньюби

    Баллы:
    1
    Имеешь ввиду переписать существующий генератор перлина?
     
  4. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Зачем? Что это даст? Ну кроме того, что будет ещё один генератор перлина и опыт.
    Нет, я имею ввиду вот такие моменты:
    Код:
            int k = 8;
            this.world = world;
            this.rand.setSeed(world.getSeed());
            long l = rand.nextLong();
            long l1 = rand.nextLong();
            for(int x = chunkX - k; x <= chunkX + k; x++)
            {
                for(int z = chunkZ - k; z <= chunkZ + k; z++)
                {
                    long l2 = (long)x * l;
                    long l3 = (long)z * l1;
                    rand.setSeed(l2 ^ l3 ^ world.getSeed());
                    generate(world, x, z, chunkX, chunkZ);
                }
            }
    
    Ещё есть возможность усреднить это при помощи того же генератора, который задаёт биом, там проще.
     

Поделиться этой страницей