» Фантастика » » Читать онлайн
Страница 236 из 245 Настройки

Начать решили с главного босса качалки — процедурной генерации мира. Проблема заключалась в том, что для создания воксельного ландшафта в оригинальной игре использовались так называемые шумы Перлина. На практике они представляли собой не что иное, как сложные, мать их, математические функции. Стоит ли объяснять, что ни у меня, ни у Коула и даже у Эйдоса в кармане не завалялось степени бакалавра по вышмату? Насчет костяка были конечно сомнения. Но парень их развеял.

— Не, Эйдос сказал, что ему такими мелочами заниматься не с руки. — Буркнул в микрофон Коул, после минутного молчания.

— Зассал.

— Да… Ай, сука. Больно блин. — Спохватился Коул. В отличие от меня, парнишке дух мог дать звездюлей безвозмездно. Видимо ментальные лещи носителю в кармическом уголовном кодексе не были учтены.

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

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

Высота(0) = 72

Высота(1) = 13

Высота(2) = 95

Высота(3) = 41

Высота(4) = 7

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

Шум Перлина же генерировал упорядоченный рандом. Каждое следующее значение отличалось от соседнего плавно — скажем, на единичку или долю.

Высота(0) = 72

Высота(1) = 73

Высота(2) = 74

Высота(3) = 73

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

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

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

Высота поверхности = 70.

Тогда:

128 воздух

...

71 воздух

70 трава

69 земля

68 земля

67 земля

66 камень

65 камень

...

1 камень

0 бедрок

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

— Во-о-от… И если вкратце, именно так мы сделали генерацию ландшафта не плоской. — Подытожил я свой рассказ, лениво отстукивая пальцами по столешнице прилипчивый мотивчик «Зомби на твоей лужайке». Трек до сих пор вирусился в соцсетях и постоянно мозолил уши.

— Очень интересно, но ничего не поняла. — Мотнула головой Аврора, поставив перед Коулом дымящуюся тарелку с гороховым супом и вернулась к плите за новой порцией. — Эрин, а ты хоть что-то уловила?

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

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

— Ну, я примерно так и подумала. — Хихикнула Аврора, опуская тарелку уже передо мной.

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

— А как вы собираетесь генерировать пещеры или те же водоемы? А руды? — Подал голос Дэвид. Кажется, он единственный из присутствующих, кто реально вник в мою лекцию. Разумеется, если не брать в расчет самого Коула, который все это время вчитывался в потрепанный учебник по матанализу, пытаясь сообразить, как ему прописать в алгоритме трехмерные пустоты для этих самых пещер. И судя по то и дело проблескивающей в глазах бездне, пытался не он один.