Что такое чанк в майнкрафте

Для Windows Phone 24.04.2019
Для Windows Phone

В этой статье рассмотрим понятие, назначение и применение чанков в MODX Revolution. Кроме этого познакомимся с тем, как выполняется обработка и управление чанками в сниппетах через API.

Что такое чанк?

Чанк - это элемент MODX, который представляет собой кусок текста или HTML-кода. Предназначен он для формирования некоторого фрагмента (куска, части) HTML-страницы. Например, чанк можно использовать для вывода раздела head HTML-документа, меню, блоков информации в основной и дополнительной области сайта, футера и многих других частей страницы.

Например, чанк (его содержимое), который используется для вывода меню сайта:

[]

Кроме этого чанки в MODX Revolution также используются в качестве шаблонов для вывода результатов работы сниппета.

Например, чанк (tpl.Tickets.list.row), который используется в качестве шаблона сниппета getTickets:

[[!getTickets? &tpl=`tpl.Tickets.list.row`]]

Внутри чанках, как и во многих других элементах MODX Revolution (шаблонах, TV-параметрах, полях ресурса), нельзя непосредственно размещать php-код. Размещение в этих элементах динамического содержимого осуществляется посредством вызовов сниппетов, которые исполняют хранящийся внутри них PHP-код.

Совет: не храните повторяющийся код (раздел head , шапку сайта, меню, подвал, контактную информацию и др. блоки страницы) в шаблонах. Более предпочтительно всё это оформить в виде чанков, а затем использовать их в необходимых шаблонах. Это позволит сократить значительное количество времени, если потребуется внести изменения в некоторый блок. Вместо редактирования большого количества шаблонов, в данном случае потребуется всего внести изменения только в один чанк.

Где хранятся чанки

Чанки, как и остальные объекты MODX, хранятся в базе данных. Чанки содержатся в таблице modx_site_htmlsnippets (modx - это префикс таблиц, заданный во время установки системы).

Работа с чанками в админке MODX

Чанки в админке MODX Revolution расположены на левой панели во вкладке "Элементы".

Создание чанка

Создание чанка осуществляется с помощью кнопки "+". После нажатию на эту кнопку открывается страница, содержащая форму. Среди полей этой формы, основными являются имя и код чанка (html). Имя - это название, посредством которого этот чанк можно будет вызывать в шаблоне, содержимом ресурса или в другом месте. Код чанка (html) - это контент, который парсер будет выводить на месте вызова чанка.

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

Редактирование чанка

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

Как использовать чанки в MODX

Вставка чанка в шаблон или содержимое ресурса осуществляется с помощью следующего тега MODX:

[[$chunkName]]

Во время обработки страницы, парсер MODX заменит тег чанка его содержимым.

Чанк и его параметры

Чанки в MODX могут иметь параметры. Например, рассмотрим чанк "intro", имеющий следующее содержимое:

Привет, [[+name]]. У Вас [[+messageCount]] сообщений.

Он имеет 2 плейсхолдера: [[+name]] и [[+messageCount]]. Передать значения этим плейсхолдерам можно с помощью указания соответствующих параметров вызову чанка:

[[$intro? &name=`Роман` &messageCount=`7`]]

В результате, получим следующее содержимое:

Привет, Роман. У Вас 7 сообщений.

Если пойти немного дальше, то можно, например, создать TV-параметры name и messageCount , и добавить их (эти переменные) к соответствующему шаблону. После этого у каждого ресурса, имеющего этот шаблон, появятся эти TV-параметры. Значения этих TV-параметров можно использовать в качестве значений параметров чанка:

[[!$intro? &name=`[[*name]]` &messageCount=`[[*messageCount]]` ]]

или в содержимом чанка:

Привет, [[*name]]. У Вас [[*messageCount]] сообщений.

Условия в чанках

Условия и другие фильтры MODX можно использовать в любых специальных тегах этой системы.

Например, внутри чанка в зависимости от идентификатора родителя текущего ресурса вывести один или другой чанк.

