У даній статті описується робота з редактором Worldcraft 2.0. Редактор поставляється разом з ліцензійною версією Half-Life і доступний для скачування на сайті http://halflife.gamedesign.net (повний лінк до файлу дати не можу, так як його місцезнаходження на ftp періодично змінюється). Також ви можете знайти останню версію Worldcraft на нашому компакті.
Крім Worldcraft для HL існує ще кілька редакторів (QERadiant, Qoole, Quark, Therd та інші.) Їх розглядати ми не будемо. Хочете — завантажуйте, пробуйте … Всі номери можна знайти на www.gamedesign.net .
Налаштування
Насамперед переконайтеся, що Worldcraft і HL встановлені на одному диску, в іншому випадку скопіюйте з директорії HL в директорію редактора файли halflife.wad, liquids.wad, xen.wad і decals.wad. У Tools => Options вкажіть шлях до файлів з текстурами (.wad), до програм-компіляторам (про них нижче), до директорії HL, до самої гри, до файлу halflife.fgd (живе в директорії редактора), а також до директорії halflifevalvemaps (якщо такої не спостерігається — створити негайно!).
Тепер трохи про компіляторах. Це маленькі програмки, які створюють рівень з того, що ви накрутили в редакторі. Їх три: qbsp2.exe (відповідає за архітектуру, монстрів і діючі об'єкти — entities), qrad2.exe (обробляє прості і кольорові джерела світла) і qvis2.exe (використовується найчастіше для фінальної компіляції рівня, видаляє невидимі межі об'єктів, оптимізує рівень і прискорює його роботу).
помічені глюки
Як відомо, ідеальних редакторів не буває. Не позбавлений недоліків і наш з вами підопічний. З помічених "глюків" відзначимо наступні. 3D Preview при включеній hardware acceleration не дуже добре працює під DirectX 7. При наклеюванні текстур на площині редактор іноді вилітає, так що рекомендую частіше натискати Ctrl + S.
Принципи та поняття
Інтерфейс Worldcraft нагадує 3dMax, хіба що розташування вікон за замовчуванням трохи інше:
1 — Вид згори (XY);
2 — Передня панель (XZ);
3 — Вид збоку (YZ);
4 — 3D Preview — приблизно так виглядатиме ваш твір в самій грі.
Отже, робимо перший крок. Вибираємо відповідну текстуру (у вікні праворуч). Включаємо Block tool (Shift + B) і малюємо, вибачте на слові, паралелепіпед. Задовольнившись його розмірами, натискаємо Enter. Ось і наш перший об'єкт (браш). Нехай це буде підлогу. Вибираємо іншу текстуру, робимо таким же чином стіни і стеля. Ось і готова наша перша кімната!
Зробити кімнату можна і простішим чином: створюємо досить великий браш, виділяємо його і робимо 'hollow' (всі команди доступні з правої кнопки). Щоб вирізати за допомогою одного Браша дірки в іншому, виділіть її та зробіть 'carve'.
Entities
Діючі об'єкти. Діляться на Point entities — об'єкти, заздалегідь створені розробниками (монстри, аптечки, джерела світла, зброя), і Solid entities — створений вами браш з призначеними властивостями (двері, ліфт, скло). Почнемо з самого основного — з точки старту, без неї рівень просто не запуститься. Врубаєм entity tool (Shift + E), в менюшке справа вибираємо 'info_player_start', вибираємо місце, де хочемо його поставити, і тиснемо Enter.
Точно таким же чином створюємо джерела світла (а то в темряві бігати, погодьтеся, трохи стрьомно). Вибираємо в меню 'light' і розміщуємо його там, де, на вашу думку, має бути ясно. Виділивши створений об'єкт і натиснувши Alt + Enter, можна налаштувати його властивості (для кожної entity вони свої, наприклад, для джерела світла це яскравість і колір).
Для повного щастя зробимо ще й двері. Вибираємо відповідну текстуру, створюємо браш, виділяємо його, натискаємо 'to entity' і в меню вибираємо 'func_door', призначаємо властивості (швидкість, напрямок, в який бік двері буде відкриватися, звук, з яким вона буде рухатися, і інші її характеристики ).
Тепер розкладемо зброю і розставимо монстрів. Все робиться точно так же, як і у випадку з джерелами світла. Біля місця старту (або прямо на ньому) рекомендується розмістити 'item_suit' — без нього грати, м'яко кажучи, незручно: ви не зможете користуватися аптечками, не будете бачити рівень здоров'я і навіть не зможете перемикати зброю.
Зв'язки між об'єктами
Для цього служать пункти name і target у властивостях об'єктів. Поясню на простому прикладі.
Припустимо, вам треба, щоб при натисканні кнопки відкривалися двері. Створюємо двері, в пункті name у неї пишемо, припустимо, door1. Далі створюємо кнопку (func_button), в пункті name у неї не пишемо нічого, але в пункті target пишемо ім'я двері (в даному випадку door1).
Об'єкти типу 'env'
Як правило, це дрібні події, які здійснюються за допомогою спрайтові об'єктів і звуків. Використовуються виключно для красоти.Напрімер, при включенні 'env_spark' з'являються тріщать іскри, а 'env_explosion' створює вибух, а 'env_sound' управляє акустикою приміщення. Найчастіше для активізації таких об'єктів використовуються тригери …
тригери
Невидимі об'єкти, які керують іншими, видимими об'єктами. Тригери поділяються на solid і point. Найчастіше використовуються 'trigger_once' і 'trigger_relay'
Приклад перший: вам хочеться, щоб при проходженні через певне місце несподівано лунав вибух. Створюємо env_explosion, називаємо його деяким ім'ям (як у випадку з кнопкою і дверима). На тому місці, при проході через яке повинно рвонути, створюємо браш і перетворюємо його в 'trigger_once', ліземо до нього в самі properties і в поле target пишемо ім'я, яким ми нагородили env_explosion.
А тепер про застосування trigger_relay (прошу зауважити, це point entity, вантажиться звідти ж, звідки зброя і монстри). Наприклад, потрібно, щоб через деякий час після вибуху пролунав ще один. Створюємо другий вибух, називаємо його іншим ім'ям, створюємо trigger_relay, називаємо його тим же ім'ям, що і перший вибух, а в target пишемо ім'я другого вибуху. В поле delay пишемо час в секундах (проміжок між вибухами). Усе!
декали
Це такі спеціальні текстури, які зберігаються в файлі decals.wav. Використовувати їх можна тільки накладаючи поверх інших текстур. Включаємо decal tool, вибираємо текстуру з decals.wad і у вікні з 3d preview наклеюємо туди, куди хочемо. Набір декалей досить обмежений. В основному це сліди від вибухів, тріщини, бризки крові і різні надпісі.Раз вже мова зайшла про текстури, то дозвольте також розповісти про фичу texture application. Включається відповідної кнопкою і діє таким чином. Припустимо, у вас є куб. Вам треба, щоб на одній площині була одна текстура, а на іншій — інша … Користуючись вищеназваної фічой, вибираємо у вікні потрібну текстуру і натискаємо правою кнопкою на площину, куди хочемо її приліпити. Так ось…
компіляція
А тепер подивимося, як виглядає те, що ви натворили!
Тиснемо F9 або кнопку з геймпадом на верхньому тулбаре, з'явиться вікно з опціями компіляції.
Для попереднього перегляду вибираємо: qbsp — normal, qrad — normal, qvis — no. Після натискання OK з'явиться вікно з процесом компіляції … Чим рівень більше, тим довше він компілюється (повна компіляція великого рівня може зайняти кілька годин). Якщо все нормально, то через деякий час повинна запуститися сама гра з вашим рівнем.
Рівень може не відкомпільоване (або відкомпільоване, але не повністю) з кількох причин:
— якщо в рівні є дірки в навколишній простір (так що старанно стежте за герметичністю рівня);
— якщо якийсь з об'єктів (entity) повністю або частково знаходиться всередині Браша (особливо в цьому плані вибагливі джерела світла);
— якщо на рівні відсутній info_player_start;
— якщо на рівні занадто багато дрібних або плоских Брашей (при компіляції зазвичай проскакує повідомлення про кількість таких деталей і про їх можливе максимальній кількості). До речі, якщо у вас щось викликає сумнів, то буває корисно натиснути Alt + P — тоді редактор перевірить рівень і вкаже місця з можливими помилками (найпоширеніша — invalid brush).
Пошук дірок: рекомендується перед повною компіляцією спочатку запустити рівень тільки з qbsp (так швидше), а в самій грі, в консолі, написати чарівне слово "pointfile". Якщо в рівні є дірки, то вони будуть відзначені пунктирною лінією (прямо в грі), тоді врубаєм noclip і літаємо по цій самій лінії в пошуках дірки.
До речі, будь-яка entity, а також рідкий браш (вода, кислота), що знаходяться за межами рівня, також вважаються діркою.
Кілька корисних порад
Слідкуйте, щоб рівень був витриманий в одному стилі. Погуляйте за стандартними рівнями з включеними god та notarget і уважно розгляньте архітектуру. Звертайте увагу, де і як використовуються текстури.
Визначтеся з тематикою рівня. Що це буде — завод з переробки радіоактивних відходів або військова база? Не перестарайтеся з використанням prefabs (готових об'єктів) … Повірте, дуже убого виглядають вироби горе-дизайнерів (в основному американських), суцільно заставлені диванами, унітазами та газонокосарками …
Слідкуйте за реалістичністю. Стіни з води — вічна проблема початківців левелмейкеров (вони думають, що це круто). Зброя також має бути розкладено з розумом. Не буде ж egon просто так валятися на вулиці.
Не ставте поруч монстрів, ворогуючих між собою (наприклад, десантники і прибульці).
Невелике зауваження щодо обертових об'єктів: щоб, скажімо, вентилятор обертався навколо осі, треба цю саму вісь спочатку зробити. Виготовляється вона з текстури origin. В іншому випадку об'єкт буде літати по всьому рівня. Те ж стосується і стулкових дверей (func_door_rotating).
Worldcraft 3.3
Нещодавно побачив світ Worldcraft 3.3 (ось так відразу, без всяких проміжних версій … відразу з 2.1 на 3.3). Почнемо з того, що це чудо інженерної думки обзавелося довгоочікуваної підтримкою OpenGL, але справа в тому, що в даному випадку прискорювач перетворюється в тормозітель … Відключити дану "корисну" функцію не представляється можливим. А тепер дозвольте навести цитату з прес-релізу: "OpenGL 3D Renderer. The real-time renderer is much faster, more robust, and allows for animating visuals in the 3D view ". Ну ну…
Дуже погано зроблена підтримка mouse wheel — колесо відповідає не за прокрутку 2D вікон (як можна було б подумати), а за зменшення / збільшення.
Але і без приємних нововведень не обійшлося. Наприклад, така фіча — Rotation texture lock (коли ви повертаєте об'єкт, текстура повертається разом з ним, а не залишається, як це було раніше). Трохи зручніше і функціональніша стала Texture Application Tool.
Entities тепер показуються в preview не у вигляді кубиків, а в вигляді спрайтів (добре, що не в вигляді моделей). Ну і плюс ще кілька зовсім незначних можливостей … Вирішуйте самі, треба це вам чи ні. Завантажити нову версію редактора можна тут: