реклама
разместить

Псевдослучайные миры: как создаются локации с помощью процедурной генерации и ГПСЧ

Краткое описание применимости в левелдизайне.

Автор YouTube-канала DigiDigger опубликовал познавательное видео о разнице между генераторами случайных чисел и процедурной генерацией. Он объяснил, на каких принципах строится каждый подход, а также рассказал, как всё это применяется при создании игр. Мы выбрали из видео главное.

В играх используется не настоящий рандом, а псевдо-рандом. Он отличается тем, что работает на основе конкретной формулы, которая позволяет высчитывать набор случайных чисел. Но они только выглядят случайными на первый взгляд.

Например, возьмём число пи, которое представляет собой необъятную последовательность чисел. На её основе мы создадим случайную последовательность. Так как пи — это всегда одинаковый набор чисел, то нужен такой компонент, который позволит получить случайный ряд. Seed — это именно такой компонент — число, которое влияет на то, какой получится производная последовательность.

Например, seed может обозначать, с какого числа исходной последовательности начнётся формирование производной. Поэтому, если использовать один и тот же seed на одной и той же исходной последовательности, то всегда будет получаться один и тот же результат. Чтобы это изменить, seed можно привязать к постоянно меняющейся переменной, например, к текущему времени.

Конечно, в реальности используются более сложные формулы, которые позволяют получить более непредсказуемые результаты. Но в основе принцип сводится именно к этому
Конечно, в реальности используются более сложные формулы, которые позволяют получить более непредсказуемые результаты. Но в основе принцип сводится именно к этому

Всё это важно для генераторов псевдослучайных чисел и для процедурной генерации. Несмотря на то, что эти понятия часто могут подменять друг друга, между ними есть определённая разница. В играх генераторы псевдослучайных чисел используются тогда, когда нужно создать контент на основе заранее созданных элементов. А процедурная генерация применяется в том случае, если нужно создать оригинальный контент.

Генератор псевдослучайных чисел используется, например, в The Binding of Isaac. Разработчики изначально создали игровые комнаты и весь необходимый контент, а игра самостоятельно расставляет их в случайном порядке.

Примерно так выглядит рандомно сгенерированная карта в The Binding of Isaac. Также по комнатам случайно распределяются полезные предметы
Примерно так выглядит рандомно сгенерированная карта в The Binding of Isaac. Также по комнатам случайно распределяются полезные предметы

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

Процедурная генерация устроена иначе: она применяется в том случае, если нужно создать контент с нуля. При этом важное значение имеют карты шума. Для примера возьмём генерацию уровней в Terraria.

Всё начинается с определения линии горизонта.

Белые пиксели — твёрдая поверхность, чёрные — пустота
Белые пиксели — твёрдая поверхность, чёрные — пустота

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

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

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

Схема пещер и подземных туннелей генерируется по сходному принципу. Главное — подобрать подходящую карту шума, рисунок которой будет напоминать ветвящиеся переходы.

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

Этот же подход работает ещё и в 3D-окружении. Например, карту шума можно использовать для определения высоты ландшафта.

На светлых участках горы выше, на тёмных — ландшафт ниже
На светлых участках горы выше, на тёмных — ландшафт ниже
Далее на ландшафте можно воссоздать разные условия — низкие участки покрыты водой, а вершины гор — снегом
Далее на ландшафте можно воссоздать разные условия — низкие участки покрыты водой, а вершины гор — снегом

Для создания системы пещер в 3D можно использовать сразу две карты шума. Тогда в месте пересечения оттенков разного тона появятся пустоты.

Так накладываются две карты шума
Так накладываются две карты шума
А это результат процедурной генерации, который появился в результате наложения двух карт шума
А это результат процедурной генерации, который появился в результате наложения двух карт шума

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

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

6060
реклама
разместить
25 комментариев

В играх зачастую используется не рандом, а псевдорандомНет, во всех играх всегда используется псевдорандом, потому что компьютер в принципе не способен генерировать случайные числа.
Более того, в статье пишется, будто генераторы псевдослучайных чисел это что-то такое, что используется всякими рогаликами или симуляторах. Нет, генераторы используются почти во всех играх без исключения. Системы частиц зависят от генераторов, "ИИ" всех персонажей зависят от генераторов, подсчёт урона зависит от генераторов. И т.д. и т.п.

15

А если брать значение микросекунд таймера, тогда ведь случайное число будет зависеть от температуры процессора, а значит и от внешней среды?

