Files

7.5 KiB

RPG Map Editor — рисование тайловых карт и расстановка событий

RPG Map Editor правит тайловые карты движка RPG прямо во время игры: три слоя тайлов, стены и проходы, точку появления героя, случайные бои и события — персонажей, таблички, двери, подбираемые предметы. Сохранение сразу обновляет карту в запущенной игре, а кнопка Играть позволяет по ней пройтись.

Открывается редактор из набора инструментов (молоток на панели инструментов) как Редактор RPG-карт — для той карты, на которой сейчас стоит игрок.

Правка и её результат в игре

Дом старейшины из RPG Plus до правки:

Дом старейшины в игре: деревянная комната, в глубине стоит старейшина, справа сундук.

В редакторе: вкладка Внешность, спрайт торговца, кнопка Разместить NPC, клик по свободной клетке. Новое событие выбрано на слое События, его свойства — справа:

Редактор RPG-карт на файле rpg_demo_game / rpg_elder_house.json: список «Внешность» с выбранным merchant · village/merchant, карта, где старейшина и новый торговец обведены рамками как события, а события из других файлов — пунктирными рамками; справа свойства карты (тайлсет village, 12 × 10, точка появления 6, 8 со взглядом вверх) и новое событие npc_village_merchant в клетке 9, 3 с чарсетом village/merchant, взглядом вниз и запуском по клавише действия (E/F). Строка состояния сообщает, что «merchant» размещён как NPC.

После сохранения (Ctrl+S) торговец стоит в доме:

Та же комната в игре, теперь с торговцем справа у задней стены.

Его диалог и поведение задаются в свойствах события: сценарий, условие, способ запуска.

Слои и инструменты

  • Фон, Основной, Передний — слои тайлов. Фон и Основной могут перекрывать проход непроходимыми тайлами; Передний рисуется поверх персонажей и никогда не блокирует.
  • Коллизии — рисуется поверх тайлов: Стена (всегда непроходимо), Проход (всегда проходимо) или Авто (по тайлам).
  • События — клик выбирает или тащит событие, двойной клик по пустой клетке добавляет, Del удаляет.
  • Карандаш, Ластик, Заливка; правая кнопка мыши стирает, Alt+клик берёт тайл, клавиши 1–5 переключают слои, B/E/G — кисти.
  • Отменить/Вернуть (Ctrl+Z / Ctrl+Y), сетка, масштаб (Ctrl+колесо).

Слой коллизий дома старейшины: стены закрашены красным как «Стена», пол открыт.

Вкладки слева: Тайлы (палитра тайлсета карты; целые объекты вроде дома или дерева можно ставить одним штампом), Персонажи (персонажи с боевыми характеристиками, размещаются как враги), Предметы (раскладываются как подбираемые предметы с количеством) и Внешность (все спрайты загруженных модов, размещаются как NPC).

Правый столбец — свойства карты: ключ имени, тайлсет, размер, масштаб, своё освещение и атмосфера, точка появления и направление взгляда, а также случайные бои (примерно раз в N шагов, группы врагов вида slime; wolf,slime).

Вид сверху и изометрия

Редактор рисует карту так же, как её рисует игра. Переключатель вида на панели инструментов меняет только предпросмотр; данные карты остаются прежними. Дом в изометрическом предпросмотре:

Дом старейшины в изометрическом предпросмотре редактора: та же комната в изометрии, слева палитра тайлсета.

Сам вид игры задаёт настройка коллекции tile.renderer (topdown или isometric); ключ --editor-renderer=isometric открывает редактор сразу в изометрическом предпросмотре.

Какие файлы записываются

  • Сама карта сохраняется в свой maps/<id>.json.
  • События попадают в файл событий этой карты в том же моде (map_events/<карта>/…). События, которые добавляют на карту другие файлы или другие моды, показываются приглушённо, с пунктирной рамкой, и никогда не перезаписываются; их id нельзя использовать повторно.
  • + рядом со списком файлов создаёт новую карту в выбранном моде; после сохранения игра сразу знает её как сцену.
  • Записывать можно только в моды, установленные папками.

Если что-то пошло не так

  1. «Играть» сообщает, что игра не знает сцену. Карте нужен файл scenes/<id>.json в её моде.
  2. Событие не выбирается. Оно принадлежит другому файлу или другому моду (пунктирная рамка).
  3. NPC не разговаривает. У его события нет сценария, либо запуск у него не по клавише действия.
  4. Сохранение меняет строки, которые вы не трогали. Редактор записывает файлы в своём порядке и добавляет значения по умолчанию для полей событий, поэтому diff может показать больше, чем сама правка.