Level editor

Материал из ElmaClub Wiki
Перейти к: навигация, поиск
Автор статьи:
Agressor
(все статьи автора)

Приступая к описанию редактора уровней к великой ElastoMania, хотелось бы сначала сказать о нем пару лестных слов J. Штука эта - наш едитор, вещь очень простая и примитивная. Причем примитивизм этот наносит ужасный ущерб удобности использования и очень ограничивает наши возможности. Те, кто работал в 3dsMAX или CorelDraw, поймут мои ощущения. У вас нет возможности ни передвигать полигоны, ни копировать что-либо, ни задавать множественные параметры чему-либо, ни делать что-то с группой объектов и т.д. Shareware, что вы хотите. Впрочем, пугаться не стоит. Редактор вполне хорошо выполняет свою функцию - быстро и просто создавать уровни к игре. Вещь абсолютно не глючная, в отличие от всяких MAX'ов и UnrealEd'ов. К тому же, он настолько прост в освоении, что можно буквально за полчаса, методом тыка, освоить его почти полностью, а у кого нет проблем с английским сделает это вообще мгновенно (контекст хелп + Readme (очень рекомендую)).


Содержание

В общем…

Игровой мир ElastoMania состоит из полигонов (многоугольников). Мир этот двухмерный (плоский то бишь…). Двухмерны и полигоны (по определению). Они состоят из ребер. Ребер может быть от 3 до <бесконечности>. Уровень может состоять минимум из одного полигона. По этой причине, когда вы начинаете новый уровень, то сразу видите прямоугольный полигон, при попытке стереть который, игра отвечает категорическим отказом. Объясню почему. Этот полигон очерчивает границу уровня. Тут две основополагающие вещи: все, что внутри полигона - это "воздух"; все, что снаружи - "земля". А так как внутри земли ничего находиться не может, то и уровень не может состоять менее чем из одного полигона. Если создать еще полигон внутри первого, то он будет "землей" и по нему можно будет ездить и влетать в него башкой J. Если сделать полигон рядом - он будет изолированной областью. Если же нарисовать новый полигон вокруг имеющегося, то он (первый) станет "землей"! Главное при увлекательном процессе создания уровня не увлечся настолько, что перепутать где у вас "земля", а где "воздух", вам потом очень обидно будет…


И запомните: полигоны НЕ ДОЛЖНЫ пересекаться друг с другом (папрашу левелмейкеров для 3Д-шутеров не делать большие глаза J), иначе вам не дадут на нем поиграть. Так что не делайте две области, планируя потом соединить их проходом - это невозможно! Они должны быть одним полигоном изначально. Да, можно вставлять вершины в имеющийся полигон, но только в один, а не в два сразу, так что и этот вариант отпадает. Опять-таки иллюстрация ограниченности идитора.


Итак, главное, из чего состоит уровень - это полигоны. Но есть еще две категории объектов, в нем присутствующих. Это игровые объекты и картинки. Первые можно пересчитать по пальцам 4/5 одной руки: старт, выход, яблоко, киллер (надеюсь, вы их видели в игре и объяснять что это такое не нужно). Картинки - это всякие грибочки, деревья, травка и проч. С игроком они никак не взаимодействуют (т.е. угрозы для вашей головы не представляют J) и существуют лишь в декоративных целях.


Ну вот, с общими вопросами кое-как разобрались, теперь можно переходить к тому, через что мы будем это все безобразие осуществлять: к междуроже редактора.


Собственно к…

Итак, черт дернул вас в главном меню игры выбрать самый последний пункт. Что ж, поздравляю, сейчас вы станете Творцом! И чтобы у вас с этим не было проблем, слушайте сюда.


Первое, что вы увидите - это меню выбора карты, которую вы желаете открыть. Я лично желаю вам открыть карту под названием Tutor1 или Tutor2. Там в лаконичной форме нарисовано все, что может присутствовать на уровне.
Tutor1 - все базовые элементы уровня.
Tutor2 - все, связанное с оформлением.
Жмем на стрелки сверху и снизу этого окна (либо клавиши PageUp/PageDown), находим нужное (стрелки вверх/вниз) и левый клик (enter) для открытия. Или жмем на кнопку "NEW" для начала нового. Карты можно открывать только из директории "LEV" в каталоге игры. Сохраняются они туда же.


Отлично! Теперь перед вами собственно рабочий вид редактора. Большую часть экрана занимает рабочая зона - там видно сам уровень. Полоска наверху (туда ваш курсор не пускают) - там находится всякая инфа, в частности имя уровня, написано, изменен он или нет, значение ZOOM'а (масштаб увеличения) и кой-какой контекстный хелп в зависимости от текущего действия. Всю левую часть занимают кнопки, с помощью которых мы и будем все делать. Любая кнопка активируется левым кликом.


Колонка с кнопками разделена на две части. Верхняя - это панель команд. Нижняя - панель инструментов. По-русски: верхняя часть выполняется сразу при нажатии (открыть файл, выйти из редактора...), а нажатие на любую нижнюю активирует инструмент, который нужно потом применить в рабочей зоне (создать яблоко, стереть полигон…). Если у команды есть горячая клавиша (HotKey), то соответствующая буква подчеркнута в названии кнопки.


Короче, поехали сверху вниз.


Панель команд

Exit - выход из редактора в главное меню игры. HotKey - X Если в уровне есть несохраненные изменения, то редактор вас сначала спросит, действительно ли вы хотите выйти, не сохранив их: YES/NO.


New - создать новый уровень.


Open - открыть существующий уровень. HotKey - O.


Save As - дает возможность сохранить уровень под другим именем. Имя должно быть без расширения и пути. Введя имя, жмите на кнопку "SAVE" или "SAVE LOCKED" - если хотите, чтобы ваш уровень нельзя было больше изменить. Его нельзя будет загрузить в Едитор. Хотя польза от этого сомнительна, т.к. существуют програмки-вскрывалки.


Save - сохранить уровень. Имя уровня не должно содержать более 8 знаков, иначе он не будет виден в меню игры! HotKey - S.


Save and Play - сохранить уровень и сразу на нем поиграть. Запор, нажатие Esc или прохождение уровня возвращают вас в редактор. BestTimes при этом не сохраняются. HotKey - P.


