Предисловие.
В данной статье я расскажу вам о лучшем (на мой взгляд), редакторе уровней. В нем есть все что нужно, что-бы удовлетворить ваши потребности, и даже больше. А теперь, кратко о преимуществах.
- Супер простой интерфейс.
- Полностью бесплатен и open source.
- Уровни сохраняются в формат JSON, что позволяет легко вытащить нужные данные.
- Поддерживается экспорт в PNG, полезно для SGDK.
- Поддерживается экспорт в tmx (формат Tiled), который поддерживается многими движками.
- Продвинутая система автотайла.
Редактор разработал Sébastien Benard, создатель игры Dead Cells, на языке Haxe
Теперь, перейдем к делу.
Создаем карту из тайлов.
Скачайте LDTK с официального сайта.
Создав новый проект, вы увидите такое окно.
- Слева — отображаются слои
- Cправа — карта уровней.
Теперь, загрузите тайлы отсюда. И импортируйте их в LDTK.
Теперь, создайте новый слой, и выберите тип Tiles.
И нарисуйте карту, выбирая тайлы с левой части экрана.
Зажав ЛКМ+SHIFT, вы можете закрасить область тайлов. ПКМ+SHIFT — наоборот, удаляет область тайлов.
Создаем карту коллизий.
Создайте новый слой, и выберите тип INTEGER GRID. Данный слой, в будущем, будет представлен в виде массива чисел.
В графе Grid values, добавьте новые элементы.
У каждого элемента есть цвет и число.
- Число —это то что будет записываться в массив.
- Цвет, то что мы видим в редакторе.
Нарисуйте карту коллизий, сохраните, и откройте ldtk файл проекта в блокноте.
Мы видим, горячо любимую и всем знакомую, JSON разметку.
По ключевому слову intGrid (название нашего слоя), найдите массив коллизий.
Также, на основе массива коллизий, можно ставить тайлы.
Автоматизируем процесс нанесения тайлов.
LDTK — поддерживает довольно мощный и одновременной простой, инструментарий автотайла.
Создайте новый слой, и выберите тип Auto Layer.
Задайте, массив коллизий IntGrid, и используемый тайлсет.
Теперь, установим условия нанесения тайлов.
Условия здесь поделены на группы, ради удобства. Создайте новую группу, и добавьте туда новое правило.
Выберите тайл неба.
Только что мы создали условие, при котором все тайлы заменяется на тайл неба. Это пустое условие, так что, тайлы заменяются в любом случае.
Если навести на условие, тайлы подсветятся.
Создадим еще одно условие, снова нажмите на +.
Обратите внимание на сетку, так сильно напоминающую меню верстака из Minecraft. Здесь я указал, что тайл земли будет ставится, если стоит solid (или 1, в массиве коллизий). Т.е. если поменять массив коллизий.
То, автотайл изменится соответственно.
Тайл по центру, тот что обведен пунктиром, это место где будет стоять тайл, в случае выполнения условия. Все остальные клетки, это окружающие его тайлы. Для примера, рассмотрим условие углового тайла земли.
Условие НЕТ тайла, ставится ПКМ, тогда как, условие ЕСТЬ тайл устанавливается через ЛКМ.
Тайл, ставится если: в массиве коллизий стоит solid, и левый, верхний, лево-верхний тайл — пустой.
Данное условие, я повторил по вертикали (X) и горизонтали (Y).
Остальные условия разбирать не буду, т.к. они делаются по аналогии.
Как видите, автотайл это отличная инвестиция, потому-что задав его условия сейчас, вы сэкономите уйму времени в будущем.
Также, автотайл можно установить прямо в intGrid.
Теперь, давайте добавим облака. Установив условие, при котором тайл облака ставится если, тайл в массиве коллизий не занят (равен 0).
И уменьшим количество облаков до 10%.
Добавляем вражин (Entity).
Создайте новый слой, выберите тип Entities
Перейдите во вкладку, Entities (F4), и создайте новое entity.
У entity есть размер, тег, имя и переменные.
Создавайте новые переменные (+ Field), или массивы переменных (+ Array), чтобы передать нужную информацию об entity.
Теги будут полезны вам во время парсинга, т.к. entity с одним тегом, помещаются в один общий массив.
Enums (перечисления) создаются в графе Entity enums. Нужен, когда вы хотите задать режим или же состояние у entity. Конечно, можно использовать int переменные, но Enums удобней.
Как закончите создавать entity, разместите их на карте.
Прочее.
Отведите мышку за пределы уровня, и нажмите ПКМ->New Level. Таким образом, вы создадите новый уровень.
Что-бы удалить его, прокрутите вниз колесиком мыши, выделите уровень и нажмите Delete.
Для экспорта в PNG, откройте настройки проекта, и включите Export as PNG. После сохранения, в папке с проектом появится PNG картинка карты.
Заключение.
LDTK — это мощный и, воистину, потрясающий инструмент для создания уровня. Данный инструмент я широко использую в своих SGDK проектах. Дошло до того, что благодаря LDTK и Python скрипту, удалось упростить разработку до абсурда.