Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) (→Карты шума) |
||
Строка 88: | Строка 88: | ||
В библиотеке dimensions октавы для генерации (octaves) задаются двумя способами: одним объектом описания для программной генерации нескольких октав или массивом описаний отдельных октав. Начнем с первого случая, при этом поля у объекта октав будут следующие: | В библиотеке dimensions октавы для генерации (octaves) задаются двумя способами: одним объектом описания для программной генерации нескольких октав или массивом описаний отдельных октав. Начнем с первого случая, при этом поля у объекта октав будут следующие: | ||
− | |||
* count - количество октав. Чем больше октав, тем мельче и труднопроходимее будет рельеф. Чаще всего используют 4 октавы. | * count - количество октав. Чем больше октав, тем мельче и труднопроходимее будет рельеф. Чаще всего используют 4 октавы. | ||
* weight - ? | * weight - ? | ||
Строка 95: | Строка 94: | ||
* mw - ? | * mw - ? | ||
Всему шуму (не отдельным октавам) также можно задавать следующие параметры: | Всему шуму (не отдельным октавам) также можно задавать следующие параметры: | ||
− | |||
* gradient - градиент для данной карты шума. | * gradient - градиент для данной карты шума. | ||
* seed - зерно генерации (сид). | * seed - зерно генерации (сид). | ||
− | < | + | *: |
+ | |||
+ | <div style='display: inline !important;'>При создании карты шума отдельными октавами (octaves - массив), каждая октава будет иметь следующие параметры: | ||
+ | <div class="mw-parser-output"> | ||
+ | * weight -? | ||
+ | * offset -? | ||
+ | * scale -? | ||
+ | |||
+ | ===Environment=== | ||
+ | Объект environment предлагает инструменты для настройки среды, а именно цвета неба и туман. Может содержать следующие поля: | ||
+ | |||
+ | * sky - цвет неба, задается массивом из трех составляющих RGB (от 0 до 1), каждая из которых может быть как значением, так и массивом из двух значений для более тонкой настройки цветов. | ||
+ | * fog - цвет тумана, имеет аналогичный sky массив описания. | ||
+ | |||
+ | ==Объект Dimensions и его методы== | ||
+ | Результатом создания нового измерения будет объект Dimension. От будет использоваться для дальнейшей работы с измерением и имеет для этого следующие методы: | ||
+ | |||
+ | * setupGeneration(description) - ? | ||
+ | * setupTransfer(description) - ? | ||
+ | * setupEnvironment(description) - ? | ||
+ | * setupCallbacks(callbacks) - устанавливает коллбеки в формате, описанном выше. | ||
+ | * getName() - возвращает имя измерения, заданное при его создании. | ||
+ | * getId() - получает уникальное id биома. | ||
+ | * getWrappedObject() - получает лежащий в основе библиотеки java-объект CustomDimention. | ||
+ | * getRegion() - ? | ||
+ | * getTeleporter() - возвращает телепортер из обічного мира в измерение. | ||
+ | * getTeleporterBack() - возвращает телепортер из измерения в обычный мир. | ||
+ | * getAllTeleporters() - возвращает массив из getTeleporter() и getTeleporterBack(). | ||
+ | * transferTo(tp) - переносит вас в место, заданное телепортером tp. | ||
+ | * transferIn() - переносит игрока в измерение. | ||
+ | * transferOut() - переносит игрока из измерения. | ||
+ | *: | ||
+ | * isInDimension() - проверяет, находинся ли игрок в данном измерении. | ||
+ | Следующие два метода слишком важны, чтобы оставить их в списке наравне с остальными, поскольку позволяют ускорить процесс отладки генерации в разы. stride в обоих случаях показывает, сколько блоков будет соответствовать одному пикселю битмапы: | ||
+ | |||
+ | * debugTerrainMap(size, stride) - генерирует и показывает всплывающим окном при загрузке InnerCore битмапу с видом на сгенерированный ландшафт сверху размером size*size. | ||
+ | * debugTerrainSlice(size, stride) - генерирует и показывает всплывающим окном при загрузке InnerCore битмапу со срезом сгенерированного ландшафтавысотой size (вид сбоку). | ||
+ | </div></div> |
Dimensions - библиотека, значительно упрощающая процесс создания измерений. В этой документации будут описаны ее основные возможности и функционал.
Для подключения данной библиотеки используется следующая строка:
IMPORT("dimensions");
Для генерации измерения используется объектDimension. В конструктор передаются параметры, связанные с измерением в следующем формате:
var dim007 = new Dimension({
name: "dim007", // Название измерения
generation: { //Генерация
layers: [
//Слои генерации
],
decoration: {
}
},
environment: {
},
callbacks: {
// Основные коллбеки измерения
// Здесь приведены все коллбеки измерений, ненужные можно опустить.
tick: function() {
},
generateChunk: function(chunkX, chunkZ) {
// Генерация чанка
},
loaded: function() {
// Загрузка измерения
},
loaded: 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) задаются двумя способами: одним объектом описания для программной генерации нескольких октав или массивом описаний отдельных октав. Начнем с первого случая, при этом поля у объекта октав будут следующие:
Всему шуму (не отдельным октавам) также можно задавать следующие параметры:
Объект environment предлагает инструменты для настройки среды, а именно цвета неба и туман. Может содержать следующие поля:
Результатом создания нового измерения будет объект Dimension. От будет использоваться для дальнейшей работы с измерением и имеет для этого следующие методы:
Следующие два метода слишком важны, чтобы оставить их в списке наравне с остальными, поскольку позволяют ускорить процесс отладки генерации в разы. stride в обоих случаях показывает, сколько блоков будет соответствовать одному пикселю битмапы: