IrrLicht. Изометрические тайлы

У каждого программиста-любителя рано или поздно назревает мысль о создании собственной компьютерной игры. Так как я не располагаю коммерческими средствами для создания компьютерных игр, мне пришла мысль воспользоваться открытым игровым движком IrrLicht. С чего начать создание своей компьютерной игры? Было бы неплохо построить набор инструментов для редактирования уровней, формирования диалогов, персонажей и т.п. Начнем с редактора тайлов.

В сети существуют ресурсы с открытыми наборами тайлов для уровней и персонажей. Все графические материалы для моего проекта взяты с ресурса https://opengameart.org.

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

Таким образом будущий редактор тайлов должен иметь следующие возможности:

  • Определять сетку для размещенных тайлов
  • Очерчивать области изображения с нужными объектами
  • Назначать каждому объекту свой порядковый номер
  • Устанавливать базисные векторы для изометрического игрового мира
  • Устанавливать соответствующие смещения каждого объекта относительно карты игрового мира для корректного отображения

Проект претерпевает изменения, но текущую «сырую» версию уже можно скачать и скомпилировать.

Алгоритм работы

  1. В окне программы 2DIrrTileset следует нажать на кнопку File Open и выбрать изображение с искомым набором тайлов.
2D IrrLicht tileset manager no tiles
2DIrrTileset

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

2D IrrLicht tileset manager grassland_tiles loaded
Окно с загруженными тайлами

На вкладке Main можно установить размеры сетки и номер текущего тайла.

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

2D IrrLicht tileset manager basis
Вкладка basis с компонентами базисных векторов

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

4. Теперь можно разметить тайлы и присвоить им номера.

2D IrrLicht tileset manager selection
F1 — режим выделения


2D IrrLicht tileset manager selection
5 выделенных тайлов

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

5. Для редактирования параметров тайла, нужно нажать клавишу F2, выбрать нужную область и перейти на вкладку area.

2D IrrLicht tileset manager edit selection
Тайл № 3 выделен. Его параметры отображены в area.

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

2D IrrLicht tileset manager edit py
Смещение начала координат (0, 48)

Эту процедуру можно проделать и для «куста» под номером 4.

Коротко о параметрах: id — номер тайла; Point x, Point y — смещение начала координат по оси x и y соответственно; Width, Height — количество занимаемых изометрических клеток по x и y в изометрическом базисе соответственно.

Если объект занимает площадь, большую чем одна плитка, то нужно всего лишь отрегулировать параметры Width и Height.

2D IrrLicht tileset manager 4x4 tile
Тайл, занимающий пространство 4х4

Итог

После всех необходимых манипуляций, можно сохранить проделанную работу, нажав кнопку 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/

https://opengameart.org/

Добавить комментарий

Ваш e-mail не будет опубликован.