Мета цього тексту - показати основні принципи створення рівнів для Quake 3 Arena, але викладені принципи будуть вірні для всіх ігор на движку Q3A (Quake 3 Arena, Quake 3 Team Arena, RtCW, Medal of Honor і т.д.).
Базові поняття уровнестроітельства.
Основні поняття, які необхідно знати.
Полігон (він же багатокутник) - геометрична фігура на площині, обмежена замкнутою ламаною лінією. Примітка: полігон взагалі може бути будь-яким за формою ( "увігнутий", з самоперетинів та ін.), Ми будемо працювати з опуклими полігонами. Полігон називається опуклим, якщо лінія, проведена по кожній із його сторін, не перетинає жодну іншу.
Опуклий полігон, весь лежить по одну сторону від будь-якої з несучих його боку ліній
Увігнутий полігон (правильно неопуклих)
Полігон з самоперетинів
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 (лівою кнопкою миші) всієї фігури або однієї з її граней.
деформація граней
Для деформації граней потрібно додатково утримувати [Ctrl]
редагування ребер
Ребра - це лінії зіткнення полігонов.Для перемикання в режим редагування ребер треба натиснути [Е]. На серединах ребер з'являться сині точки. Переміщаючи лівою кнопкою миші ці точки, ми переміщаємо ребра. Вони будуть "чинити опір" руху в тих напрямках, які призводять до спотворення опуклості граней
редагування вершин
Вершина або vertex - це точка, де сходиться більше двох ребер. Для перемикання в режим редагування вершин натисніть [V]. На вершинах з'являться зелені точки. Переміщаючи лівою кнопкою миші ці точки, ми переміщаємо вершини. Якщо зазначено, що при редагуванні вершина потрапляє поза площиною полігону, то, в залежності від прапорця Vertexediting split faces в настройках, полігон або ділиться так, щоб браш залишився опуклим, або відповідним чином коригується положення всіх точок полігону.
CSG операції
Відсікання відсікає площина задається двома (якщо вона паралельна координатній площині) або трьома крапками (точки задаються правою кнопкою миші при затиснутому [Ctrl]). Клавіша [ESC] скасовує операцію, [Enter] - підтверджує відрізання, [Ctrl] + [Enter] - міняє місцями відсікаються частини, [Shift] + [Enter] - при відсіканні червона brush не видаляється, тобто операція діє як ніж. Якщо поставлено більше трьох точок, відсікання не проводиться і точки. А можна сделть трохи по іншому - виділяємо потрібний brush, потім тиснемо [X] і відзначаємо потрібні точки. Полсен чого тиснемо [Enter]
об'єднання
Комбінація [Ctrl] + [M]. Не корисна можливість об'єднання (склеювання) brush'ей в одну. Вона працює лише в тому випадку, якщо результат буде опуклою brush'ю, що буває вкрай рідко.
віднімання
Меню Selection-CSG-Subtract або кнопка на Toolbar'e. Віднімає виділені brush'и з усіх інших, які вони перетинають. Якщо в результаті виходить неопуклих brush, то він ділиться на опуклі. Це дуже потужний інструмент, але не варто намагатися при відніманні використовувати brush'и складної форми, результат вас розчарує. Також при відніманні можуть утворюватися такі brush'и, після прив'язки до сітки яких виходять дірки.
Ось приклад невдалого віднімання - видно, що вершини деяких brush'ей нема на сітці, це в подальшому може викликати проблеми. Такі проходи треба робити руками
Hollow (Спустошення)
Робить brush'и порожніми, тобто вони стають кімнатами. Через кожну їх грань прокладається новий brush товщиною в поточний розмір сітки, вихідний brush видаляється. Ця операція ефективна тільки на досить простих brush 'ax. Кімнати складної форми краще робити вручну.
Створення складних форм
Створений звичайним способом 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 може глючити і не малювати деякі полігони. У тому місці, де глюк, помістіть браш з цієї текстурою.
bsp_fullvis light extra - розраховується все з максимальною якістю (ре-лизніть версія карти).
bsp_bsp (nought) - тільки перша фаза. Використовується для перевірки геометрії, текстур і ін.
bsp_Entities - для вже відкомпільованого рівня оновлює інформацію про entity. Наприклад, якщо ви додали нову зброю, то досить цієї функції.
bsp_relight - перераховує освітлення для вже відкомпільованого рівня.
bsp_fastvis - розрахунок з прискореної другою фазою і c звичайним прорахунком освітлення.