LevelEditor

About

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

Как работать с программой

Заготовка тайлов

пример тайлов

Прежде чем приступать к созданию карты, вы должны заготовить bmp с изображением тайлов (например, нарисовать в Paint). Тайлы должны располагаться на картинке с самого начала (с левого верхнего угла) слева направо и сверху вниз в порядке возрастания номеров. Первый (точнее, нулевой) тайл рекомендуется оставить пустым. Все тайлы должны быть, естественно, одинакового размера (какого, не важно, его можно выбрать). Когда картинка с тайлами будет готова, сохраните ее туда, куда будете сохранять будущий уровень (лучше всего сохранять картинки и уровни в папке проекта вашей игры). Когда запустите Level Editor, выберите в меню Edit команду Options и сделайте начальные установки уровня, как это описано ниже.


Установка параметров уровня

В этом окошке нужно поставить высоту и ширину тайла (первые два поля), количество тайлов в "строке" (для картинки, приведенной справа от текста, это число равно 6), и, самое главное, выбрать картинку с заготовленными тайлами. Файл объектов пока не трогайте, так как он служит для загрузки сведений об объектах, когда вы создаете несколько разных уровней для одной и той же игры и объекты в них одинаковые. Далее можете установить фиксированную ширину и высоту уровня, если это вам необходимо (обычно при сохранении программа просматривает всю карту и урезает уровень, отбрасывая пустое место с концов). Ограничение по размеру карты может быть полезно, если вы не планируете скроллинг экрана (т.е. когда у вас всегда уровень видно в окне полностью). Теперь можно нажать ОК и начинать создание карты.

Редактирование карты

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

Когда вы изменяете тайлы при удержании левой кнопки мыши, тайлы рисуются поверх объектов. Не пугайтесь, объекты никуда не денутся: как только вы отпустите кнопку мыши, окно перерисуется и объекты появятся на своих местах. Если вы хотите выключить режим редактирования тайлов, щелкните в любом месте карты правой кнопкой мыши.

Вы также можете включить сетку, начерченную по размерам тайлов. Для этого нажмите на кнопку с изображением решетки ("Show Grid") справа внизу на панели инструментов. Выключить сетку можно повторным нажатием на кнопку.

Добавление объектов

Что такое объекты в Level Editor

С помощью объектов вы можете поместить в ваш уровень все, что угодно. Это могут быть противники, игрок(и), призы, лифты и эскалаторы, факелы на стене замка, двери и т.д. Level Editor просто поможет вам расставить ваши объекты в уровне.

Любой объект в Level Editor представляется в виде структуры из четырех чисел:

struct tagLEVFILEOBJECT
{
int x, y; //  координаты x и y
int type; // тип (вид) объекта
int param; // дополнительный необязательный параметр.

};

Когда вы помещаете объект в уровень, Level Editor добавляет в список объектов уровня новую структуру, содержащую вышеперечисленные 4 числа. В x и y записываются координаты объекта в пикселях, считая от верхнего левого угла уровня. Чтобы ваша игра при загрузке уровня могла отличить один объект от другого, например, противника от игрока, каждому типу объекта вы должны присвоить свой тип, например, игрок - 1, противник зомби - 2, противник скелет - 3, лифт - 4 и так далее. О назначении param написано ниже.

Создание описания объекта

добавление объектов

Чтобы поместить в уровень объект, сначала надо ввести в LevelEditor его описание, чтобы можно было его выбрать для помещения в уровень. Делается это нажатием кнопки "Add" на панели инструментов или выбором пункта меню "Edit->Add Object...". Появиться окошко Add/Edit Object Info(на рис. справа), в котором надо указать тип этого объекта - целое число и соответствующее ему имя, по которому вы будете выбирать этот объект для добавления в уровень. Остальные параметры являются необязательными и можно их не заполнять. Они служат для того, чтобы создать дополнительные удобства при редактировании. Width и Height- ширина и высота объекта в пикселях. Если вы их не укажите, они примутся по умолчанию по 16 пикселей. Также ширина и высота объекта используются при привязке объекта к нижнему и правому краям тайла(о привязке написано ниже). По умолчанию объект изображаться на экране в виде прямоугольника заданного размера с написанным на нем номером типа объекта. Вы можете сделать так, чтобы объект изображался не квадратиком с номером типа внутри, а изображающей его картинкой. Для этого имя картинки, изображающей данный объект, необходимо вписать в поле "Bitmap Name" в этом же диалоге.

Примечание: Программа будет считать, что картинка целиком изображает данного противника. При этом по умолчанию установлена галочка "Use Width and Height from bmp" - использовать размеры картинки в качестве размеров объекта (при этом числа в полях Width и Height игнорируются). Поэтому если вы используете картинку, изображающую объект, поля Width и Height можно не заполнять.

После нажатия кнопки ОК описание объекта добавиться в список описаний объектов в программе (тот самый, который сохраняется в виде отдельного файла .lbj чтобы можно было использовать его при построении других уровней одной и той- же игры ).

