IrrLicht. Изометрические тайлы
У каждого программиста-любителя рано или поздно назревает мысль о создании собственной компьютерной игры. Так как я не располагаю коммерческими средствами для создания компьютерных игр, мне пришла мысль воспользоваться открытым игровым движком IrrLicht. С чего начать создание своей компьютерной игры? Было бы неплохо построить набор инструментов для редактирования уровней, формирования диалогов, персонажей и т.п. Начнем с редактора тайлов.
В сети существуют ресурсы с открытыми наборами тайлов для уровней и персонажей. Все графические материалы для моего проекта взяты с ресурса https://opengameart.org.
Дело в том, что наборы рисунков для формирования уровней, как правило, хранятся в одном изображении и имеют определенные параметры. Например размеры одного тайла, его расположение на исходном рисунке и соответствующие параметры для игрового мира (количество клеток по осям X и Y, смещение начала координат, базисные вектора для соответствующих осей).
Таким образом будущий редактор тайлов должен иметь следующие возможности:
- Определять сетку для размещенных тайлов
- Очерчивать области изображения с нужными объектами
- Назначать каждому объекту свой порядковый номер
- Устанавливать базисные векторы для изометрического игрового мира
- Устанавливать соответствующие смещения каждого объекта относительно карты игрового мира для корректного отображения
Проект претерпевает изменения, но текущую «сырую» версию уже можно скачать и скомпилировать.
Алгоритм работы
- В окне программы 2DIrrTileset следует нажать на кнопку File Open и выбрать изображение с искомым набором тайлов.

Для примера я открою файл grassland_tiles.png, который можно скачать здесь.

На вкладке Main можно установить размеры сетки и номер текущего тайла.
3. Далее следует установить параметры для изометрического мира, в котором будет использоваться данный набор. Это вкладка basis.

На данной вкладке следует указать компоненты базисных векторов (X и Y) изометрического пространства. С помощью этих данных можно будет определить количество плиток, занимаемых тайлом в изометрическом мире.
4. Теперь можно разметить тайлы и присвоить им номера.


Тайлы под номерами 3 и 4 следует отредактировать, так как в таком виде редактор уровней будет отображать их некорректно (как будто бы ящик и куст расположены под землей).
5. Для редактирования параметров тайла, нужно нажать клавишу F2, выбрать нужную область и перейти на вкладку area.

Параметр Point указывает смещение начала координат для выделенного объекта. Чтобы ящик «вылез из под земли», установим смещение по оси y равным 48.

Эту процедуру можно проделать и для «куста» под номером 4.
Коротко о параметрах: id — номер тайла; Point x, Point y — смещение начала координат по оси x и y соответственно; Width, Height — количество занимаемых изометрических клеток по x и y в изометрическом базисе соответственно.
Если объект занимает площадь, большую чем одна плитка, то нужно всего лишь отрегулировать параметры Width и Height.

Итог
После всех необходимых манипуляций, можно сохранить проделанную работу, нажав кнопку File Save. В результате чего будет сохранен файл с именем grassland_tiles.png.tileset. При последующем открытии изображения, будет загружен и данный файл.
Формат файла следующий:
tile_width (int), tile_height(int), basis xx(int), basis xy(int), basis yx(int), basis yy(int), <серия структур, соответствующих выделенным объектам>.
Каждая структура имеет вид:
int id;
int x1, y1;
int x2, y2;
int px, py;
int w, h;
Все данные соответствуют тому, что записано во вкладке area. x и y здесь — координаты левой верхней и правой нижней клетки выделенной области. Таким образом вы получаете файл, более подробно описывающий структуру тайлов игрового мира.
Исходник проекта можно взять здесь.
Ссылки по теме
http://irrlicht.sourceforge.net/
Добавить комментарий