[[*parent:is=`10`:then=` [[$chunk1]] `:else=` [[$chunk2]] `]]

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

resource->parent==10) { $output = "chunk1"; } return $modx->getChunk($output);

Обработка чанка с помощью API

Чанки часто выступают в качестве шаблонов для вывода результатов работы сниппета. Обрабатывается чанк в сниппете через функцию getChunk().

Например, рассмотрим, как использовать чанк "rowTpl" в сниппете.

Чанк "rowTpl", имеет следующее содержимое:

[[+pagetitle]] [[+introtext]]

Содержимое (php-код) сниппета, который получает все опубликованные ресурсы на сайте и выводит их в таблицу. Для вывода данных отдельного ресурса (одной строки таблицы, состоящей из 2 ячеек) используется шаблон rowTpl.

// получить массив (коллекцию) опубликованных ресурсов $resources = $modx‐>getCollection("modResource",array("published" => true)); // переменная-счётчик $i = 0; // переменная, хранящая результат $output = ""; // перебрать все ресурсы foreach ($resources as $resource) { // создать ассоциативный PHP массив из полей ресурса $properties = $resource‐>toArray(); // установить ключу rowCls ассоциативного массива $properties значение alt, если ресурс чётный $properties["rowCls"] = $i % 2 ? "" : "alt"; // получить содержимое чанка rowTpl, передав в него массив полей ресурса в качестве параметров $output .= $modx‐>getChunk("rowTpl",$properties); // увеличить значение переменной на 1 $i++; } // вернуть в качестве результата таблицу опубликованных ресурсов return "

".$output."
";

Управление чанком через API

Управлять чанками в MODX можно через API:

newObject("modChunk"); // 1.2. Установить этому новому чанку имя NewChunkName $chunk‐>set("name","NewChunkName"); // 1.3. Установить этому чанку контент $chunk‐>setContent("

Это мой новый чанк!

"); // 1.4. Сохранить этот чанк в базу данных $chunk‐>save(); /* 2. Получить существующий чанк, изменить содержимое этого чанка. Сохранить изменения в базу данных */ // 2.1. Получить чанк, имеющий имя NewChunkName $chunk = $modx‐>getObject("modChunk", array("name" => "NewChunkName")); // 2.2. Если чанк с таким именем существует, то... if ($chunk) { // 2.3. Установить ему следующий контент $chunk‐>setContent("

Это мой чанк, но уже с новым контентом!

"); // 2.4. Сохранить изменения $chunk‐>save(); } /* 3. Получить существующий чанк и удалить его из базы данных */ // 3.1. Получить чанк, имеющий имя NewChunkName $chunk = $modx‐>getObject("modChunk", array("name" => "NewChunkName")); // 3.2. Если чанк с таким именем существует, то удалить его. if ($chunk) $chunk‐>remove();

Чанки в Майнкрафте- это куски карты, которые генерируются, когда игрок находится рядом. Они небольшие по своей длине и ширине, но огромны по своей высоте.

Один чанк имеет 16 блоков в длину, 16 блоков в ширину, и 256 блоков в глубину, что позволяет вычислить его объем (16*16*256=65536 блоков). Когда игрок появляется в новом мире, вокруг него сразу генерируется 81 чанк. В сетевой игре этот радиус от 3 до 15, хотя его можно настроить. Если у вас тормозит игра, то лучше всего поставить радиус в 3 чанка. Если игра работает более чем стабильно, то можно сделать этот радиус чуть больше.

Казалось-бы,что мир Майнкрафта бесконечен, но это не так. Когда игрок появляется в новом мире, он оказывается в самой его середине, и если идти в одном направлении, вы все таки найдете конец мира. По некоторым данным, в мире игры всего может сгенерироваться четырнадцать триллионов шестьдесят два миллиарда пятьсот миллионов (14.062.500.000.000) чанков. Каждый чанк имеет свои данные, такие как количество руды, воды и деревьев, находящихся в нем.