После того, как вы ввели описание, объект можно поместить в уровень. Выберите его имя из выпадающего списка (на панели инструментов слева). Программа перейдет в режим расстановки объектов, о чем будет свидетельствовать надпись на панели инструментов (Put object x=... y=.... type=.. ). Вы можете вставить один или несколько объектов. В отличие от тайлов, при совпадении координат нового и старого объекта старый объект не удаляется, а остается под новым. Если вы хотите удалить объект, читайте об этом ниже.

Примечание: При загрузке готового уровня без файла .lbj к нему объекты будут показаны на экране в виде прямоугольников размера 16х16 с номером типа внутри, но добавлять объекты вы не сможете, пока не введете описание.

Часто бывает, что нужно привязать какую-либо границу объекта к тайлам. Например, в игре DangerDungeon противники должны стоять точно на кирпичах, а не летать в воздухе или не ходить сквозь кирпичи (если так не задумано, конечно). В данном случае необходимо привязать нижнюю границу объекта к нижнему краю тайла. Для этого достаточно щелкнуть по кнопке "Vertical Align to Bottom". Кнопка останется в нажатом состоянии, а рамка, показывающая будущее расположение объекта будет перемещаться вниз не плавно, а строго по вертикальной сетке, так что нижний ее край будет всегда находиться у нижних краев тайлов. Также возможны другие привязки: Vertical Align to Top - привязать верхний край объекта к верхнему краю тайла, Horisontal Align to Left - привязка левого края объекта к левому краю тайла, Horisontal Align to Right - привязка правого края объекта к правому краю тайла. Горизонтальные и вертикальные привязки независимы друг от друга. По умолчанию обе привязки установлены в None.

Указание дополнительной информации об объекте

Param служит для указания дополнительного параметра объекта. Например, вы можете создать несколько разновидностей объектов одного противника с разными степенями агрессивности, указав для них одинаковый type, но сделав разные param. Имена, естественно, в этом случае нужно указать разные. Например, диалог может быть заполнен так:

Name: 	Skelet normal
Bitmap:	skelet.bmp
(+) Use Widht and Height from bmp
Type: 	12
Width: 	0
Height:	0
Param: 	0
Name:	Skelet advanset
Bitmap:	skelet.bmp
(+) Use Widht and Height from bmp
Type: 	12
Width:	0
Height:	0
Param: 	1

Param можно изменять для каждого конкретного объекта, уже размещенного в уровне. Это может потребоваться, например, если вы делаете игру типа стратегии, рассчитанную на несколько игроков. С помощью param вы можете отличать, какому игроку принадлежат объекты- первому, второму или третьему.

В этом случае param придется изменять, когда объекты уже расставлены в уровне. Для этого нужно щелкнуть по нужному объекту двойным щелчком и в появившемся окошке изменить param (смотри ниже), а при создании описания объекта оставьте param равным 0.

параметры объекта

Так как param у объекта вы можете использовать по своему усмотрению, для удобства редактирования я сделал возможность редактирования этого числа в трех представлениях: в виде единого int(4-х байтовое целое), в виде двух слов по 2 байта и в виде 4 char (4 числа в диапазоне 0...255). Вызвать диалог изменения param для конкретного объекта можно щелкнув по нему двойным щелчком мыши. Изменяйте, что вам надо, предварительно выбрав нужное представление с помощью переключателя. После нажатия кнопки ОК param возьмется из выбранного вами представления.

Удаление объектов

Чтобы удалить лишние объекты, щелкните по кнопке Del. Программа перейдет в режим удаления объектов, о чем будет свидетельствовать надпись на строке состояния при нахождении курсора мыши в области редактирования.

Наведите мышь на объект, который хотите удалить. Он обведется прямоугольной рамной и на строке состояния появиться информация о выделенном объекте: координаты объекта и тип. Нажмите левую кнопку мыши и объект удалится.

Использование результата

Пример использования карты, в том числе инициализация игрока и противника данными из карты, вы можете найти в папке sdk\examples, поставляемой с этой программой.

Рекомендации

В диалоге Options имена файлов объектов и картинки лучше указать вручную или после выбора подтереть абсолютный путь к файлу, т.к. у конечного пользователя игра может лежать совсем не в том месте, где у вас и пути к файлам окажутся неверными.

Для отладки уровней вы можете предусмотреть (рекомендую это сделать) в своей программе прием первого параметра из командной строки. Если это файл уровня, то игра загружает его. Это полезно при рисовании уровней- можно сразу его испытать. Для этого в моей программе предусмотрена команда File->Test Level или кнопка "GO!" на панели инструментов. В появляющемся диалоге необходимо задать путь к .exe вашей игрушки. Полное имя текущего уровня будет параметром (при необходимости его можно изменить). Примечание: перед этим уровень надо сохранить, чтобы обновить файл на диске.


2002 Sasnov Alexander ( sashnov@ngs.ru )