Admin (обсуждение | вклад) (→Карты шума) |
Admin (обсуждение | вклад) (→Генерация) |
||
Строка 42: | Строка 42: | ||
}, | }, | ||
− | + | unloaded: function() { | |
// Выгрузка измерения | // Выгрузка измерения | ||
} | } | ||
Строка 68: | Строка 68: | ||
}, | }, | ||
} | } | ||
− | },</syntaxhighlight> | + | },</syntaxhighlight><div class="mw-parser-output"><div class="mw-highlight mw-content-ltr" dir="ltr">Рассмотрим каждую часть кода подробнее:<br /> |
− | <div class="mw-parser-output"><div class="mw-highlight mw-content-ltr" dir="ltr">Рассмотрим каждую часть кода подробнее:<br /> | ||
</div></div> | </div></div> | ||
Строка 81: | Строка 80: | ||
** cover - слои блоков, покрывающих генерацию сверху (в нормальной генерации мира это земля и трава). Объект cover имеет три поля: height - высота верхнего слоя, block - основной блок покрытия, top - самый верхний слой. Все блоки задаются таким же образом, как и base. | ** cover - слои блоков, покрывающих генерацию сверху (в нормальной генерации мира это земля и трава). Объект cover имеет три поля: height - высота верхнего слоя, block - основной блок покрытия, top - самый верхний слой. Все блоки задаются таким же образом, как и base. | ||
** filling - параметры заполнения пустот в генерации чем-либо. Пример - вода в обычном мире и лава в нижнем. Объект состоит из полей height - высота, до которой будет заполнен слой, и block - непосредственно сам блок, которым производится заполнение. | ** filling - параметры заполнения пустот в генерации чем-либо. Пример - вода в обычном мире и лава в нижнем. Объект состоит из полей height - высота, до которой будет заполнен слой, и block - непосредственно сам блок, которым производится заполнение. | ||
− | |||
− | </div><div class="mceNonEditableOverlay"></div> | + | </div></div> |
+ | |||
+ | <div class="mceNonEditableOverlay"></div> | ||
===Карты шума=== | ===Карты шума=== | ||
Как уже было сказано выше, генерация поверхности происходит по принципу шума Перлина. Подробную информацию о нем можно найти [https://habr.com/post/265775/ здесь ].Каждая карта состоит из октав. Октавы - шум разного масштаба. Подробнее в той же статье. | Как уже было сказано выше, генерация поверхности происходит по принципу шума Перлина. Подробную информацию о нем можно найти [https://habr.com/post/265775/ здесь ].Каждая карта состоит из октав. Октавы - шум разного масштаба. Подробнее в той же статье. | ||
Строка 97: | Строка 97: | ||
* seed - зерно генерации (сид). | * seed - зерно генерации (сид). | ||
*: | *: | ||
− | + | <p class="mw_paragraph"> | |
− | <div style= | + | <div style="display: inline !important;">При создании карты шума отдельными октавами (octaves - массив), каждая октава будет иметь следующие параметры:<div class="mw-parser-output"><ul><li>weight -?</li><li>offset -?</li><li>scale -?</li></ul> |
− | <div class="mw-parser-output"> | + | <h3>Environment</h3>Объект environment предлагает инструменты для настройки среды, а именно цвета неба и туман. Может содержать следующие поля: |
− | + | <ul><li>sky - цвет неба, задается массивом из трех составляющих RGB (от 0 до 1), каждая из которых может быть как значением, так и массивом из двух значений для более тонкой настройки цветов.</li><li>fog - цвет тумана, имеет аналогичный sky массив описания.</li></ul></div></div> | |
− | |||
− | |||
− | |||
− | |||
− | Объект environment предлагает инструменты для настройки среды, а именно цвета неба и туман. Может содержать следующие поля: | ||
− | |||
− | |||
− | |||
==Объект Dimensions и его методы== | ==Объект Dimensions и его методы== |
Dimensions - библиотека, значительно упрощающая процесс создания измерений. В этой документации будут описаны ее основные возможности и функционал.
Для подключения данной библиотеки используется следующая строка:
IMPORT("dimensions");
Для генерации измерения используется объектDimension. В конструктор передаются параметры, связанные с измерением в следующем формате:
var dim007 = new Dimension({
name: "dim007", // Название измерения
generation: { //Генерация
layers: [
//Слои генерации
],
decoration: {
}
},
environment: {
},
callbacks: {
// Основные коллбеки измерения
// Здесь приведены все коллбеки измерений, ненужные можно опустить.
tick: function() {
},
generateChunk: function(chunkX, chunkZ) {
// Генерация чанка
},
loaded: function() {
// Загрузка измерения
},
unloaded: function() {
// Выгрузка измерения
}
});
Основной единицей генерации является слой. Слоев может быть несколько и каждый из них отвечает за отдельную часть генерации ландшафта: различные биомы, слой бедрока, метеориты, парящие в воздухе. Каждый слой представляет из себя json-объект следующего содержания:
{
range: [0, 80],
noise: {
octaves: {
count: 4,
weight: 0.6,
scale: [1, 0.4, 1]
}
},
gradient: [[-1, 0.8], [-0.6, 0.5], [-0.2, 0.2], [0.2, 0.9], [0.6, 0.7], [1, 0.1]],
terrain: {
base: 1,
cover: {
height: 4,
top: 2,
block: 3
},
}
},
Как уже было сказано выше, генерация поверхности происходит по принципу шума Перлина. Подробную информацию о нем можно найти здесь .Каждая карта состоит из октав. Октавы - шум разного масштаба. Подробнее в той же статье.
В библиотеке dimensions октавы для генерации (octaves) задаются двумя способами: одним объектом описания для программной генерации нескольких октав или массивом описаний отдельных октав. Начнем с первого случая, при этом поля у объекта октав будут следующие:
Всему шуму (не отдельным октавам) также можно задавать следующие параметры:
Результатом создания нового измерения будет объект Dimension. От будет использоваться для дальнейшей работы с измерением и имеет для этого следующие методы:
Следующие два метода слишком важны, чтобы оставить их в списке наравне с остальными, поскольку позволяют ускорить процесс отладки генерации в разы. stride в обоих случаях показывает, сколько блоков будет соответствовать одному пикселю битмапы: