Главная > Игры > 3D Action >
Основы работы в редакторе уровней Q3Radiant (или в GtkRadiant)

Основы работы в редакторе уровней Q3Radiant (или в GtkRadiant)

Цель этого текста - показать основные принципы создания уровней для Quake 3 Arena, но изложенные принципы будут верны для всех игр на движке Q3A (Quake 3 Arena, Quake 3 Team Arena, RtCW, Medal of Honor и т.д.).

Для работы нам понадобится Quake III и редактор Q3Radiant (именно в нем дизайнеры из id создавали свои арены), а также немного терпения и фантазии. Q3Radiant пойдет на любой машине, где идет Quake III, для более комфортной работы рекомендую найти себе трехкнопочную мышку. Я использовал GtkRadiant 1.2.5 (т.к. он менее глючен, чем Q3R) с раскладкой окон и клавиш по умолчанию. Если у вас Q3Radiant, то устанавливайте его в ту же директорию, где Quake3 (например - c:\q3a\)- это важно. Если при запуске возникли проблемы, попробуйте обновить драйверы под свою видеокарту, изменить видеорежим и пр. Рекомендуемое разработчиками разрешение экрана 1024х768 и выше, но соёдет и 800х600 - по крайней мере мне оно не доставило никаких проблем.

Базовые понятия уровнестроительства.

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

Пример полигона в редакторе уровней Q3Radiant (или в GtkRadiant)

Выпуклый полигон, весь лежит по одну сторону от любой из несущих его стороны линий

Пример выпуклого полигона в редакторе уровней Q3Radiant (или в GtkRadiant)

Вогнутый полигон ( правильние невыпуклый )

Пример вогнутого полигона в редакторе уровней Q3Radiant (или в GtkRadiant)

Полигон с самопересечениями

Brush (браш) - объем, ограниченный четырьмя и более плоскостями, без самопересечений, естественно. Это "кирпичик" для уровней Quake. Brush может быть триггером, который не осязаем. В редакторе brush'ы представлены в виде выпуклых многогранников, каждая грань которого - полигон.

Patch (aka Curve) - сплайновая поверхность - кривая поверхность, описанная сплайнами Безье (Bezier). Такая кривая задается лишь основными контрольными точками (control points), а остальная поверхность Brush (браш) - объем, ограниченный четырьмя и более плоскостями, без самопересечений, естественно. Это "кирпичик" для уровней Quake.

Shader - это текстура(ы) плюс текстовый файл, который описывает, как накладывается текстура и какие эффекты применяются. При помощи shader'ов делаются анимированные текстуры (вода, джамперы (прыгалки), провода и прочее).

MD3 model - это файл *.md3, содержащий полное описание какой-либо модели в игре (персонажи, оружие, патроны и т.д).

Entity - некоторый класс объектов в игре (неподвижные части, движущиеся части, игроки, предметы и т.д.)

Trigger (триггер) - невидимая область, которая при активизации (игроком, таймером и пр.) совершает некоторое действие (убивает игрока, открывает дверь, активирует другой триггер и т.д.).

Основные операции.

В дальнейшем я буду называть левую кнопку мыши LBUTTON, среднюю - MBUTTON, правую - RBUTTON. Операции с выделением Выделенные объекты отображаются красным. Клавиша [ i] инвертирует выделение.

Выделение одиночных объектов
Если у вас несколько выделенных brush'ей, то, нажав [ESC], вы можете снять выделение с них всех одновременно. Выделять можно в любом окне, щелкнув в brush [Shift]+[LBUTTON], повторная операция снимает выделение. В 2D view выделяется самая верхняя brush, но имеется исключение для entities - они выделяются первыми. Чтобы взять не самую верхнюю brush, нажмите [Shift]+[Alt]+LBUTTON несколько раз

Выделение полигонов
Для наложения текстуры бывает необходимо выделить отдельный полигон, используйте комбинацию [Ctrl]+[Shift]+LBUTTON. Если надо выделить несколько одиночных полигонов - [Ctrl]+[Alt]+[Shift]+LBUTTON.

Клонирование
Нажав клавишу пробела, вы получите копию выделенного объекта.

