Буквально пару дней назад я коротал свой вечер за чтением Майнкамп… за игрой в Майнкрафт. И, убивая очередного крипера, я задумался о том, каким образом игра раз за разом создает разные миры. Первым делом я подумал о простом псевдорандоме, но как же я ошибался.

Сразу скажу, что псевдорандом тут все же присутствует, но то, насколько он ебанутый, вы поймете прямо сейчас. На пикче вы можете наблюдать так называемый Шум Перлина, который был предложен и разработан в 1983 Кеном Перлином (неожиданно).

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

Чаще всего шум используется в компьютерной графике. Его натягивают на текстуры, что бы придать больше реалистичности самой текстуре. Иногда с помощью этого алгоритма создают туман, дым и другие визуальные эффекты.

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

Если простая бело-черная хуета на экране кажется вам скучной, то можете еще и побаловаться с шумом, добавляя или убирая мерность пространства. Если вам мало одномерного шума, тогда сделайте пространство идеальным для богинь, если и этого мало, приклейте еще одну ось и получите 3D (который не нужон). Если же вас не устраивает трехмерный шум, и вы любите доказывать всем, что время существует — позвольте шуму постоянно изменяться, тем самым вы получите четырехмерный шум.

А причем тут Майнкрафт? А при том, что миры игры генерируются на основе шума. Точнее не сам мир, а его рельеф. И кстати, не только Майнкрафт использует шум для подобного. Очень много игр со случайной генерацией тоже пользуются подобным методом (та же печально известная No Man's Sky).

#математика@appi.retelling


Спасибо за то, что вы с нами.
С любовью, Рителлинг favorite