Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
− | + | Dimensions - библиотека, значительно упрощающая процесс создания измерений. В этой документации будут описаны ее основные возможности и функционал. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | ==Подключение== | ||
Для подключения данной библиотеки используется следующая строка: | Для подключения данной библиотеки используется следующая строка: | ||
− | |||
− | |||
− | |||
− | = | + | <syntaxhighlight lang="Javascript">IMPORT("dimensions");</syntaxhighlight> |
+ | ==Генерация== | ||
Для генерации измерения используется объект<span><span class="fctbNone">Dimension. В конструктор передаются параметры, связанные с измерением в следующем формате:</span></span> | Для генерации измерения используется объект<span><span class="fctbNone">Dimension. В конструктор передаются параметры, связанные с измерением в следующем формате:</span></span> | ||
− | + | <span><span class="fctbNone"><syntaxhighlight lang="Javascript"> | |
− | <syntaxhighlight lang="Javascript"> | ||
var dim007 = new Dimension({ | var dim007 = new Dimension({ | ||
name: "dim007", // Название измерения | name: "dim007", // Название измерения | ||
Строка 66: | Строка 46: | ||
} | } | ||
}); | }); | ||
− | </syntaxhighlight> | + | </syntaxhighlight></span></span> |
− | + | ===Слои генерации=== | |
− | < | ||
− | === Слои генерации === | ||
− | |||
Основной единицей генерации является слой. Слоев может быть несколько и каждый из них отвечает за отдельную часть генерации ландшафта: различные биомы, слой бедрока, метеориты, парящие в воздухе. Каждый слой представляет из себя json-объект следующего содержания: | Основной единицей генерации является слой. Слоев может быть несколько и каждый из них отвечает за отдельную часть генерации ландшафта: различные биомы, слой бедрока, метеориты, парящие в воздухе. Каждый слой представляет из себя json-объект следующего содержания: | ||
<syntaxhighlight lang="Javascript">{ | <syntaxhighlight lang="Javascript">{ | ||
Строка 91: | Строка 68: | ||
}, | }, | ||
} | } | ||
− | },</syntaxhighlight> | + | },</syntaxhighlight><div class="mw-parser-output"><div class="mw-highlight mw-content-ltr" dir="ltr"></div><div class="mw-highlight mw-content-ltr" dir="ltr">Рассмотрим каждую часть кода подробнее:</div></div><div class="mw-parser-output"> |
− | <div class="mw-parser-output"><div class="mw-highlight mw-content-ltr" dir="ltr">Рассмотрим каждую часть кода подробнее:</div> </div> <div class="mw-parser-output"> | + | * range - диапазон высоты, в котором работает генерация. В данном примере ландшафт будет генерироваться на высоте 0-80 блоков. Единственный обязательный параметр. |
− | *range - диапазон высоты, в котором работает генерация. В данном примере ландшафт будет генерироваться на высоте 0-80 блоков. Единственный обязательный параметр. | + | * noise - описание [https://ru.wikipedia.org/wiki/Шум_Перлина шума Перлина ], лежащего в основе генерации Подробнее в разделе [#h3sjgmm4cjj1vj7gh5ho77941crzwlb Карты шума]. Таких шумов может несколько, в таком случае их следует записывать в виде массива и они будут накладываться. |
− | *noise - описание [https://ru.wikipedia.org/wiki/Шум_Перлина шума Перлина ], лежащего в основе генерации Подробнее в разделе [ | + | * heights - сродни noise, но накладывается поверх шума. Имеет такой же формат. Используется для генерации мелких биомов (речки, горы)<div class="mceNonEditableOverlay"> |
− | *heights - сродни noise, но накладывается поверх шума. Имеет такой же формат. Используется для генерации мелких биомов (речки, горы) <div class="mceNonEditableOverlay"> | + | * gradient - описание функции [https://ru.wikipedia.org/wiki/Градиент градиента ], которая будет применена к шуму. Отвечает за то, как примерно будет выглядеть ландшафт. Задается в виде набора точек. Между точками интерполируется (соединяется плавной кривой). |
− | *gradient - описание функции [https://ru.wikipedia.org/wiki/Градиент градиента ], которая будет применена к шуму. Отвечает за то, как примерно будет выглядеть ландшафт. Задается в виде набора точек. Между точками интерполируется (соединяется плавной кривой). | + | * terrain - настройки блоков нашей генерации, могут содержать следующее: |
− | *terrain - настройки блоков нашей генерации, могут содержать следующее: | + | ** base - блок, служащий основанием для генерации. В данном случае, камень. Можно указать как id и дату (в виде массива из двух элементов либо объекта с полями id, deata), так и просто id. |
− | **base - блок, служащий основанием для генерации. В данном случае, камень. Можно указать как id и дату (в виде массива из двух элементов либо объекта с полями id, deata), так и просто id. | + | ** cover - слои блоков, покрывающих генерацию сверху (в нормальной генерации мира это земля и трава). Объект cover имеет три поля: height - высота верхнего слоя, block - основной блок покрытия, top - самый верхний слой. Все блоки задаются таким же образом, как и base. |
− | **cover - слои блоков, покрывающих генерацию сверху (в нормальной генерации мира это земля и трава). Объект cover имеет три поля: height - высота верхнего слоя, block - основной блок покрытия, top - самый верхний слой. Все блоки задаются таким же образом, как и base. | + | ** filling - параметры заполнения пустот в генерации чем-либо. Пример - вода в обычном мире и лава в нижнем. Объект состоит из полей height - высота, до которой будет заполнен слой, и block - непосредственно сам блок, которым производится заполнение. |
− | **filling - параметры заполнения пустот в генерации чем-либо. Пример - вода в обычном мире и лава в нижнем. Объект состоит из полей height - высота, до которой будет заполнен слой, и block - непосредственно сам блок, которым производится заполнение. | + | </div> |
− | |||
− | + | </div> | |
+ | <div class="mceNonEditableOverlay"></div> | ||
+ | |||
+ | ===Карты шума=== | ||
Как уже было сказано выше, генерация поверхности происходит по принципу шума Перлина. Подробную информацию о нем можно найти [https://habr.com/post/265775/ здесь ].Каждая карта состоит из октав. Октавы - шум разного масштаба. Подробнее в той же статье. | Как уже было сказано выше, генерация поверхности происходит по принципу шума Перлина. Подробную информацию о нем можно найти [https://habr.com/post/265775/ здесь ].Каждая карта состоит из октав. Октавы - шум разного масштаба. Подробнее в той же статье. | ||
В библиотеке dimensions октавы для генерации (octaves) задаются двумя способами: одним объектом описания для программной генерации нескольких октав или массивом описаний отдельных октав. Начнем с первого случая, при этом поля у объекта октав будут следующие: | В библиотеке dimensions октавы для генерации (octaves) задаются двумя способами: одним объектом описания для программной генерации нескольких октав или массивом описаний отдельных октав. Начнем с первого случая, при этом поля у объекта октав будут следующие: | ||
− | + | * count - количество октав. Чем больше октав, тем мельче и труднопроходимее будет рельеф. Чаще всего используют 4 октавы. | |
− | *count - количество октав. Чем больше октав, тем мельче и труднопроходимее будет рельеф. Чаще всего используют 4 октавы. | + | * weight - ? |
− | *weight - | + | * scale - ? |
− | *scale - | + | * mt - ? |
− | *mt - | + | * mw - ? |
− | *mw - | ||
− | |||
Всему шуму (не отдельным октавам) также можно задавать следующие параметры: | Всему шуму (не отдельным октавам) также можно задавать следующие параметры: | ||
+ | * gradient - градиент для данной карты шума. | ||
+ | * seed - зерно генерации (сид). | ||
+ | *: | ||
+ | <p class="mw_paragraph"> | ||
+ | <div style="display: inline !important;">При создании карты шума отдельными октавами (octaves - массив), каждая октава будет иметь следующие параметры:<div class="mw-parser-output"><ul><li>weight -?</li><li>offset -?</li><li>scale -?</li></ul> | ||
+ | <h3>Environment</h3>Объект environment предлагает инструменты для настройки среды, а именно цвета неба и туман. Может содержать следующие поля: | ||
+ | <ul><li>sky - цвет неба, задается массивом из трех составляющих RGB (от 0 до 1), каждая из которых может быть как значением, так и массивом из двух значений для более тонкой настройки цветов.</li><li>fog - цвет тумана, имеет аналогичный sky массив описания.</li></ul></div></div> | ||
− | + | ==Объект Dimensions и его методы== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == Объект Dimensions и его методы == | ||
− | |||
Результатом создания нового измерения будет объект Dimension. От будет использоваться для дальнейшей работы с измерением и имеет для этого следующие методы: | Результатом создания нового измерения будет объект Dimension. От будет использоваться для дальнейшей работы с измерением и имеет для этого следующие методы: | ||
− | *setupGeneration(description) - | + | * setupGeneration(description) - ? |
− | *setupTransfer(description) - | + | * setupTransfer(description) - ? |
− | *setupEnvironment(description) - | + | * setupEnvironment(description) - ? |
− | *setupCallbacks(callbacks) - устанавливает коллбеки в формате, описанном выше. | + | * setupCallbacks(callbacks) - устанавливает коллбеки в формате, описанном выше. |
− | *getName() - возвращает имя измерения, заданное при его создании. | + | * getName() - возвращает имя измерения, заданное при его создании. |
− | *getId() - получает уникальное id биома. | + | * getId() - получает уникальное id биома. |
− | *getWrappedObject() - получает лежащий в основе библиотеки java-объект CustomDimention. | + | * getWrappedObject() - получает лежащий в основе библиотеки java-объект CustomDimention. |
− | *getRegion() - | + | * getRegion() - ? |
− | *getTeleporter() - возвращает телепортер из обічного мира в измерение. | + | * getTeleporter() - возвращает телепортер из обічного мира в измерение. |
− | *getTeleporterBack() - возвращает телепортер из измерения в обычный мир. | + | * getTeleporterBack() - возвращает телепортер из измерения в обычный мир. |
− | *getAllTeleporters() - возвращает массив из getTeleporter() и getTeleporterBack(). | + | * getAllTeleporters() - возвращает массив из getTeleporter() и getTeleporterBack(). |
− | *transferTo(tp) - переносит вас в место, заданное телепортером tp. | + | * transferTo(tp) - переносит вас в место, заданное телепортером tp. |
− | *transferIn() - переносит игрока в измерение. | + | * transferIn() - переносит игрока в измерение. |
− | *transferOut() - переносит игрока из измерения. | + | * transferOut() - переносит игрока из измерения. |
− | *isInDimension() - проверяет, находинся ли игрок в данном измерении. | + | *: |
− | + | * isInDimension() - проверяет, находинся ли игрок в данном измерении. | |
Следующие два метода слишком важны, чтобы оставить их в списке наравне с остальными, поскольку позволяют ускорить процесс отладки генерации в разы. stride в обоих случаях показывает, сколько блоков будет соответствовать одному пикселю битмапы: | Следующие два метода слишком важны, чтобы оставить их в списке наравне с остальными, поскольку позволяют ускорить процесс отладки генерации в разы. stride в обоих случаях показывает, сколько блоков будет соответствовать одному пикселю битмапы: | ||
− | *debugTerrainMap(size, stride) - генерирует и показывает всплывающим окном при загрузке InnerCore битмапу с видом на сгенерированный ландшафт сверху размером size*size. | + | * debugTerrainMap(size, stride) - генерирует и показывает всплывающим окном при загрузке InnerCore битмапу с видом на сгенерированный ландшафт сверху размером size*size. |
− | *debugTerrainSlice(size, stride) - генерирует и показывает всплывающим окном при загрузке InnerCore битмапу со срезом сгенерированного ландшафтавысотой size (вид сбоку). | + | * debugTerrainSlice(size, stride) - генерирует и показывает всплывающим окном при загрузке InnerCore битмапу со срезом сгенерированного ландшафтавысотой size (вид сбоку). |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |