Урок::: Ogmo Editor ::: Визуальный редактор 2D-уровней

Ogmo Editor – это визуальный редактор 2D-уровней для независимых разработчиков игр. Это Adobe® AIR™ приложение, и оно является кросс-платформенным, работающим на Windows, OS X и Linux.
Скачать Ogmo Editor
Что означает «Ogmo»?
Ничего! Ogmo – это персонаж игры которую я делал. Действительно трудно сделать хороший уровень без визуального редактора. Я обнаружил, что трачу очень много времени на создание редактора только для одного проекта. Ogmo Editor родился из желания создать 2D редактор для гибкого и многократного использования!
Как это все работает?
Решив использовать Ogmo Editor для создания своей игры, сначала вам нужно написать «файл проекта». Файл проекта – это обычный XML-файл с определением всех тайловых карт, объектов, слоев и параметров проекта. После того как вы создали файл проекта, открываете его в редакторе, и вы можете начинать создание, редактирование, сохранение и повторное открытие уровней. Если вам нужно, вы можете добавлять новые тайловые карты и объекты в проект и все ваши старые уровни останутся совместимы с новыми, и вам не придется каждый раз переделывать все уровни,если вы захотите добавить что-нибудь новое в игру.
Добавление уровней в вашу игру.
Сохраненные уровни – это также простые XML-файлы, формат которых в значительной степени определяется вами в файле проекта. Ogmo Editor был разработан для использования совместно с Flash , но имейте ввиду что в большинстве современных языков программирования есть надежная поддержка XML.
Это бесплатно!
Эта программа предназначена только для любителей и независимых разработчиков. Если вы получили прибыль от игры которую вы сделали с помощью Ogmo Editor’a я прощу вас внести пожертвование в проект, в противном случае это необязательно. Пожертвования пойдут на будущее развитие проекта!
Содержание:
1. Введение
2. Создаем новый проект
3. Создаем основу уровня
4. Слой сетки
5. Слой тайловых карт
6. Слой объектов
7. Заключение
1. Введение
В этом уроке вы научитесь работе с редактором Ogmo. Я проведу вас от создания очень простого проекта и до целого сложного комплекса. Также я научу вас использовать редактор для создания уровней, которые вы потом легко сможете использовать в своих играх.
Здесь не будут показаны приемы программирования при импорте готовых уровней в вашу игру – но если вы умеете работать с языком XML, сделать это будет очень просто. Созданные с помощью этого редактора уровни можно легко связать с такими библиотеками как FlashPunk, Flixel и XNA.
Маленькое замечание, прежде чем я начну: всякий раз, когда я использую клавишу CTRL, используйте клавишу Сommand вместо нее, если вы работаете на Mac.
2. Создаем новый проект
Файлами проекта являются обычные XML-файлы только с другим расширением, а XML-файлы в свою очередь являются простыми текстовыми файлами, записанными в определенном формате. Самый простой редактор где можно написать файл проекта в Windows, это Notepad. Также можно использовать для этой цели FlashDevelop, в нем тоже очень удобно работать (выберите File->New->XML-Document). Вообще, сгодится все что может сохранять простые текстовые файлы, но убедитесь, что вы не используйте текстовый редактор, который добавляет какие-либо символы специального форматирования в файл при его сохранении (например, WordPad добавляет символы форматирования, при сохранении в rtf-файлы).
Итак, откройте выбранный вами текстовый редактор и создайте новый файл.
Cамым верхним тегом в проекте Ogmo Editor должен быть тег project. Поэтому мы начнем с него:
<project> </project>
Дальше, первое что мы сделаем, это укажем имя проекта. Делать это не обязательно, но полезно если вы храните много различных проектов. Чтобы указать имя, мы просто добавим тег name в проект и напишем выбранное нами имя внутрь него.
<project> <name>Example Project</name> </project>
Это начало вашего первого проекта! Теперь давайте сохраним его. Проекты Ogmo Editor должны иметь расширение .oep иначе редактор не сможет их увидеть. Это также позволит открывать их быстро (.oep файлы ассоциированы с Ogmo Editor). Так что не сохраняйте ваш проект с расширением txt или xml-файла. Выберите «Save As» и сохраните файл как «project.oep».
Если вы попытаетесь открыть проект прямо сейчас, редактор не сможет его открыть. Но Ogmo Editor скажет вам почему(в данном случае, проект не имеет тега settings).
3. Создаем основу уровня
Ладно, теперь мы собираемся создать уровень для игры. Это будет очень простой уровень, мы будем использовать простейшие возможности Ogmo Editor’a в этой части, пока без добавления объектов и тайловых карт. Ну а начнем мы с создания сетки уровня.
Во-первых, мы должны указать несколько обязательных параметров, чтобы Ogmo Editor знал как настроить себя для нас. Нам не обойтись без тега settings в нашем проекте.
<project> <name>Example Project</name> <settings> </settings> </project>
Тег settings включает в себя все основные параметры проекта, например, размер уровня, цвет фона и т.д. Многие параметры необязательны и ваш проект будет вполне рабочим, даже если вы не определите их (они будут установлены в значения по умолчанию), но из обязательных параметров мы должны указать размер уровня. Мы делаем это с помощью двух тегов: defaultWidth и defaultHeight.
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> </settings> </project>
Теперь Ogmo Editor знает, какой размер уровня мы будем использовать в своем проекте. Мы установили жесткий размер уровня, который нельзя изменить из окна редактора. Если же вы хотите изменять размер уровня «на лету», в редакторе, вы можете использовать теги minWidth, minHeight, maxWidth и maxHeight. Этими тегами мы указываем макс/мин значения размера уровня, и потом мы можем менять размер уровня исходя из диапазона этих значений прямо в окне редактора. Но здесь нам это не нужно (если хотите попробуйте сами). Затем мы должны определить слои. Все слои проекта, как не сложно догадаться нужно определять внутри тега layers.
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> </settings> <layers> </layers> </project>
Ogmo Editor имеет три типа слоев: слой tiles, слой objects и слой grid. Сначала мы познакомимся с слоем grid (сетка), потому что он самый простой.
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> </settings> <layers> <grid /> </layers> </project>
Тег grid должен содержать несколько обязательных атрибутов. Вообще каждый слой должен иметь атрибуты имени и размера сетки. Имя будет однозначно идентифицировать каждый слой, это также означает, что вам не разрешается создавать два слоя с одинаковыми именами. Давайте назовем нашу сетку именем «floors». Сетка определяет характеристики блоков из которых строится уровень. Атрибут gridSize определяет размер одного блока. Потом вы поймете весь смысл этого атрибута – сейчас просто установите ему значение «16″. Обратите внимание, что все атрибуты должны быть заключены в двойные кавычки («»).
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> </settings> <layers> <grid name="floors" gridSize="16"/> </layers> </project>
Ладно, теперь настало время, чтобы загрузить наш проект в редактор! Как я писал ранее, .oep файлы ассоциированы с Ogmo Editor, так что вы можете просто дважды щелкнуть по файлу проекта. Кроме этого, вы можете открыть Ogmo Editor и выбрать «Open a Project», и затем выбрать ваш файл проекта. Если файл не открывается, Ogmo Editor подскажет вам, в чем причина, если это возможно. Однако иногда, Ogmo Editor не будет выводить точное описание причины из-за чего произошла ошибка, только давая вам сообщение об ошибке и ее код (ex: «Ошибка #1090″). Если ошибка является неоднозначной, как эта, то это может означать, что есть синтаксические ошибки в XML-файле, или ваш текстовый редактор добавил в файл специальные символы форматирования, что и вызывает ошибки у XML парсера.
4. Слой сетки
Когда вы откроете проект, будет создан новый уровень. Из-за того что у нас пока есть только один слой – сетка, мы можем сделать не так много из того, что требуется чтобы создать полноценный уровень. То, что вы сейчас можете сделать, это кликнуть на сцене, чтобы «раскрасить» блоки, или щелкнуть правой кнопкой мыши, чтобы «стереть» их. Удерживайте клавишу CTRL и щелкните на области которую хотите залить. Сделайте то же самое, но с правой кнопкой мыши, чтобы стереть закрашенную область. Вы также можете нажать CTRL+Z, чтобы отменить последнее ваше действие, а затем CTRL+Y, чтобы повторить его. Пока не так интересно, но даже сейчас вы могли бы сконструировать простые уровни для платформера или уровень для игры с видом сверху. Давайте «раскрасим» некоторые блоки, а затем сохраним уровень, чтобы посмотреть, как он был сохранен.
Сохраните файл (с расширением .oel) и откройте его в текстовом редакторе. Теперь мы посмотрим на то, как Ogmo Editor форматирует уровни, которые вы сохраняете, в частности, как он сохранил слой-сетку нашего уровня. Вот как это примерно будет выглядеть:
<level> <width>640</width> <height>480</height> <floors>0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000001111111111111000000000000000000000 0000001111111111111000000000000000000000 0000001111111111111000000000000000000000 0000001111111111111000000000000000000000 0000001111111111111000000011111111000000 0000001111111111111000000011111111000000 0000001111111111111000000011111111000000 0000001111111111111000000011111111000000 0000001111111111111000000011111111000000 0000001111111111111000000011111111000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000</floors> </level>
Редактор всегда сначала записывает тег level. Затем он экспортирует ширину и высоту уровня, далее следуют все созданные вами слои (из которых в настоящее время мы имеем только один). Как вы можете видеть, Ogmo Editor экспортировал сетку в тег floors, потому что мы назвали нашу сетку именем «floors».
Ogmo Editor записывает «1″ для окрашенного блока и «0″ для пустого. Есть несколько способов, которыми мы можем изменить форматирование уровня. Например, сейчас Ogmo Editor в качестве разделителя каждой строки уровня использует символ новой строки. Если мы определим свой символ в атрибуте newLine, то теперь разделителем строк будет этот символ. Давайте посмотрим, как изменится форматирование уровня если мы добавим атрибут newLine=»-».
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> </settings> <layers> <grid name="floors" gridSize="16" newLine="-"/> </layers> </project>
После того как вы добавите этот атрибут в проект, сохраните его, и повторно загрузите в редактор (закройте и откройте его снова). В текущем уровне, «покрасьте» несколько прямоугольных областей, а затем сохраните уровень. Открыв его в текстовом редакторе, вы увидите, что теперь все описание слоя находится на одной линии, и строки разделены символом «-». Замечу, что вы не сможете загрузить прошлый уровень после изменения атрибута newLine – Ogmo Editor будет ожидать символ «-», чтобы отметить разрывы между строками.
Другой полезный прием изменения экспорта слоя-сетки в уровень, заключается в использовании атрибута exportAsObjects. Этот необязательный атрибут по умолчанию имеет значение false, но если задано значение true, то Ogmo Editor делит всю сцену на прямоугольные области и выводит в файл их характеристики. Давайте попробуем добавить в наш проект атрибут exportAsObjects=»true».
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> </settings> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> </layers> </project>
Загрузите проект еще раз и сохраните уровень с несколькими «раскрашенными» прямоугольными областями. Теперь давайте посмотрим как будет выглядеть сохраненный уровень с атрибутом exportAsObjects=»true»:
<level> <width>640</width> <height>480</height> <floors> <rect x="96" y="80" w="208" h="160"/> <rect x="416" y="144" w="128" h="96"/> </floors> </level>
Всего стало гораздо меньше! Заметьте как редактор сгруппировал «раскрашенные» блоки в прямоугольники и экспортировал их позиции и размеры. Этот прием отлично работает с уровнями схожими с этим, но если уровень имеет много отдельных блоков лучше использовать вариант по умолчанию. Какой режим использовать зависит от того, какой больше всего подходит для вашего уровня!
Я не продемонстрировал что делают остальные атрибуты тегов. Но все атрибуты будут представлены в виде таблиц с их подробным описанием.
<grid> attribute type description default Рекомендуемые: name string имя слоя gridSize integer размер одного блока сетки Форматирование: newLine string Указывает последний символ строки \n exportAsObjects boolean Если true блоки будут сгруппированы и выведены как прямоугольники, при false как строки Косметические: drawGridSize integer Размер ячейки (только визуальное изменение) gridSize gridColor color32 цвет сетки (только визуальное изменение) #33FFFFFF color color32 цвет блоков (только визуальное изменение) #FF000000
5. Слой тайловых карт
Прежде чем мы приступим к работе с тайловыми картами, стоит поговорить об организации нашего проекта. Теперь мы будем добавлять некоторые графические ресурсы в свой проект, поэтому лучше всего поместить ваш файл проекта, в ту директорию где находится исходный код вашей игры. Как делаю я. Я создаю папку с именем assets в каталоге моей игры, в которой будет храниться весь контент игры. Затем я создаю папку assets/gfx для всей графики игры (возможно cтоит рассортировать и графику по папкам, допустим создать папки для тайловых карт, графики врагов, игрока, и т.д.) и папку assets/levels для всех моих уровней. Я положил свой проект Ogmo в папку assets/levels. Теперь я могу быстро открыть уровень, чтобы изменить его, сначала дважды нажав на файл project.oep, а затем дважды щелкнув на файле level.oel. Для выполнения этого урока, создайте папку с именем «example «. Внутри нее, создайте папки «gfx» и «levels». Положите ваш файл проекта в папку «levels «.
Ogmo Editor загружает изображения в проект на стадии загрузки, поэтому вы просто указываете пути к нужным изображениям в файле проекта, и редактор будет загружать их заново каждый раз, когда вы откроете проект. Это означает, что вы можете редактировать вашу графику находящуюся в папке assets/gfx, чтобы изменить внешний вид вашей игры, и в следующий раз, когда вы загрузите этот проект в Ogmo Editor она будут меняться. Все пути к изображениям в вашем файле проекта указываются относительно местоположения файла проекта (что облегчает перенос проекта с одного компьютера на другой).
Итак как мы будем указывать путь к изображениям. Все наши пути будут начинаться с «../gfx/», за которым следует имя файла изображения которое мы загружаем. Но мы можем автоматизировать этот процесс. Вернемся к тегу settings, и добавим тег workingDirectory.
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <workingDirectory>../gfx</workingDirectory> </settings> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> </layers> </project>
Тег workingDirectory облегчает нам работу с путями, с ним у нас ко всем указываемым нами путям изображений будет подставляться этот путь. Также нам это дает еще один дополнительный бонус – если позже мы переименуем или переместим папку «gfx», мы должны будем изменить только тег workingDirectory, чтобы наш проект снова работал, а не править каждый путь в проекте.
Ладно, с этим разобрались. Давайте начнем работать с слоем tiles. До добавления слоя tiles, мы должны определить наборы тайлов с которыми будем работать. Для этого мы должны определить по крайней мере один тег tileset. Давайте добавим пару тегов tileset в наш проект. Как и следовало ожидать, все наши теги tileset будут находится в теге tilesets проекта.
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <workingDirectory>../gfx</workingDirectory> </settings> <tilesets> <tileset /> <tileset /> </tilesets> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> </layers> </project>
Тег tileset должен иметь несколько обязательных атрибутов: name, tileWidth, tileHeight и image. Атрибут name идентифицирует каждый набор тайлов, нельзя указывать двум наборам тайлов одно имя. Атрибуты tileWidth и tileHeight определяют размеры одного тайла в наборе тайлов. Атрибут image – это путь к изображению с тайлами. Ниже два примера наборов тайлов.
![]()
![]()
Сохраните ваши изображения в папку gfx, у меня это tiles_bricks.png и tiles_grass.png соответственно. Теперь давайте добавим наши наборы тайлов в проект.
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <workingDirectory>../gfx</workingDirectory> </settings> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16"/> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16"/> </tilesets> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> </layers> </project>
Теперь у нас есть некоторые наборы тайлов, но они нигде не используются! Давайте добавим слой tiles. Тег tiles имеет те же обязательные атрибуты, как и тег grid: name и gridSize. Добавим их: name=»tilesAbove» и gridSize=»16″.
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <workingDirectory>../gfx</workingDirectory> </settings> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16"/> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16"/> </tilesets> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> <tiles name="tilesAbove" gridSize="16" /> </layers> </project>
Также имейте в виду, что порядок расположения слоев тайлов, вы определяете сами. В приведенном выше примере, слой «tilesAbove» будет выше слоя «floors». Если вы измените порядок их следования, то их иерархия в редакторе также будут изменена. Теперь давайте откроем проект в редакторе и научимся работать с тайловыми картами!
Теперь, когда у нас более чем один слой, все слои будут находится в окне «Layers» в левом верхнем углу. Вы можете переместить его, щелкнув по его заголовку и перетащив, туда куда вам нравится. Нажмите кнопки внутри него, чтобы выбрать текущий слой для редактирования (также можно использовать цифровые клавиши как горячие клавиши для переключения слоев, 1 – верхний слой, 2-второй и так далее). Выберите слой «tilesAbove». Обратите внимание, что вы все еще можете видеть слои с тайлами которые ниже и выше выбранного слоя, но вы не можете изменить их, пока не переключитесь на них.
Мы определяем что находимся на слое с наборами тайлов по появлению рядом 2 окон, окна «Palette» и окна «Tilesets». Щелкните где-нибудь на изображении набора тайлов внутри окна «Palette», чтобы выбрать один тайл. Щелкните где-нибудь на сцене чтобы добавить к ней этот тайл. Щелкните правой кнопкой мыши, чтобы удалить тайл под курсором мыши. Нажмите клавишу CTRL + левую кнопку мыши и переместите мышь, чтобы заполнить прямоугольник мозаикой тайлов, или нажмите CTRL+правая кнопка мыши, чтобы удалить прямоугольник с тайлами. Чтобы ускорить процесс, вы также можете использовать клавиши со стрелками или W/A/S/D клавиши для выбора тайла в окне «Palette». Вы также можете отменить и повторить свои последние действия точно так же, как с сеткой.
После добавления нескольких тайлов кирпичей, попробуйте выбрать другой набор тайлов, нажав в окне «Tilesets» на набор тайлов с именем «grass». Создайте какой-нибудь набросок уровня и сохраните его. Теперь откройте ваш уровень в текстовом редакторе. Он должен выглядеть примерно так:
<level> <width>640</width> <height>480</height> <floors> <rect x="160" y="176" w="80" h="48"/> <rect x="416" y="192" w="64" h="48"/> </floors> <tilesAbove set="bricks"> <tile tx="0" ty="0" x="416" y="192"/> <tile tx="16" ty="0" x="432" y="192"/> <tile tx="16" ty="0" x="448" y="192"/> <tile tx="16" ty="16" x="432" y="208"/> <tile tx="16" ty="16" x="448" y="208"/> <tile tx="0" ty="16" x="416" y="208"/> <tile tx="0" ty="32" x="416" y="224"/> <tile tx="16" ty="32" x="432" y="224"/> <tile tx="16" ty="32" x="448" y="224"/> <tile tx="32" ty="32" x="464" y="224"/> <tile tx="32" ty="16" x="464" y="208"/> <tile tx="32" ty="0" x="464" y="192"/> </tilesAbove> </level>
Тег tilesAbove имеет атрибут, показывающий, какой набор тайлов он использует. Также как мы видим, Ogmo Editor экспортирует каждый тайл в тег tile. Значения tx и ty означают расположение тайла от верхнего левого угла в наборе тайлов. Атрибуты x и y указывают позиции тайла на уровне. Как и у слоя grid, можно изменить форматирование этого слоя. Ниже я добавил атрибут exportTileSize к слою «tilesAbove» в проект, и затем я покажу вам, как изменится форматирование слоя в уровне.
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <workingDirectory>../gfx</workingDirectory> </settings> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16"/> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16"/> </tilesets> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> <tiles name="tilesAbove" gridSize="16" exportTileSize="true"/> </layers> </project>
<level> <width>640</width> <height>480</height> <floors> <rect x="160" y="176" w="80" h="48"/> <rect x="416" y="192" w="64" h="48"/> </floors> <tilesAbove set="bricks" tileWidth="16" tileHeight="16"> <tile tx="0" ty="0" x="416" y="192"/> <tile tx="16" ty="0" x="432" y="192"/> <tile tx="16" ty="0" x="448" y="192"/> <tile tx="16" ty="16" x="432" y="208"/> <tile tx="16" ty="16" x="448" y="208"/> <tile tx="0" ty="16" x="416" y="208"/> <tile tx="0" ty="32" x="416" y="224"/> <tile tx="16" ty="32" x="432" y="224"/> <tile tx="16" ty="32" x="448" y="224"/> <tile tx="32" ty="32" x="464" y="224"/> <tile tx="32" ty="16" x="464" y="208"/> <tile tx="32" ty="0" x="464" y="192"/> </tilesAbove> </level>
Единственное изменение заключается в том, что теперь наш слой имеет атрибуты tileWidth и tileHeight, характеризующие размер тайла из набора тайлов которые он использует. Также мы можем добавить атрибут exportTileIDs в тег tiles и установить его в true. Тогда тайлу будет присваиваться порядковый номер в наборе тайлов («id») вместо «tx» и «ty». Где «tx» и «ty» -это координаты тайла от верхнего левого угла набора тайлов, а «id» определяет тайл по его номеру в наборе тайлов. Например, верхний левый угол – это тайл номер 0, рядом справа 1, и так далее. Если в нашем наборе тайлов 4 тайла, то последний тайл во втором ряду будет за номером 4.
Есть еше одна важная особенность использования слоев с тайлами: это атрибут multipleTilesets. Если мы пишем multipleTilesets=»true» для слоя с тайлами, вы сможете добавить тайлы для этого слоя из нескольких наборов тайлов сразу. Однако, вы теряете возможность быстрой замены тайлов, и при экспорте тег set будет писаться с каждым тайлом, а не один раз для слоя. Я оставляю выбор за вами использовать или нет этот атрибут.
<tiles> attribute type description default Рекомендуемые: name string имя слоя gridSize integer размер одного блока сетки Режимы Редактирования: multipleTilesets boolean Может ли один слой использовать несколько false наборов тайлов сразу Форматирование: exportTileSize boolean Экспортировать ли ширину и высоту тайлов в слой false exportTileIDs boolean Если true каждому тайлу будет присвоен false id(порядковый номер),при false координаты в наборе тайлов Косметические: drawGridSize integer Размер ячейки (только визуальное изменение) gridSize gridColor color32 цвет сетки (только визуальное изменение) #33FFFFFF
<tileset> attribute type description default Рекомендуемые: name string имя слоя image string путь к изображению с тайлами tileWidth integer ширина одного тайла tileHeight integer высота одного тайла Косметические: paletteScale number коэффициент масштабирования 1.0
6. Слой объектов
Теперь пришло время добавить слой с объектами. Слои с объектами позволяют добавлять на сцену экземпляры объектов. Экземпляры объектов могут быть перемещены, изменены или удалены. Вы можете установить ограничение на количество объектов одного типа, которые могут быть на сцене (например: вы можете захотеть чтобы только один игрок мог быть создан на сцене).
Объекты могут иметь «значения». Значения по существу – это обычные переменные. Вы определяете значения и их типы, и потом вы можете установить разные значения для каждого экземпляра объекта. Например объект-сокровищница может иметь integer значение «монеты», и определять сколько монет находятся внутри него.
Объекты могут также иметь «узлы». Узлы – это прием планирования движения объектов. Например, вы можете использовать их, чтобы отметить пути по которым будет путешествовать движущаяся платформа. Редактор наглядно покажет, как объект будет выглядеть на каждом узле, так что вы сможете видеть, как движение платформы согласуется с остальным объектами на уровне.
Этот урок не рассказывает о работе с значениями и узлами. Те кому это интересно, изучите следующий урок. Сейчас я просто хочу, чтобы вы научились создавать, перемещать, удалять и изменять размеры объектов. Итак, во-первых, нам нужны некоторые изображения для наших объектов. Вот изображения, которые буду использовать я. Можете скачать их и сохранить в вашей папке gfx как «ogmo.png» и «spikes.png» соответственно.
![]()
![]()
Давайте начнем с объекта Ogmo. Мы хотим, чтобы он назывался «ogmo», чтобы был размером 16×16, и мы хотим, чтобы каждый уровень, имел максимум один его экземпляр. Вот как мы все это напишем:
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <workingDirectory>../gfx</workingDirectory> </settings> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16"/> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16"/> </tilesets> <objects> <object name="ogmo" image="ogmo.png" width="16" height="16" limit="1"/> </objects> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> <tiles name="tilesAbove" gridSize="16" exportTileSize="true"/> </layers> </project>
Обратите внимание, что мы используем изображение объекта без каких-либо манипуляций с его размерами, мы все оставляем пока по умолчанию. Вы можете изменить ограничение на количество объектов, изменив атрибут limit. Теперь нам нужно добавить слой objects в проект. Мы хотим, чтобы этот слой, был выше слоя «floors», но ниже слоя «tilesAbove», поэтому мы добавим новый тег objects между двумя другими тегами, например, так:
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <workingDirectory>../gfx</workingDirectory> </settings> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16"/> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16"/> </tilesets> <objects> <object name="ogmo" image="ogmo.png" width="16" height="16" limit="1"/> </objects> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> <objects name="actors" gridSize="16"/> <tiles name="tilesAbove" gridSize="16" exportTileSize="true"/> </layers> </project>
Давайте загрузим проект в редактор. Теперь в окне «Layers» должен появиться новый слой «actors». Переключитесь на этот слой. У вас рядом должно появиться окно «Objects». Нажмите на объект, чтобы увидеть его имя. Выберите инструмент «Create» (самый первый) и щелкните где-нибудь на сцене, чтобы добавить объект Ogmo. Обратите внимание, что если вы захотите создать второй экземпляр объекта Ogmo, первый исчезнет, потому что у нас стоит ограничение 1 для количества объектов Ogmo. Также обратите внимание, что если вы щелкните на сцене, чтобы создать объект Ogmo, и при этом будете держать кнопку мыши, вы автоматически переключитесь на инструмент «Select», и сможете двигать объект Ogmo по сцене, пока не отпустите кнопку мыши (и тогда опять будет выбран инструмент «Create» ).
Также вы можете выбрать инструмент «Select» (второй слева), щелкнуть по объекту и двигать его. Вы можете отменить выбор Ogmo, нажав на пустом месте сцены. Когда Ogmo выбран, вы можете нажимать клавиши со стрелками, чтобы двигать его или нажать клавишу DELETE, чтобы удалить его. Вы также можете удалить объект, щелкнув правой кнопкой мыши по нему (это также работает при использовании инструмента «Create»).
Теперь давайте научимся изменять размеры объекта. Мы добавим шипы, и сделаем так, чтобы они имели изменяемый размер по оси x, но не по оси y. Для этого мы растянем их по оси x.
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <workingDirectory>../gfx</workingDirectory> </settings> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16"/> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16"/> </tilesets> <objects> <object name="ogmo" image="ogmo.png" width="16" height="16" limit="1"/> <object name="spikes" image="spikes.png" width="16" height="16" resizableX="true"/> </objects> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> <objects name="actors" gridSize="16"/> <tiles name="tilesAbove" gridSize="16" exportTileSize="true"/> </layers> </project>
Наш объект spikes вначале будет иметь размер 16×16, но мы сможем растягивать его по оси x. Загрузите проект, и давайте посмотрим на это в действии. Создайте объект «spikes» на уровне. Теперь переключитесь на инструмент «Resize» (третий слева). Есть несколько способов, для изменения размера объекта, самый простой: просто щелкните на объекте, используя инструмент «Resize», и переместите мышь вправо, чтобы сделать объект больше, влево, чтобы сделать его меньше. Первое, что вы заметите, это что наш объект spikes принимает очень уродливые виды. Чтобы исправить это, мы будем использовать атрибут tile тега object .
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <workingDirectory>../gfx</workingDirectory> </settings> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16"/> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16"/> </tilesets> <objects> <object name="ogmo" image="ogmo.png" width="16" height="16" limit="1"/> <object name="spikes" image="spikes.png" width="16" height="16" resizableX="true" tile="true"/> </objects> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> <objects name="actors" gridSize="16"/> <tiles name="tilesAbove" gridSize="16" exportTileSize="true"/> </layers> </project>
Теперь загрузите проект и попробуйте изменить размеры объекта spikes снова, результат должен быть намного лучше. Атрибут tile не влияет на экспорт уровня из редактора, это всего лишь косметические изменения, чтобы сделать редактирование объектов немного легче. Есть также атрибуты объекта imageWidth и imageHeight, для указания какую область изображения использовать (по умолчанию используется все изображение). Ну и атрибуты imageOffsetX и imageOffsetY, для указания смещения области изображения определяемой атрибутами imageWidth и imageHeight, по осям x и y.
Теперь, давайте предположим, что наш проект имеет очень много объектов. Так много, что мы теряемся в них при поиске их в окне «Objects». Мы можем рассортировать объекты по папкам, чтобы облегчить их поиск в дальнейшем. Мы можем создать столько папок, сколько захотим, и мы даже можем создавать папки внутри папок (и папки внутри папки внутри папки и т.д.). Давайте создадим одну папку.
<project> <name>Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <workingDirectory>../gfx</workingDirectory> </settings> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16"/> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16"/> </tilesets> <objects> <object name="ogmo" image="ogmo.png" width="16" height="16" limit="1"/> <folder name="dangers"> <object name="spikes" image="spikes.png" width="16" height="16" resizableX="true" tile="true"/> </folder> </objects> <layers> <grid name="floors" gridSize="16" exportAsObjects="true"/> <objects name="actors" gridSize="16"/> <tiles name="tilesAbove" gridSize="16" exportTileSize="true"/> </layers> </project>
Если вы загрузите проект и откроете папку в окне «Objects», вы увидите что объект spikes находится в ней.
Чтобы завершить раздел, посвященный слоям objects я перечислю некоторые полезные горячие клавиши. Q, W, E, R – горячие клавиши для четырех инструментов, в порядке слева направо. Выбрав инструмент «Select», вы можете обвести рамкой сразу несколько объектов для выбора. Удерживайте клавишу CTRL и щелкните на объекте, чтобы выбрать его в дополнение к другим выбранным в настоящее время объектам. Удерживайте клавишу CTRL и нажимайте клавиши со стрелками, чтобы изменить размер всех выбранных объектов, которые могут изменяться. При перемещении объекта инструментом «Select», нажимайте клавишу CTRL для быстрого переключения на инструмент «Resize» и обратно.
<objects> attribute type description default Рекомендуемые: name string имя слоя gridSize integer размер одного блока сетки Косметические: drawGridSize integer Размер ячейки (только визуальное изменение) gridSize gridColor color32 цвет сетки (только визуальное изменение) #33FFFFFF
<object> attribute type description default Рекомендуемые: name string имя слоя width integer ширина объекта в пикселях height integer высота объекта в пикселях image string путь к изображению объекта Настройки изображения: originX integer Координата x от левого угла изображения 0 объекта от которой считается размер originY integer Координата y от левого угла изображения 0 объекта от которой считается размер resizableX boolean Позволяет масштабировать объект по оси x false resizableY boolean Позволяет масштабировать объект по оси y false Косметические: imageWidth integer ширина картинки для объекта width imageHeight integer высота картинки для объекта height imageOffsetX integer смещение картинки по оси x для объекта 0 imageOffsetY integer смещение картинки по оси y для объекта 0 tile boolean Если true картинка будет повторяться для заполнения false всей области объекта, при false растягиваться
7. Заключение
Этот основной урок я надеюсь научил вас, как настроить и использовать все возможности слоев, доступных в Ogmo Editor. Дальнейшие уроки будут рассказывать про расширенные функции, такие, как использование значений объектов и создание узлов. Удачного игростроя!
Исходник к уроку: getting_started.zip
Содержание:
1. Что такое «значение»?
2. Значения уровней
3. Значения объекта
4. Как записываются значения при экспорте уровня
1. Что такое «значение»?
В Ogmo Editor, «значение» – это как переменная в программировании. Если класс в объектно-ориентированном языке содержит переменную «x», то каждый экземпляр этого класса может иметь разное значение переменной x.
Аналогично, объекты в Ogmo Editor могут иметь значения. Например, объект-сокровищница может иметь значение «монеты», которое содержит целое число от 0 до 20. Затем для каждого экземпляра объекта-сокровищницы, вы можете определить разное целое число от 0 до 20, определяющее количество монет внутри сокровищницы. Когда вы сохраните уровень, каждому объекту-сокровищнице будет добавлен тег с указанным количеством монет.
Кроме этого, сами уровни могут иметь значения. Уровень может иметь значение «название», которое представляет собой имя уровня. Или, возможно, уровень имеет значение «трудность» – целое число представляющее уровень трудности прохождения текущего уровня.
2. Значения уровней
Давайте начнем с открытия в Ogmo Editor’e примера проекта. Пример проекта копируется на жесткий диск, когда вы устанавливаете редактор, в его папку. В Windows по умолчанию это «Program Files/OgmoEditor». Откройте файл «exampleProject.oep» в редакторе.
Щелкните по заголовку окна «Level Settings» и перетащите его вверх. Внутри него вы увидите, что вы можете изменить ширину и высоту уровня, а также имя уровня. Это значение уровня определено в файле проекта. Давайте откроем проект в текстовом редакторе и посмотрим, как это делается.
<project> <name>Ogmo Editor Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <minWidth>320</minWidth> <minHeight>240</minHeight> <maxWidth>960</maxWidth> <maxHeight>720</maxHeight> <workingDirectory>gfx</workingDirectory> </settings> <values> <string name="title" default="new level" maxChars="12" /> </values> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16" /> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16" /> </tilesets> <objects> <object name="ogmo" image="ogmo.png" width="16" height="16" limit="1"/> <object name="chest" image="chest.png" width="16" height="16"> <values> <integer name="coins" min="0" max="20" default="2" /> </values> </object> <object name="moving_platform" image="moving_platform.png" width="16" height="16" resizableX="true" resizableY="true" tile="true"> <values> <number name="speed" min="0.1" max="5" default="1" /> </values> <nodes drawObject="true" limit="1"/> </object> <folder name="dangers" image="spikes_ground.png"> <object name="spikes_ground" image="spikes_ground.png" tile="true" width="16" height="16" resizableX="true" /> <object name="spikes_ceiling" image="spikes_ceiling.png" tile="true" width="16" height="16" resizableX="true" /> <object name="spikes_left" image="spikes_left.png" tile="true" width="16" height="16" resizableY="true" /> <object name="spikes_right" image="spikes_right.png" tile="true" width="16" height="16" resizableY="true" /> </folder> </objects> <layers> <tiles name="tiles_bg" gridSize="16" drawGridSize="64" exportTileIDs="true"/> <grid name="floors" gridSize="16" exportAsObjects="true" /> <objects name="objects" gridSize="16" drawGridSize="32" /> <tiles name="tiles_floors" gridSize="16" drawGridSize="64" exportTileIDs="true"/> </layers> </project>
В теге project мы просто написали тег values, который содержит все наши значения. Сейчас там как раз есть одно значение типа string. Это строка с значением по умолчанию «new level», и там же определен атрибут maxChars (максимальная длина строки), с значением 12.
Теперь давайте попробуем добавить значение типа integer.
<values> <string name="title" default="new level" maxChars="12" /> <integer name="difficulty" default="1" min="1" max="5" /> </values>
Теперь к нашему уровню добавится значение «трудность». Это целое число, с значением по умолчанию 1. Диапазон возможных значений будет от 1 до 5. Откройте проект и вы увидите только что созданное новое значение! Стоит отметить, что значение типа integer может быть отрицательным, если вы установите атрибут min отрицательным числом. Кроме того, атрибуты min и max являются необязательными, если они не указаны, значение не будет иметь мин/макс порога.
Теперь давайте допустим, что в нашей игре, мы хотим, чтобы каждый уровень, начинался с показа сообщения с некоторым текстом, может быть, отрывком сюжета или обучающим текстом. Мы хотим, также иметь возможность редактировать этот текст в редакторе, но он будет намного больше, чем одна строка. Для этого мы можем использовать значение типа text. text значение ведет себя точно так же, как string значение, за исключением того, что поле для ввода текста для него в редакторе будет побольше. Добавим одно значение типа text, и затем загрузим проект в редактор и посмотрим, как это все работает.
<values> <string name="title" default="new level" maxChars="12" /> <integer name="difficulty" default="1" min="1" max="5" /> <text name="message" default="Hello world!" maxChars="120" /> </values>
Вы увидите, что поле ввода для text значения намного больше, чем у string значения. Есть еще два типа значений. boolean значения могут быть либо true, либо false, и появляются в виде флажков в редакторе. number значения ведут себя точно так же, как integer значения, за исключением того, что они позволяют использовать числа с плавающей точкой (например: «3.6″, «-2.4″). Вот некоторые примеры того, как определять эти значения:
<values> <string name="title" default="new level" maxChars="12" /> <integer name="difficulty" default="1" min="1" max="5" /> <text name="message" default="Hello world!" maxChars="120" /> <boolean name="lights" default="true" /> <number name="gravity" default="1.8" min="-1.2" max="5.2" /> </values>
3. Значения объекта
Теперь, когда мы знаем все типы значений, а также как добавлять их в проект, мы можем попробовать добавить их к объектам! Посмотрите файл проекта снова, но на этот раз обратите внимание на тег objects проекта.
<project> <name>Ogmo Editor Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <minWidth>320</minWidth> <minHeight>240</minHeight> <maxWidth>960</maxWidth> <maxHeight>720</maxHeight> <workingDirectory>gfx</workingDirectory> </settings> <values> <string name="title" default="new level" maxChars="12" /> <integer name="difficulty" default="1" min="1" max="5" /> <text name="message" default="Hello world!" maxChars="120" /> <boolean name="lights" default="true" /> <number name="gravity" default="1.8" min="-1.2" max="5.2" /> </values> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16" /> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16" /> </tilesets> <objects> <object name="ogmo" image="ogmo.png" width="16" height="16" limit="1"/> <object name="chest" image="chest.png" width="16" height="16"> <values> <integer name="coins" min="0" max="20" default="2" /> </values> </object> <object name="moving_platform" image="moving_platform.png" width="16" height="16" resizableX="true" resizableY="true" tile="true"> <values> <number name="speed" min="0.1" max="5" default="1" /> </values> <nodes drawObject="true" limit="1"/> </object> <folder name="dangers" image="spikes_ground.png"> <object name="spikes_ground" image="spikes_ground.png" tile="true" width="16" height="16" resizableX="true" /> <object name="spikes_ceiling" image="spikes_ceiling.png" tile="true" width="16" height="16" resizableX="true" /> <object name="spikes_left" image="spikes_left.png" tile="true" width="16" height="16" resizableY="true" /> <object name="spikes_right" image="spikes_right.png" tile="true" width="16" height="16" resizableY="true" /> </folder> </objects> <layers> <tiles name="tiles_bg" gridSize="16" drawGridSize="64" exportTileIDs="true"/> <grid name="floors" gridSize="16" exportAsObjects="true" /> <objects name="objects" gridSize="16" drawGridSize="32" /> <tiles name="tiles_floors" gridSize="16" drawGridSize="64" exportTileIDs="true"/> </layers> </project>
Это наши объекты-сундуки, каждый из которых может хранить любое количество монет от 0 до 20. Обратите внимание, что тег values находится внутри тега object.
Откройте проект в редакторе, и выберите слой «objects». Выберите объект «chest » (второй слева) и создайте пару штук на сцене. Теперь переключитесь на инструмент «Select» и выберите один из только что созданных объектов.
В окне «Selection» вы можете видеть, что мы можем редактировать значение «coins» для текущего объекта-сундука. Мы можем подбирать нужные значения для каждого экземпляра объекта «chest» индивидуально.
Объекты могут иметь любое количество значений, и они могут быть любыми из тех типов, описанных в предыдущей части.
4. Как записываются значения при экспорте уровня
Значения выводятся в виде атрибутов тегов. Так значения уровня, будут атрибутами тега level. Значения объекта, будут атрибутами тега object. Ниже приведен пример простого уровня с значениями.
<level title="The Best Level"> <width>640</width> <height>480</height> <floors> <rect x="176" y="160" w="128" h="96"/> <rect x="448" y="224" w="80" h="64"/> </floors> <objects> <ogmo x="192" y="144"/> <chest x="256" y="144" coins="1"/> <chest x="480" y="208" coins="7"/> </objects> </level>
Содержание:
1. Что такое «узлы»?
2. Основы использования узлов
3. Настройки узлов
4. Как записываются узлы при экспорте уровня
1. Что такое «узлы»?
Допустим, мы делаем уровень с большим количеством движущихся платформ. Мы хотим, чтобы эти движущиеся платформы, двигались по определенным путям, но также мы хотим чтобы каждая платформа имела свой собственный уникальный путь. Кроме этого, некоторые из этих путей могут быть очень простыми (из пункта А в пункт Б и обратно), но некоторые могут быть более сложными (от точки A до точки B, C и D, затем обратно, и т.д.). Узлы объектов помогут нам составить визуальный план этих путей платформ прямо в окне редактора. Планирование движения платформ, безусловно, не все для чего можно использовать узлы, но это то, для чего они были созданы в первую очередь.
Узлы из характеристик содержат только свои позиции (x и y), и определяются внутри объекта. Один объект может иметь неограниченное число узлов.
2. Основы использования узлов
Давайте начнем с открытия в Ogmo Editor’e примера проекта. Пример проекта копируется на жесткий диск, когда вы устанавливаете редактор, в его папку. В Windows по умолчанию это «Program files/OgmoEditor». Откройте файл «exampleProject.oep» в редакторе.
Переключитесь на слой «objects» и выберите объект «moving_platform» в окне выбора объектов (это блок золотого цвета, третий объект слева). Создайте одну платформу на уровне. Теперь переключитесь на инструмент «Nodes» (последний инструмент справа, или просто нажмите клавишу R). Платформа которую вы создали должна оставаться выбранной. Если это не так, вернитесь к инструменту «Select» и щелкните по платформе, затем снова выберите инструмент «Nodes».
Теперь мы можем по клику левой кнопки мыши добавлять узлы к этому экземпляру объекта-платформы. Можно щелкнуть правой кнопкой мыши на узле, чтобы удалить его. При использовании инструмента «Nodes», клавиша DELETE удаляет все узлы выбранного объекта. Движущаяся платформа в примере проекта имеет ограничение на создание количества узлов, не более трех узлов – если вы создадите больше, будут удаляться самые старые, чтобы освободить место для новых.
3. Настройки узлов
Давайте откроем файл проекта и посмотрим, как эти узлы там были определены. Открыв его в текстовом редакторе вы должны увидеть…
<project> <name>Ogmo Editor Example Project</name> <settings> <defaultWidth>640</defaultWidth> <defaultHeight>480</defaultHeight> <minWidth>320</minWidth> <minHeight>240</minHeight> <maxWidth>960</maxWidth> <maxHeight>720</maxHeight> <workingDirectory>gfx</workingDirectory> </settings> <values> <string name="title" default="new level" maxChars="12" /> </values> <tilesets> <tileset name="bricks" image="tiles_bricks.png" tileWidth="16" tileHeight="16" /> <tileset name="grass" image="tiles_grass.png" tileWidth="16" tileHeight="16" /> </tilesets> <objects> <object name="ogmo" image="ogmo.png" width="16" height="16" limit="1"/> <object name="chest" image="chest.png" width="16" height="16"> <values> <integer name="coins" min="0" max="20" default="2" /> </values> </object> <object name="moving_platform" image="moving_platform.png" width="16" height="16" resizableX="true" resizableY="true" tile="true"> <values> <number name="speed" min="0.1" max="5" default="1" /> </values> <nodes drawObject="true" limit="1"/> </object> <folder name="dangers" image="spikes_ground.png"> <object name="spikes_ground" image="spikes_ground.png" tile="true" width="16" height="16" resizableX="true" /> <object name="spikes_ceiling" image="spikes_ceiling.png" tile="true" width="16" height="16" resizableX="true" /> <object name="spikes_left" image="spikes_left.png" tile="true" width="16" height="16" resizableY="true" /> <object name="spikes_right" image="spikes_right.png" tile="true" width="16" height="16" resizableY="true" /> </folder> </objects> <layers> <tiles name="tiles_bg" gridSize="16" drawGridSize="64" exportTileIDs="true"/> <grid name="floors" gridSize="16" exportAsObjects="true" /> <objects name="objects" gridSize="16" drawGridSize="32" /> <tiles name="tiles_floors" gridSize="16" drawGridSize="64" exportTileIDs="true"/> </layers> </project>
Вы увидите, что тег nodes находится внутри тега object, его расположение определяет какому объекту будут принадлежать узлы. Вы также можете видеть, что объекты могут содержать одновременно и узлы и значения. Тег nodes фактически не имеет обязательных атрибутов.
Атрибут drawObject устанавливает рисовать ли изображение объекта-родителя на месте узлов или же ограничиться обычными точками. Это полезно для просмотра, как объекты будут выравнены с объектами по соседству, но это также может создать беспорядок, если ваш уровень имеет много объектов. Атрибут limit ограничивает количество узлов, которые может содержать один экземпляр объекта. Также есть атрибут color, который позволяет установить цвет линий и точек узлов (по умолчанию, они все желтого).
И последний атрибут – это атрибут lineMode. Есть четыре варианта, которые ему можно назначить. Перечислю их: None (lineMode=»0″), Path (lineMode=»1″), Circuit (lineMode=»2″) и Fan (lineMode=»3″).
По умолчанию cтоит вариант None (lineMode=»0″), который означает что линии не будут рисоваться между узлами.
В варианте Path (lineMode=»1″), линии будут рисоваться от объекта-родителя к каждому узлу по порядку.
В нашем примере проекта установлен вариант Circuit. В варианте Circuit (lineMode=»2″), линии будут рисоваться от объекта-родителя к каждому узлу по порядку, и также от последнего узла к объекту-родителю.
В варианте Fan (lineMode=»3″), линии будут всегда рисоваться от объекта-родителя к каждому узлу.
4. Как записываются узлы при экспорте уровня
При экспорте уровня в него записываются только x- и y-позиции узлов, и ничего больше. Вот простой уровень созданный из примера проекта с несколькими узлами.
<level title="new level"> <width>640</width> <height>480</height> <objects> <moving_platform x="80" y="96" width="16" height="16" speed="1"> <node x="224" y="64"/> <node x="288" y="240"/> <node x="48" y="272"/> </moving_platform> </objects> </level>
Как вы можете видеть, теги node содержат только свои x и y координаты и определены как дочерние теги в теге объекта для которого были созданы. Стоит отметить, что узлы записываются в порядке от первого созданного к последнему.
Перевод: #redefy
Источник:OgmoEditor.com
No related posts.
4 комментариев(я) к Урок::: Ogmo Editor ::: Визуальный редактор 2D-уровней
Ответить
Свежие комментарии
- Arti к записи AIR. Установка, настройка, компиляция, упаковка.
- ommanipadmehum к записи Дебаггер Monster Debugger 3.02
- #redefy к записи Away3D 4.0 + AS3DMod 0.3 ::: Издеваемся над геометрией
- MMMaXXX к записи Away3D 4.0 + AS3DMod 0.3 ::: Издеваемся над геометрией
- Anry к записи Урок:::Alternativa3D 8 + Bullet Physics :::Chapter 1
Свежие записи
Рубрики
- ActionScript3 (6)
- Adobe Molehill (3)
- AIR (4)
- Alternativa3D 8 (5)
- Away3D 4.0 (10)
- Box2DFlash (6)
- Bullet Physics (3)
- FlashPunk (9)
- Flint (4)
- Starling (1)
- Переводы (1)
Архивы
- Май 2012 (2)
- Апрель 2012 (4)
- Март 2012 (3)
- Февраль 2012 (9)
- Январь 2012 (6)
- Декабрь 2011 (9)
- Ноябрь 2011 (3)
- Октябрь 2011 (13)
- Сентябрь 2011 (3)










Не запускается. Win 7 Ultimate.
Какую версию скачиваете?
2.0 нестабильна…
Качайте 0.918…
пример парсера не будешь писать?
я и сам могу, но интересно)
Пример парсинга OGMO-уровня? Нет, не буду писать.