Ну мне кажется, это не основная проблема статьи.
Понятно, что все алгоритмы так или иначе псевдослучайные с большим периодом.
Но с практической точки зрения их используют как случайные - инициализируют чем нибудь случайным и потом не ожидают, что они будут повторяться.
В то время как для некоторых целей, принципиально используют псевдослучайные ровно для воспроизводимости генерации. Иногда даже пишут специальные - например иерархические, или применяют алгоритмы, которые не требуют предвычислений (то есть если в ЛК алгоритме для нахождения 1001 числа нужно найти 1000 предыдущих, то в таких можно найти сразу 1001 - это удобно, если ты хочешь сгенерировать кусок вселенной с 93 по 101 км, не генерируя остальную вселенную)

Комментарий недоступен

6

обычно когда непонятно объясняют, это значит сами не понимают
зато, поумничали

 При этом всё это будет появляться по ходу прохождения и не будет занимать лишнее место на жёстком диске.А вот изменения этих миров вполне себе будут.

Жаль и слова нет про новомодный WFC.

3
Раскрывать всегда
Представлена Silent Hill f — первый трейлер, скриншоты и детали

В игре будут субтитры на русском языке, согласно странице в Steam.

236236
3131
2727
1111
33
22
22
11
😐
реклама
разместить
Для Kingdom Come: Deliverance II вышел крупный патч 1.2 — с улучшенной боёвкой и цирюльником

Также теперь можно бегать пьяным.

Автор скриншота: <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fsteamcommunity.com%2Fsharedfiles%2Ffiledetails%2F%3Fid%3D3440797390&postId=3635704" rel="nofollow noreferrer noopener" target="_blank">Vais Vargoroth</a>
326326
1515
99
77
55
33
11
Обожаю игры 2020-х, когда полноценными они становятся спустя 2 года после релиза и десяток патчей.
В Steam началась большая весенняя распродажа

Время вновь потратить все деньги на игры.

В Steam началась большая весенняя распродажа
185185
2727
99
77
33
33
22
11
11
11
БЕГОМ ПОКУПАТЬ ИГРЫ КОТОРЫЕ НЕ БУДУТ ЗАПУЩЕНЫ
Ubisoft представила Rainbow Six Siege X — масштабно обновлённую версию своего тактического шутера

Режим «6 на 6», улучшенная графика и звук, а также бесплатный доступ для новых игроков.

Ubisoft представила Rainbow Six Siege X — масштабно обновлённую версию своего тактического шутера
111111
2323
77
11
11
11
А помните радугу образца 2016 года ? эх вот время было 🥲😢
Для RPG-шутера Witchfire от авторов Painkiller вышел масштабный патч — с лабиринтом и испытаниями

Разработчики не собираются добавлять кооператив в игру, несмотря на просьбы, — они сфокусированы на одиночном контенте.

8383
2525
22
Лютейшая годнота становится еще более лютой
Демоверсия ремастера Half-Life 2 на RTX Remix выйдет 18 марта — 30 минут геймплея

Она будет бесплатной для всех владельцев оригинальной игры.

433433
8484
1717
1313
44
33
22
22
11
В игру банально скучно играть в 2025 - эти ртксы, как мёртвому припарка
ZA/UM анонсировала Disco Elysium для Android-смартфонов

На iPhone не выйдет, по крайней мере, сразу.

243243
4040
1010
88
66
44
22
22
11
11
андроид - сила
Брэд Питт мчится на болиде в трейлере фильма «Формула-1» от режиссёра «Топ Ган: Мэверик»

Зарубежный прокат стартует 25 июня.

7171
1919
77
55
11
11
ЕСЛИ ЕСТЬ ФОРМУЛА-1, ДОЛЖНА БЫТЬ И ФОРИШАКА-1
реклама
разместить
«Добро пожаловать обратно»: трейлер и кадры седьмого cезона «Чёрного зеркала»

Продолжение шоу выйдет 10 апреля.

8383
1515
1111
22
11
Не знаю, по-моему сериал скатился, когда производство из Англии перенесли в Америку.
Появился геймплей Ardenfall — RPG в духе Morrowind от разработчиков, «которые устали ждать новую The Elder Scrolls»

Иммерсивная ролевая игра выйдет в Steam в 2025 году — сперва в раннем доступе.

189189
5353
3434
1818
1616
11
Как называется эта стилизация, она отвратительная