Check Topology - проверить все ли в порядке с топологией уровня, как то: не пересекают ли полигоны и их ребра друг друга, находится ли старт в "воздухе" и т.д. Если что-то не в порядке, вам обстоятельно объяснят, почему и носом ткнут в это место (на максимальном ZOOM'е). "Use Zoomout to see where it is located" J.


Properties - меню свойств уровня.
Foreground - здесь задается текстура земли.
Background - здесь задается текстура неба.
Текстуры неба и земли не могут быть одинаковыми.
Level name - имя уровня. Эта надпись будет видна в игре, в меню уровня. Обычно тут пишут расширенное название и авторство. Не более 30 знаков.
LGR - графический файл, на который будет ссылаться ваш уровень (про него потом).


Zoom out - уменьшить масштаб изображения. Уменьшили на максимум (1.0000)? Ваш уровень не может быть больше обозреваемого вами пространства. HotKey - Z.


Zoom fill - показать весь уровень.


View options - позволяет прятать вещи, которые в данный момент мешаются: полигоны, трава, картинки. Процесс, естественно, обратим.


Help - типа General help, почитайте, может чего новенького узнаете. Главное, что тут сказано - это, что можно получить контекстный хелп правым щелчком на любой кнопке.


Панель инструментов

С ее помощью мы собственно и будем создавать наш шедевр. Активный инструмент выделяется темно-синим цветом, а применяется левым щелчком на местности.


Move - инструмент для двигания всего, что попадется под курсор. Двигать можно вершины полигонов, объекты и картинки. Левым кликом хватать, правым - положить взад, еще раз левым, чтоб положить куда надо. Если у вас курсор трансформируется в букву Х, это значит если сейчас нажать левую кнопку, то он схватит ближайший объект, если правую, то вы попадете в свойства этого объекта. Свойства бывают только у полигонов, яблок, картинок и будут рассмотрены ниже. Картинки нужно брать за левый верхний угол.


Zoom in - увеличить масштаб изображения. Левый клик на местности, обводим область нужного размера, еще раз левый для увеличения либо правый для аборта.


Create vertex - создать вершину. С помощью этого инструмента можно создавать новые полигоны либо вставлять вершины в уже существующие (надо просто подвести курсор к вершине полигона и левой кнопкой его). Вы вставляете вершину, но вот незадача: вам нужно создать ребро справа от той вершины, а оно создается слева. Нет проблем! Жмем пробел и все в порядке.


Delete vertex - удалить вершину. Выбираем жертву и левой ее.


Delete polygon - удалить полигон. Просто тыкнуть на вершину удаляемого полигона. Только не забывайте, что в этом редакторе нет функции "Undo"!


Create food - создать яблоко.


Create killer - создать киллер.


Delete object - удалить объект (яблоко, киллер).


Create picture - создать картинку. Прежде чем создавать картинку, вам сначала нужно выбрать ее из списка. Правый клик на местности раскрывает перед вами меню выбора картинок. Все, что нам пока нужно - это верхний пункт "Normal picture". Выбираем из списка понравившийся грибочек и жмем "ОК". Теперь, каждый раз при левом щелчке на местности, будет появляться выбранная вами картинка в виде пустого прямоугольника. Для выбора другой картинки, повторите вышеописанную операцию. Чтобы получить информацию о существующей, выберите "Move" и подведите курсор к ее левому верхнему краю. Наверху экрана будет написано ее название.


Delete picture - стереть картинку. Щелкнуть на левый верхний угол.


Конечно, при создании вашего первого уровня, все эти функции понадобятся вам в совершенно иной последовательности. Сначала Zoom in/Zoom out, потом Move, Create vertex, Create food, Create picture, Save and play и т.д. Тут главное особо не заморачиваться, а обращаться к этому списку, если вдруг что непонятно.


Фишки модные бывают…

Итак, у нас уже есть все базовые знания, необходимые для создания почти полноценного уровня. Теперь переходим к описанию не совсем очевидных примочек, которые завершат ваш уровень и придадут ему изюминку. Здесь также будут описаны всякие дешевые трюки, которые обычно приводят непосвященных в замешательство. Все, что описано в этом разделе, нарисовано в прилагающемся к статье файле AgrTutor.lev.


Трава

А теперь, господа, гвоздь в заднице нашей программы - Grass polygon - многократный победитель конкурсов по вождению ни в чем не повинных людей за нос и прочие торчащие части тела. Надеюсь, что благодаря моей писанине с вами этого не случиться.


Концепция создания травы в Елме довольно неочевидна и при этом очень удобна, если в ней нормально разобраться. Grass polygon - в переводе с басурманского означает "Травяной полигон", т.е. трава создается с помощью полигона особого сорта. Делаем обычный полигон, затем выбираем "Move" и, при помощи правого щелчка на вершине полигона, попадаем в его свойства. Меняем там значение "NO" на "YES" и жмем "ОК". Все! Grass polygon готов. Теперь давайте разбираться что с ним делать. Настоятельно отсылаю вас к Tutor2.lev. Найдите там грас-полигоны и внимательно их осмотрите.


Грас-полигон проецирует над своей линией затекстуренную травой область (высотой примерно с колесо), и эта линия является нижней границей травы. Верхняя граница - это соответственно поверхность полигона, по которой мы будем ехать. Тонкость здесь в том, что у такого полигона всегда есть т.н. неактивная линия. Это линия, имеющая наибольшую длину в горизонтальном направлении. Над ней травы не будет! См. рис.1 (Зеленая линия - грас-полигон, черная - обычный полигон)


Editor1.gif


Линия же покороче (активная), будет проецировать над собой толстый и качественный слой отличной сочной травки прямиком из Новой Зеландии. См. рис.2


Editor2.gif


Отсюда мой вам совет делать траву так: начинайте грас-полигон с прокладывания под землей линии, по которой пойдет ваша трава, каким угодно рельефом и какой угодно протяженности. После этого достаточно просто соединить начало и конец полигона прямой линией. См. рис.3.


Editor3.gif


Можно его и весь засунуть под землю, но только следите при этом, чтобы трава пошла по нужной вам линии.


Нестандартное применение травы

Как я уже упоминал выше, грас-полигон проецирует над собой слой травы высотой лишь в одно колесо. А что делать, если вы хотите покрыть этой симпатичной текстуркой более значительную область? Выход есть, но придется немного попариться. Принцип такой. Создайте грас-полигон в самом низу планируемой для закрашивания области, а далее просто создавайте новые грас-полигоны в местах, где кончается трава, проецируемая предыдущим. Главное создавать полигоны именно в последовательности снизу вверх, а не наоборот, иначе будет видна кромка травы на стыках проекций.


Картинки

Мы уже знаем о картинках то, как их создавать и перемещать (и даже удалять!!!). Но это еще не все. Мы еще ничего не знаем о таком замечательном меню, как меню свойств картинки. Правый клик Move'ом на левом верхнем углу картинки и мы там. Здесь 2 параметра: Distance и Clipping.


Первый параметр означает "дистанция" и управляет степенью удаленности картинки от зрителя. "Какая тут может быть дистанция, если мир плоский?" - удивитесь вы и будете совершенно правы. Все верно, никакой "удаленности" здесь нет. Просто этот параметр управляет расположением картинок относительно друг друга. Если у первой значение меньше, чем у второй, то первая будет видна поверх второй и наоборот. Короче говоря, чем значение меньше, тем картинка "ближе". Значения могут быть от 1 до 999. Для справки: дистанция байкера и всех игровых объектов - 500. Таким образом, если задать бочке значение <500, то он проедет "за" ней, если больше, то, соответственно, "перед" ней. Это можно неоднократно наблюдать на интернальных уровнях. Отсюда простой совет: ставьте дистанцию вашим картинкам >500 в "ответственных" местах вашего уровня, чтобы они не мешали вождению, иначе играющий будет на вас долго ругаться или, что еще хуже, просто бросит ваш уровень. Некоторые нерадивые левелмэйкеры используют эту возможность для прятанья в кустах яблок и ромашки, так что тому, кто играет без мини карты, приходится напряжно J.


Второй параметр - clipping - управляет тем, где картинка будет видна: в земле, в воздухе или везде (см. Tutor2.lev!). Имеет 3 значения:
G (Ground) - будет видна часть картинки, находящаяся под землей (мало ли, может вас приспичит насажать под землю деревьев J).
S (Sky) - видна часть картинки, находящаяся в воздухе (стоит по умолчанию у большинства картинок).
U (Unclipped) - картинка будет видна полностью, вне зависимости от того, где она находится.


Текстуры

Немного о текстурных масках. Текстурные маски позволяют вам покрывать определенной текстурой отдельные части уровня. Делается это очень просто. Заходим в меню создания картинок, делее пункт Texture, выбираем нужную. Затем пункт Mask, выбираем нужный размер, закрываемой поверхности. Потом, просто расставляем маски по уровню, где надо, и задаем КАЖДОЙ требуемые значения дистанс и клиппинг, если значения по умолчанию вас не устраивают. Примеров их использования в интернальных уровнях довольно мало. Самый очевидный - 19.Turn Around. Темный фон подземной пещеры сделан именно так (текстура - stone3, а красивый переход от воздуха к текстуре в самом начале сделан с помощью отдельной картинки - s3top). 18.Spiral, 15.Serpent Tale, 31.Steep Corner - там отдельные элементы (уступы, буквы) закрыты масками с клиппингом "G". С помощью этой функции можно добиться многих интересных эффектов. Например, сделать воду! Поверхность сделать из больших масок (sky texture), а брызги всякие из маленьких. Экспериментируйте! Кстати и обычные картинки можно использовать как текстуры.


LGR - файлы

Чтобы уж совсем покончить со всякими картинками, текстурками и прочими художествами J, скажу пару слов о LGR-файлах. В Элме вся графическая информация хранится не в уровне, а в "Левел-график" файле, находящемся в папке LGR в каталоге игры. Уровень лишь содержит ссылки на соответствующий ЛГР-файл. В меню Properties вы можете выбрать графический файл, который будете использовать. Можете накачать с мопосайта кучу этого добра и наслаждаться. Но скажу вам по секрету, что вещи круче Default.lgr вы нигде не найдете. Уровень не может использвать несколько ЛГР. Кстати тут можно прикольнуться так: скачать какой-нибудь Cemetery.lgr, засунуть его в папку LGR, переименовать в Default.lgr, и виола! У вас по всем интерналам будет ездить очаровательного вида скелетик J, правда картинки будут расставлены совершенно неадекватным образом. ЛГР можно создавать и свои. Отсылаю заинтересовавшихся на мопосайт.

Гравитация

Вы, наверное, помните такие замечательные уровни, как 11.Gravity Ride, 20.Upside Down, 46.Bowling? Некоторые вспоминают с интересом, некоторые с отвращением. В общем, когда собираетесь использовать трюки с гравитацией, знайте, что многие игроки ее просто ненавидят.


Вы скорее всего заметили, что когда брали на вышеупомянутых уровнях яблоки, то вас какая-то сила начинала уносить то вверх, то вправо, то вообще куда-то в кукуево за пределы уровня. А все очень просто: когда вы брали определенное яблоко, менялось направление силы тяжести. Та же сила, что тянет обычно байк вниз, может действовать в любом из четырех направлений. Делаем так: создаем обычное яблоко, затем Move'ом по правой кнопке попадаем в его свойства. Там выбираем один из четырех эффектов который случится после взятия этого яблока (там есть еще параметр анимации яблока, но он никакого практического интереса не представляет). Вот и все. Теперь после его взятия мы можем полететь вверх (up), влево (left), вправо (right). Когда захотите прекратить свои шутки к кривизной вселенной J, просто создайте яблоко с параметром Gravity Down.


"Невидимые полигоны"

Именно так, в кавычках. Потому что на самом деле это самые обычные полигоны. Делается так: рисуем обычный полигон, но удлиненной формы, чтобы его ребра шли параллельно друг другу. Затем берем вертексы одной линии полигона и перетаскиваем их как можно ближе к соответствующим им вершинам другой (на максимальном ZOOM'е). Смысл в том, чтобы два противолежащих ребра были бы на минимальном расстоянии друг от друга. Тогда полигон просто не будет виден из-за своей неимоверно маленькой толщины. Таким макаром создаются всякие приколы типа безопасной поездки по киллерам, ловушки для головы, секретные проезды и проч. подлянки, раздражающие большинство игроков.


Ускорялки

Ну тут уж используются чистой воды баги Елмы, основанные на том, что когда колеса байка попадают в тесное пространство, то начинают вести себя совершенно неожиданным образом. Особенно при нажатии тормоза. Чтобы сделать ускорялку, необходимо, чтобы колеса оказались между параллельными (или чуть-чуть сужающимися) плоскостями, и расстояние между ними было бы чуть меньше диаметра колеса. Если байк имеет небольшую начальную скорость, то при нажатии тормоза, колеса приобретают бешеное ускорение. По той причине, что его приобретают только колеса, удержание тормоза более чем на одну секунду, чревато летальными последствиями. Непременно сыграйте в дармоедовский уровень CANNON2. Незабываемые ощущения.


С помощью таких багов можно также заставлять колеса перемещаться между изолированными областями, переводить их из воздуха в землю и обратно.


Пара слов на дорожку…

Я, безусловно, не выдающийся игрок и уровнестроитель. Но сказать начинающим кое-что, исходящее просто из здравого смысла, наверное, могу.


"Два глобальных вопроса, которые вы должны себе задать, прежде чем начать что-либо делать: 1) куда эти уродцы побегут (поедут)? и 2) на что они будут смотреть?" - (с) Господин ПэЖэ.


Есть некоторые общие принципы уровнестроительства вне зависимости от данной конкретной игры. Поэтому начинайте уровень с карандаша и бумаги. Продумайте оригинальную (надеюсь) идею геймплея вашего уровня. Что это будет? Безбашенный Sink или вдумчивый Tricks Abound, улетный Free Fall или экстремальный Headbanger, элементарный Warm Up или зубодробительный Downhill? Вариантов бесконечное количество, придумайте свой! Главное, чтобы вести байк по вашему уровню было интересно. Не делайте уровень слишком длинным (желательно не более 1,5 мин.) и слишком большим. Зачем делать трамплин из 3-х плоскостей размером в 10 экранов? Можно плоскостей добавить побольше, а полигон уменьшить в несколько раз и т.п. Не городите километры, стройте метры, но с умом каждый. Хотите сделать уровень "Ура ламерам"? Делайте больше кругов, длинных трамплинов и других бесполезных элементов. Хотите сделать уровень "Смерть ламерам"? Застройте весь уровень узкими местами, низкими потолками, неожиданными выступами и прочими радостями для головы. Подумайте, какой тип уровней вам ближе всего: уровень-головоломка (типа What the Heck) со многими вариантами прохождений или что-то скоростное и веселое (Sink). Хорош уровень любого типа, если он достойно выполнен.


Итак, вы все продумали, нарисовали на бумаге, теперь можно смело брать мышь в зубы и нарезать вертексы. Когда закончите, проедьте ваш уровень несколько раз. Проверьте, все ли получилось так, как вы задумывали, нет ли где непредвиденных проблем с проездом и т.д. Короче, протестируйте его по полной программе. Все, геймплей вашего уровня готов.


Многие на этом работу и заканчивают. А зря. У вашего уровня еще нет очень важной составляющей его притягательности - красивого внешнего вида. О внутреннем его содержимом (геймплее) вы уже позаботились. Но, как известно, "встречают по одежке…". Многие, просматривая уровни, смотрят, что там, на старте, и если видят лишь голые полигоны, да еще с неаккуратными краями, то сразу Esc, next.…Не придерживайтесь и в оформлении формального подхода, типа быстренько раскидал грибочки с травкой по уровню и порядок. Попытайтесь пронести какую-то общую идею использования текстур и картинок через весь уровень. Сделайте стиль оформления созвучным геймплею, а элементы оформления гармоничными друг другу. И уровень заживет своей жизнью, наполнится особой атмосферой, созданной вами. Файл default.lgr дает очень большой простор для маневра. Здесь вдвойне важно знать чувство меры. Не делайте бессмысленных нагромождений из картинок, делайте из них интересные композиции. Не лепите рядом текстуры всех мастей - будет просто резать глаз. (Кстати, вы заметили, что наиболее аскетичные в оформлении интерналы покрыты кирпичной текстурой? Подумайте почему.) Не мешайте картинками вождению, не перебарщивайте с их количеством. Не делайте так, что на одной части уровня от них живого места нет, а на другой свистит ветер. Короче, не впадайте в крайности, а хороший вкус, чувство меры и простая логика сделают свое благое дело.


Вывод: интересный геймплей + приятное глазу оформление = отличный уровень.


Несмотря на очевидность этих мыслей, следовать им - дело крайне непростое. Примером тому служат хотя бы мои собственные уровни, раскритиковать которые на тысячу маленьких цветных медвежат, дело двух секунд J.


Из живых примеров для подражания: internals, Olliz, Ville J, Skintor, Hemman, BarTek, Zebra, Zworqy, LOS team levelpack.… Затрудняюсь на память сейчас назвать еще имена.


Демонстрационный уровень - AgrTutor.rar


В общем, пишите, если что. Уровни моего собственного производства можно скачать здесь.


И пусть будет больше уровней, хороших и разных.

С уважением ко всем, кто меня понял,

Agressor


(с) 2003

Альтернативные редакторы уровней

  • Advanced level editor - самый простой для понимания и лучшей альтернативный редактор. Автор программы - Nicolas.
  • Rad's LevMaker - скромный LevMaker, создает двух цветные карты, а потом может сделать обратно уровень из них.
  • eXtended Lev Editor - редактор уровней от SmarT'а, выполняет дествия по преобразованию уровня, такие как: отражение по вертикали/горизонтали, работа с координатами, смена объектов.
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты