Найти в Дзене
Игровой движок Godot engine

№130. OpenSimplexNoise как источник генерации.

В этой небольшой статье познакомимся с шумом в виде OpenSimplexNoise, с тем как его подключить и получить его данные.

Брать будем «вес» шума, и применять для трансформаций неких нод. Это могут быть как тайлы, так и всякого рода рисованые элементы в виде линий, кругов и прочего.

Обычно шум используют для создания рандомных карт, рандомных расположений обьектов и так далее.

В примере выше я использовал «вес» для расстановки красных и синих элементов на сетке, и чуть ниже расставлял зеленые кубики по оси Y исходя из данных шума. Например это может быть поверхность уровня в платформере.

За работу !

Создаем шум либо через код, либо через ресурс. Я выбрал второй способ так как мне так проще.
(Я создаю Noise Texture для того чтобы засунуть эту текстуру в спрайт для наглядности. Непосредственно в Noise Texture я загружу шум. Скрин ниже)

создаем ресурс
создаем ресурс
подгружаем шум
подгружаем шум

В моем случае я сделал размеры шума 100х100.

Далее сохраняем ресурс, создаем в сцене спрайт и закидываем ресурс в текстуру.

-4

Отлично, теперь мы можем видеть визуально наш шум.

Подключаем скрипт на корневую ноду. И начинаем писать код.

Я рисовать буду при помощи рисовалки. Вы же , в свою очередь можете применять трансформации к вашим нодам.

Для начала — подгрузим наш ресурс в переменную. Далее в ready() вынесем в переменную наш шум из ресурса.

-5

И теперь при помощи get_noise_2d() мы можем брать «вес» пикселя по координате. Функция возвращает нам данные в диапазоне -1,1.(черный=-1,серый=0,белый=1)
Так как у нас размеры шума 100х100, то мы можем представить эту картику как массив.
Ну и далее всё что нам остается , это пробежаться по массиву и назначить эти данные на элементы draw().

-6

В моем случае это круг (draw_circle) и квадраты (draw_rect).

-7

Надеюсь вам был полезен этот материал.
Подписывайтесь на канал,
вступайте в группу в ВК, и не забывайте что у нас есть дискорд сервер.
Удачи в изучении годо !

#godot #gdscript #игровой движок #уроки #программирование