Есть еще такое понятие как биом, который обычно состоит из нескольких десятков, а бывает и сотен чанков. Иногда чанки не до конца прогружаются, и игроку кажется, что он падает в пустоту, а затем застревает в блоках земли, но на самом деле этого не происходит, это подгружается еще не загруженный чанк. Называется это ошибкой чанка. Ошибка чанка чаще всего проявляется в мультиплеере. Она не всегда является отрицательным моментом в игре, иногда её можно использовать в свою пользу. Когда чанк не загрузился, он как-бы отсутствует. Это означает, что его можно рассмотреть более подробно — вы с легкостью сможете увидеть полезные руды и шахты других чанков.


Нажатие кнопки F3 во время игры откроет экран, на котором будут написаны ваши координаты, которые обозначаются буквами X, Y и Z. Эти координаты изменяются по мере того, как игрок продвигается. X и Z координаты, которые делятся на 16 представляют границу между чанками. Например 96, -32 будет углом, где 4 чанка встретятся. По сути, игрок будет находиться в правом нижнем углу этого фрагмента, когда оба X и Z делятся на 16. Также, когда вы все-таки дойдете до конца мира, у вас начнут появляться так называемые «поддельные» чанки. Это, попросту говоря, миражи. Встав на такой чанк вы упадете в пустоту и умрете, и неважно, были-ли вы в творческом режиме или в режиме выживания. Зону поддельных чанков можно определить по нескольким признакам:

1. При активации поршня его стержень будет обращен в нуль.
2. Редстоун провод будет иметь искаженные текстуры, будет более растянутым.
3. Ваши вещи в инвентаре будут трястись.
4. Частицы огня в факеле, и в редстоун факеле изначально будут иметь неправильное положение.
5. Некоторые блоки не будут гореть вообще.

На части. Размеры одного чанка - 16 блоков шириной, 16 блоков длиной и 256 блоков глубиной. Это составляет 65 536 блоков. При открытии нового куска карты, генерируется и становится активным 81 чанк вокруг игрока. В многопользовательском режиме чанки загружаются в радиусе 10 от игрока (21*21 чанк). Радиус может быть сконфигурирован от 3 до 15. Связано это с мощностью оборудования и скоростью подключения. На этих чанках могут появляться мобы , деревья , вода , предметы и прочее, тогда когда активность на всех других чанках на карте остановлена и они являются полностью статичными. Если игрок переместится на область уже сгенерированных чанков, то эти чанки восстановятся и наполнятся динамическими объектами. С 20 декабря 2010 года сервер сохраняет чанки реже, чем раньше. Чанки не пересохраняются, если они уже были сохранены 30 секунд назад.

В некоторых версиях игры существует ошибка, в связи с которой один или несколько чанков на сервере не загружается, и игрок видит перед собой огромную пропасть до дна, но не может в неё упасть. Для ликвидации этой ошибки нужно переподключиться к серверу, изменить дальность прорисовки (F3 + F) или установить факел неподалеку от этой дыры.

Рендеринг игры делит чанк на 8 частей 16*16*16(после версии 1.2.3 стало 16 частей) , которые составляют списки OpenGL, в целях значительного ускорения рендеринга. Он должен быть каждый раз перестроен при изменении чанка.

См. также

Комментарии:

techdance
много полезного Рейтинг: 0
SheldonPWNZ
очень подробно расписано спасибо Рейтинг: 0
heyWik
Я практически случайно зашел на этот сайт, но задержался тут надолго. Задержался, потому что все очень интересно. Обязательно скажу о вас всем своим друзьям. Рейтинг: 0
lalehatsbub
Познавательно, но не убедительно. Чего-то не хватает, а чего не пойму. Но, скажу прямо: – cпасибо очень полезно оказалось Рейтинг: 0
MANDALA
Материал на пять с плюсом. Но есть и минус! У меня скорость интернета 56кб/сек. Страница грузилась около 40 секунд. Рейтинг: 0


Рекомендуем почитать

Наверх