Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Как хранятся карты в RPG Maker MV

Как хранятся карты в RPG Maker MV 3 года 2 мес. назад #110658

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2468
  • Даритель СтимкеяПроект месяца 3 местоПрограммист RubyПаладинПоддержка ФондаРазработчикЗа 2 место на конкурсе маппингаОраторВетеран2 место
В этом сообщении я опишу, как хранятся данные карт в RPG Maker MV. Это может быть полезно тем, кто пишет плагины или ивентит с помощью команды «Получить информацию о карте».

Порядок тайлов

Карты в RPG Maker MV хранятся как один большой массив чисел. На самом деле это трёхмерный массив, сплющенный в одномерный.

Вот пример, как это выглядит (я разделил разные слои на строки, но в самих файлах они так не разделены):
--.png


То есть:
  • сначала идут все клетки первого слоя, самого нижнего (z=0); потом клетки второго слоя (z=1) и так далее до слоя регионов (z=5),
  • в каждом слое сначала идут все клетки первого ряда (y=0), от самой левой (x=0) до самой правой (x=ширина-1); потом клетки второго ряда (y=0) и так далее до последнего ряда (y=height-1)

Назначение слоёв

Слои используются так:
  • z=0 — нижний слой тайлов A; используется для обычной воды, обычной земли и т.п., а также неавтоматических тайлов из A;
  • z=1 — верхний слой тайлов A; используется для глубокой воды и автотайлов, располагающихся над землёй: высокой травы, кувшинок на воде, автотайлового леса, автотайловых гор и т.п.
  • z=2 — нижний слой для тайлов B, C, D, E,
  • z=3 — верхний слой для тайлов B, C, D, E,
  • z=4 — слой теней,
  • z=5 — слой регионов.

(Учтите, что в команде «Получить информацию о клетке» номера слоёв сдвинуты на 1: слой z=0 назван «слой 1», а слой z=3 назван «слой 4». Я буду всегда прибавлять z=, чтобы вы знали, что я говорю о номерах слоёв в коде мейкера, а не о номерах слоёв в редакторе.)

Тайлы

Слоёв для тайлов 4. Редактор позволяет поставить тайлы только на определённый слой:
  • тайлы A идут либо на слой z=0, либо на слой z=1 (то, куда что идёт, зависит от типа тайла);
  • тайлы B, C, D, E идут на слой z=3 или z=2 (при рисовании тайлы размещаются на слой z=3; если мы размещаем тайл на клетку, где уже есть тайл, то старый тайл сдвигается на z=2).

Эти ограничения существуют только в редакторе: в коде можно разместить автотайлы воды или травы на слое z=2 или z=3, или же дерева на слое z=1. Редактор не позволяет разместить тайлы таким образом, но с отображением тайлов проблем не будет.

На вкладке A располагается много автотайлов. Автотайлы — это клетки, у которых много вариантов перехода к соседним клетка: например, вода или земля. Редактор сам выбирает, какой вариант автотайла поставить, но в движке автотайлы хранятся уже поставленными: у каждого варианта автотайла будет свой код. Например, в моём примере у воды коды 2082, 2068, 2049, у жёлтой земли — 2888, 2894, 2909, у высокой травы — 3048, 3053 (у низкой травы тоже несколько вариантов: 2856 и 2844, но они неотличимы на глаз).

Тени

Тени падают на слои от z=0 и z=1. Слои z=2 и z=3 рисуются поверх теней.


Тени хранятся в числах от 0 до 15, при этом:
  • 1 (в двоичной системе 0b0001) — тень в левом верхнем углу клетки,
  • 2 (в двоичной системе 0b0010) — тень в правом верхнем углу клетки,
  • 4 (в двоичной системе 0b0100) — тень в левом нижнем углу клетки,
  • 8 (в двоичной системе 0b1000) — тень в правом нижнемуглу клетки.

Значения можно складывать (или объединять побитовой операцией «или»): 3 (1+2) — тень на верхней части клетки, 12 (4+8) — тень на нижней части клетки. 15 (1+2+4+8) – полностью тёмная клетка, 0 — клетка без теней.
Последнее редактирование: 3 года 2 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: AnnTenna, Lekste, DK, RastaManGames, yuryol, Cabbit, Mur, Noxmils
Время создания страницы: 0.201 секунд