Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
− | <div class="mw-parser-output">Dimensions - библиотека, значительно упрощающая процесс создания измерений. В этой документации будут описаны ее основные возможности и функционал.
| + | Dimensions - библиотека, значительно упрощающая процесс создания измерений. В этой документации будут описаны ее основные возможности и функционал. |
− | <div class="mw-parser-output">
| |
− | <div class="mw-parser-output">
| |
− | <div class="mw-parser-output"><div class="mw-parser-output">
| |
− | == Загрузка ==
| |
− | | |
− | {| border="1" cellpadding="1" cellspacing="1"
| |
− | |-
| |
− | | Версия
| |
− | | Ссылка
| |
− | | Список изменений
| |
− | |-
| |
− | | '''2'''
| |
− | | [https://raw.githubusercontent.com/mineprogramming/APO_craft/d93907979d4113ec9d05da892502eee27264a848/lib/dimensions.js Скачать]
| |
− | | Фикс ошибки получения координат в функции генерации чанка (by IchZerowan)
| |
− | |}
| |
− | </div> </div>
| |
− | | |
− | == Подключение ==
| |
| | | |
| + | ==Подключение== |
| Для подключения данной библиотеки используется следующая строка: | | Для подключения данной библиотеки используется следующая строка: |
− | <syntaxhighlight lang="Javascript">IMPORT("dimensions");
| |
− | </syntaxhighlight>
| |
− | </div>
| |
| | | |
− | == Генерация == | + | <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", // Название измерения |
Строка 62: |
Строка 42: |
| }, | | }, |
| | | |
− | unloaded: function() { | + | loaded: function() { |
| // Выгрузка измерения | | // Выгрузка измерения |
| } | | } |
| }); | | }); |
− | </syntaxhighlight> | + | </syntaxhighlight></span></span> |
− | | + | ===Слои генерации=== |
− | <div class="mw-parser-output"><div class="mw-parser-output"> | |
− | === Слои генерации === | |
− | | |
| Основной единицей генерации является слой. Слоев может быть несколько и каждый из них отвечает за отдельную часть генерации ландшафта: различные биомы, слой бедрока, метеориты, парящие в воздухе. Каждый слой представляет из себя json-объект следующего содержания: | | Основной единицей генерации является слой. Слоев может быть несколько и каждый из них отвечает за отдельную часть генерации ландшафта: различные биомы, слой бедрока, метеориты, парящие в воздухе. Каждый слой представляет из себя json-объект следующего содержания: |
| <syntaxhighlight lang="Javascript">{ | | <syntaxhighlight lang="Javascript">{ |
Строка 92: |
Строка 69: |
| } | | } |
| },</syntaxhighlight> | | },</syntaxhighlight> |
− | <div class="mw-parser-output"><div class="mw-highlight mw-content-ltr" dir="ltr">Рассмотрим каждую часть кода подробнее:</div> </div> <div class="mw-parser-output">
| |
− | *range - диапазон высоты, в котором работает генерация. В данном примере ландшафт будет генерироваться на высоте 0-80 блоков. Единственный обязательный параметр.
| |
− | *noise - описание [https://ru.wikipedia.org/wiki/Шум_Перлина шума Перлина ], лежащего в основе генерации Подробнее в разделе [https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/Dimensions#.D0.9A.D0.B0.D1.80.D1.82.D1.8B_.D1.88.D1.83.D0.BC.D0.B0 Карты шума]. Таких шумов может несколько, в таком случае их следует записывать в виде массива и они будут накладываться.
| |
− | *heights - сродни noise, но накладывается поверх шума. Имеет такой же формат. Используется для генерации мелких биомов (речки, горы) <div class="mceNonEditableOverlay"> </div>
| |
− | *gradient - описание функции [https://ru.wikipedia.org/wiki/Градиент градиента ], которая будет применена к шуму. Отвечает за то, как примерно будет выглядеть ландшафт. Задается в виде набора точек. Между точками интерполируется (соединяется плавной кривой).
| |
− | *terrain - настройки блоков нашей генерации, могут содержать следующее:
| |
− | **base - блок, служащий основанием для генерации. В данном случае, камень. Можно указать как id и дату (в виде массива из двух элементов либо объекта с полями id, deata), так и просто id.
| |
− | **cover - слои блоков, покрывающих генерацию сверху (в нормальной генерации мира это земля и трава). Объект cover имеет три поля: height - высота верхнего слоя, block - основной блок покрытия, top - самый верхний слой. Все блоки задаются таким же образом, как и base.
| |
− | **filling - параметры заполнения пустот в генерации чем-либо. Пример - вода в обычном мире и лава в нижнем. Объект состоит из полей height - высота, до которой будет заполнен слой, и block - непосредственно сам блок, которым производится заполнение.
| |
− | </div> <div class="mceNonEditableOverlay"> </div> </div> </div>
| |
− |
| |
− | === Карты шума ===
| |
− |
| |
− | Как уже было сказано выше, генерация поверхности происходит по принципу шума Перлина. Подробную информацию о нем можно найти [https://habr.com/post/265775/ здесь ].Каждая карта состоит из октав. Октавы - шум разного масштаба. Подробнее в той же статье.
| |
− |
| |
− | В библиотеке dimensions октавы для генерации (octaves) задаются двумя способами: одним объектом описания для программной генерации нескольких октав или массивом описаний отдельных октав. Начнем с первого случая, при этом поля у объекта октав будут следующие:
| |
− |
| |
− | *count - количество октав. Чем больше октав, тем мельче и труднопроходимее будет рельеф. Чаще всего используют 4 октавы.
| |
− | *weight - ?
| |
− | *scale - ?
| |
− | *mt - ?
| |
− | *mw - ?
| |
− |
| |
− | Всему шуму (не отдельным октавам) также можно задавать следующие параметры:
| |
− |
| |
− | *gradient - градиент для данной карты шума.
| |
− | *seed - зерно генерации (сид).
| |
− | <div style="display: inline !important;">При создании карты шума отдельными октавами (octaves - массив), каждая октава будет иметь следующие параметры: <div class="mw-parser-output">
| |
− | *weight -?
| |
− | *offset -?
| |
− | *scale -?
| |
− |
| |
− | === Environment ===
| |
− |
| |
− | Объект environment предлагает инструменты для настройки среды, а именно цвета неба и туман. Может содержать следующие поля:
| |
− |
| |
− | *sky - цвет неба, задается массивом из трех составляющих RGB (от 0 до 1), каждая из которых может быть как значением, так и массивом из двух значений для более тонкой настройки цветов.
| |
− | *fog - цвет тумана, имеет аналогичный sky массив описания.
| |
− | </div> </div> </div>
| |
− |
| |
− | == Объект 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 (вид сбоку).
| |
− |
| |
− | == PortalRegistry ==
| |
− |
| |
− | Объект PortalRegistry позволяет создавать и управлять блоками порталов с их анимациями.
| |
− |
| |
− | Для создания нового блока порталда используется метод ''newPortalBlock''. Он принимает следующие аргументы:
| |
| | | |
− | *id - строковой id блока портала
| + | Рассмотрим каждую часть кода подробнее:<ul><li class="mw_paragraph">range - диапазон высоты, в котором работает генерация. В данном примере ландшафт будет генерироваться на высоте 0-80 блоков. Единственный обязательный параметр.</li><li class="mw_paragraph">noise - описание [https://ru.wikipedia.org/wiki/Шум_Перлина шума Перлина], лежащего в основе генерации Подробнее в разделе [#h17sjgmldkil1on4brwi27i3pubts6s Карты шума]. Таких шумов может несколько, в таком случае их следует записывать в виде массива и они будут накладываться.</li><li class="mw_paragraph">heights - сродни noise, но накладывается поверх шума. Имеет такой же формат. Используется для генерации мелких биомов (речки, горы)<div class="mw-parser-output"></div><div class="mceNonEditableOverlay"></div></li><li class="mw_paragraph">gradient - описание функции [https://ru.wikipedia.org/wiki/Градиент градиента], которая будет применена к шуму. Отвечает за то, как примерно будет выглядеть ландшафт. Задается в виде набора точек. Между точками интерполируется (соединяется плавной кривой).</li><li class="mw_paragraph"><br class="single_linebreak"/></li></ul><h3 class="mw_paragraph" id="h17sjgmldkil1on4brwi27i3pubts6s">Карты шума</h3> |
− | *texture - параметры текстуры в формате [name, data]
| |
− | *portal - объект типа Portal, возвращаемый метдом ''dimension..getPortal()''
| |
− | *portalRenderParams - параметры рендера портала, имеет следующий формат:
| |
− | **frameId - ?
| |
− | **type - одна из следующих констант
| |
− | <syntaxhighlight lang="Javascript">PortalRegistry.RENDER_TYPE_FULL = "full"; | |
− | PortalRegistry.RENDER_TYPE_VERTICAL_PLANE = "v-plane";
| |
− | PortalRegistry.RENDER_TYPE_HORIZONTAL_PLANE = "h-plane";
| |
− | PortalRegistry.RENDER_TYPE_UNIVERSAL_PLANE = "u-plane";
| |
− | </syntaxhighlight> | |