Отражение(Flip|)/Поворот(Rotatе)/ Масштабирование(Scale)
Доступно через меню Selection. Некоторые из этих операций недоступны или неэффективны для некоторых типов объектов. Например, вращение и масштабирование бессмысленно для entities (не для Ь_ппоdеl'ей). Примечание: b_model - это entity из brush'ей и patch'ей, класс которой не worldspawn. Такие объекты используются для создания движущихся частей: дверей, лифтов, платформ и пр.

Работа с brush'ами

Создание
В 2D view зажимаем левую кнопку мыши и затем тащим курсор, не отпуская ее, пока brush не достигнет желаемых размеров (точно размер указан в статус-баре). Желательно делать размеры по границам major grid, это избавит от проблем со сведением швов текстур. Если brush нарисован красным цветом - значит он выбран. В Zheight view (окно №3) можно увидеть его высоту, если над ним Zdepth Icon. Перемещение Zdepth Icon осуществляется путем зажатия [Shift], и щелчка в 2D view средней кнопкой мыши.

Перемещение и изменение размеров
Тут все очень легко и стандартно -обычный drag'n'drop (левой кнопкой мыши) всей фигуры или одной из ее граней.

Перемещение и изменение размеров brush'ей в редакторе уровней Q3Radiant (или в GtkRadiant)  Перемещение и изменение размеров brush'ей в редакторе уровней Q3Radiant (или в GtkRadiant)

Деформация граней
Для деформации граней нужно дополнительно удерживать нажатой [Ctrl]

Деформация граней brush'ей в редакторе уровней Q3Radiant (или в GtkRadiant)   Деформация граней brush'ей в редакторе уровней Q3Radiant (или в GtkRadiant)

Редактирование ребер
Ребра - это линии соприкосновения полигонов.Для переключения в режим редактирования ребер надо нажать [Е]. На серединах ребер появятся синие точки. Перемещая левой кнопкой мыши эти точки, мы перемещаем ребра. Они будут "сопротивляться" движению в тех направлениях, которые приводят к искажению выпуклости граней

Редактирование вершин
Вершина или vertex - это точка, где сходится более двух ребер. Для переключения в режим редактирования вершин нажмите [V]. На вершинах появятся зеленые точки. Перемещая левой кнопкой мыши эти точки, мы перемещаем вершины. Если отмечено, что при редактировании вершина попадает вне плоскости полигона, то, в зависимости от флажка Vertex editing split faces в настройках, полигон либо делится так, чтобы браш остался выпуклым, либо соответствующим образом корректируется положение всех точек полигона.

CSG операции

Отсечение {X]
Отсекающая плоскость задается двумя (если она параллельна координатной плоскости) или тремя точками (точки задаются правой кнопкой мыши при зажатом [Ctrl]). Клавиша [ESC] отменяет операцию, [Enter] - подтверждает отрезание, [Ctrl]+[Enter] - меняет местами отсекаемые части, [Shift]+[Enter] - при отсечении красная brush не удаляется, т.е. операция действует как нож. Если поставлено более трех точек, отсечение не производится и точки. А можно сделть чуть по другому - выделяем нужный brush, потом жмём [X] и отмечаем нужные точки. Полсе чего жмём [Enter]

Отсечение плоскости в редакторе уровней Q3Radiant (или в GtkRadiant)  Отсечение плоскости в редакторе уровней Q3Radiant (или в GtkRadiant)  Отсечение плоскости в редакторе уровней Q3Radiant (или в GtkRadiant)

Объединение
Комбинация [Ctrl]+[M]. Бесполезная возможность объединения (склеивания) brush'ей в одну. Она работает лишь в том случае, если результат будет выпуклой brush'ю, что бывает крайне редко.

Вычитание
Меню Selection-CSG-Subtract или кнопка на Toolbar'e. Вычитает выделенные brush'ы из всех остальных, которые они пересекают. Если в результате получается невыпуклый brush, то он делится на выпуклые. Это весьма мощный инструмент, но не стоит пытаться при вычитании использовать brush'ы сложной формы, результат вас разочарует. Также при вычитании могут образовываться такие brush'ы, после привязки к сетке которых получаются дыры.

Вычитание выделенных brush'ей в редакторе уровней Q3Radiant (или в GtkRadiant)

Вот пример неудачного вычитания - видно, что вершины некоторых brush'ей не на сетке, это в дальнейшем может вызвать проблемы. Такие проходы надо делать руками

Hollow (Опустошение)
Делает brush'ы полыми, то есть они становятся комнатами. Через каждую их грань прокладывается новый brush толщиной в текущий размер сетки, исходный brush удаляется. Эта операция эффективна только на достаточно простых brush'ax. Комнаты сложной формы лучше делать вручную.

Опустошение brush'ей в редакторе уровней Q3Radiant (или в GtkRadiant)   Опустошение brush'ей в редакторе уровней Q3Radiant (или в GtkRadiant)

Создание сложных форм
Созданный обычным способом brush может служить заготовкой для других, более сложных форм. Например, выбранный brush можно превратить в призму с любым количеством сторон (не рекомендую ставить очень много, для гладких поверхностей лучше использовать Patch). Чтобы создать призму с тремя углами, нажмите [Ctrl]+[3]; с четырьмя - [Ctrl]+[4] и т.д. Если хочется, например, 16 сторон, то заходим в меню brush/arbitrary sided. Также возможно получить конус (brush/primitives/cone) и сферу (brush/primitives/sphere), но сферу лучше делать из кривых Безье (достаточно двух patch конусов, чтобы получить сферу). Привязка к сетке Нажатием [Ctrl]+[G] выбранные объекты будут привязаны к сетке, т.е. все их вершины будут лежать на пересечении линий minor grid.

Работа с текстурами

Загрузка/Выгрузка
Текстуры разложены по наборам, из названия которых легко понять что где. Выбрав набор, мы его загружаем в память. В Texture Window щелчок левой кнопкой делает текстуру активной. Активная текстура может быть "налеплена" на какой-нибудь объект комбинацией [Ctrl]+MBUTTON. "Пипеткой" служит средняя кнопка мыши (без [Ctrl]), так можно узнать, какая текстура на том или ином объекте. Чтобы назначить текстуру не всему объекту, а только одному полигону, нажмите [Ctrl]+[Shift]+MBUTTON.
Если при выделенном объекте нажать 'S' - это вызовет Surface Inspector, инструмент для аккуратного выравнивания текстуры. При помощи его можно прокручивать, масштабировать, поворачивать текстуру. Но быстрее это сделать следующими комбинациями: сдвиг - [Shift] + [стрелки]; поворот - [Shift] + [PgUp] и [Shift] + [PgDn]; растяжение - [Ctrl]+[стрелки]. Специальные текстуры Все особенности описываются в скриптах shader'ов. Ниже наиболее интересные примеры.

Жидкости
Это набор с именем liquids. В нем есть неработающие shader'ы! Движок Q3 накладывает серьезные ограничения на геометрию брашей для этих текстур. Если есть несколько соприкасающихся брашей воды, то общим граням необходимо задать текстуру из набора common с именем nodraw (иначе общие грани будут видны во время игры). "Водяные" браши нельзя ставить один на другой, они могут соприкасаться только боками. Эти ограничения свойственны только Q3, более ранние Кваки позволяли делать с водой все, что заблагорассудится.

Туман (ака Fog)
Набор sfx. Ограничений для тумана еще больше, чем для жидкостей. Браш должен быть параллелепипедом и иметь только ОДНУ видимую сторону. Двери, лифты и им подобные. не затуманиваются!

common textures - здесь содержатся облегчающие жизнь текстуры.

origin - используется как ось для вращающихся брашей.
nodraw - не отображается и не осязается в ходе игры.
trigger - наносится на триггеры.
weap_clip - не видна, но, если в нее стрельнуть, пули разбиваются.
hint - используется для решения проблемы PVS. В сложных сценах Ouake 3 может глючить и не рисовать некоторые полигоны. В том месте, где глюк, поместите браш с этой текстурой.

Компиляция ("сборка") карты
Для того чтобы загрузить созданный вами уровень в Quake 3 его необходимо откомпилировать. Процесс компиляции можно разделить на 4 фазы. Сначала весь уровень разбивается на многогранники, которые упорядочиваются в сложную структуру - BSP-дерево. Это происходит на первом этапе, здесь же становится ясно, есть ли дырки "наружу". Затем для каждого многогранника определяется PVS (possible visible set) - множество других, которые видны из него, - это второй этап. PVS ускоряет отрисовку, но он возможен, только если уровень без "дыр". И на третьем этапе для каждого полигона рассчитывается "текстура" освещенности (lightmap). Расчет света возможен и без PVS, но тогда он займет больше времени. Четвертая(опциональная) фаза "прокладывает" дороги для Bot'ов. Компилировать можно из редактора (меню bsp). Там много разных команд, но наиболее важны следующие:

bsp_fullvis light extra - рассчитывается все с максимальным качеством (ре-лизная версия карты).
bsp_bsp (nought) - только первая фаза. Используется для проверки геометрии, текстур и пр.
bsp_Entities - для уже откомпилированного уровня обновляет информацию об entity. Например, если вы добавили новое оружие, то достаточно этой функции.
bsp_relight - пересчитывает освещение для уже откомпилированного уровня.
bsp_fastvis - расчет с ускоренной второй фазой и c обычным просчётом освещения.

Если после компиляции у вас в окне редактора появилась характерная красная линия, то уровень дырявый. Используйте команды Misc/Next leak spot и Misc/Prev leak spot: они позиционируют камеру в предполагаемое место дыры.

Ошибка при компиляции уровня в редакторе уровней Q3Radiant (или в GtkRadiant)

Автор: DOOMer
Источник: http://quakegate.narod.ru/, 2003


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

© УкрFAQ 2011
Сайт создан в системе uCoz