На PDA Міченого надійшло чергове завдання - знайти і знищити в глухому гущавині вовка-самітника. Темний темний ліс. Дзвінча тиша. Відсутність видимих ознак життя. Раптом Мічений бачить на узліссі будиночок, заходить усередину і зустрічається з господарем, який розповідає головному герою про всі жахіття, що твориться в тутешніх місцях.
Ні, це не сюжет продовження « Сталкера », а лише одна додаткова місія, розроблена в нашій гробуд-лабораторії. У минулих статтях з модифікації «Сталкера» ми вивчили інтерфейс редактора карток з офіційного SDK, а також навчилися конструювати нескладні рівні для гри на основі стандартних об'єктів та нових сцен, виготовлених у 3DS Max . Сьогодні ми рушимо далі — висвітлимо тему написання нескладних типових квестів для гри.
Швидкий старт
Оскільки офіційний редактор не дозволяє правити рівні одиночної гри, а як наслідок — редагувати файли скриптів, шляхів прямування NPC та інші ресурси, ми писатимемо квести у звичайному «Блокноті». Даний підхід має лише один мінус, який відлякує більшість модмейкерів, — відсутність зручної оболонки, редактора для перегляду вмісту файлів просто немає. Зате плюсів набагато більше: можливість виправлення будь-яких параметрів, відкриті для редагування вихідні коди та багато іншого. Гра варта свічок.
З чого почати? Насамперед попрактикуємося у створенні нескладних типових завдань типу «вбити сталкера», «знищити табір», «знайди цінний артефакт» .
Запустіть «Блокнот» і підвантажте файл task_manager.ltx з директорії gamedata\config\misc з розпакованою грою (якщо у вас є лише нещодавно встановлена версія «Сталкера», розархівуйте бази даних гри за допомогою утиліти STALKER Data Unpacker ).
Файл містить інформацію про найпростіші ігрові завдання. Структура його така. У першій частині файлу - від оператора [list] до кейворду sar_monolith - оголошуються спеціальні мітки, відповідальні за підключення нових квестів до гри. Прикладом однієї з таких конструкцій є буквосполучення tm_kill_stalker_5 , це назва типової місії. У другій частині файлу – після ключового слова sar_monolith – розміщуються тексти завдань: цілі, завдання, посилання на діалоги. Розберемо структуру одного із квестів, що починається зі спеціальної мітки [tm_kill_stalker_3] (зверніть увагу, що при оголошенні завдання у першій частині файлу квадратні дужки ставити не потрібно):
[tm_kill_stalker_3]
type = kill_stalker
community = actor
text = tm_kill_stalker_3_text
description = tm_kill_stalker_3_descr
parent = trader
target = sim_stalker_novice
;reward_money = 1000
reward_reputation
=
86400
prior
= 2
Розглянемо основні параметри. Найперший — type — відповідає за тип завдання, у разі — знищити сталкера ( kill_stalker ). У грі передбачено кілька видів стандартних завдань: знищення/захист табору (параметр eliminate_lager/defend_lager ), вбивство сталкера ( kill_stalker ), пошук артефакту/кінця монстра/предмета ( artifact/monster_part/find_item ).
Оскільки спеціальних редакторів і утиліт зміни «Сталкера» немає, доводиться правити скрипти в «Блокноті», а ігрові тексти — в табличному редакторі Excel. Не дуже зручно, але альтернативи просто немає.
Параметр community визначає угруповання, до якого належить головний герой. За умовчанням у всіх місіях як значення цієї характеристики використовується ключове слово actor (персонаж).
text — назва запису у файлі stable_task_manager.xml , що містить текст завдання. Текст відображається у діалогах.
description — запис у файлі stable_task_manager.xml . Тут зібрано текст місії, що виводиться на PDA Міченого.
Наступне налаштування - атрибут parent - визначає ім'я замовника, у разі trader (торговець Сидорович).
target - мета місії, в поточному квесті - вбивство одного зі сталкерів - novice ( sim_stalker_novice ).
reward_money – нагорода, яку отримає гравець після виконання завдання.
reward_reputation - кількість очок репутації, що додається гравцеві після проходження квесту. Ви можете знизити Міченому репутацію за виконання завдання, виставивши як значення атрибута будь-яке ціле негативне число.
reward_rank – кількість рангових очок за виконання місії.
reward_item - бонусні предмети, що вручаються головному герою, за проходження квесту.
time - час (у секундах), протягом якого гравець повинен пройти місію.
prior — пріоритет цього завдання перед рештою. Цифра 1 ставиться в тому випадку, якщо завдання вкрай важливе і далі по низхідній.
Саме час попрактикуватися та модифікувати якийсь оригінальний ігровий квест. Знайдіть рядок [tm_kill_stalker_5] (для виклику меню пошуку у «Блокноті» скористайтесь комбінацією гарячих клавіш Ctrl+F ) і модифікуйте параметри цієї місії. Наприклад, ви можете просто підвищити/зменшити складність гри, збільшивши або зменшивши час, відведений гравцеві на виконання завдання (параметр time ), зняти значок блокування рядка (символ ;), reward_money (грошова винагорода) або, скажімо, надати параметру reward_reputation значення нуль, щоб Мічений не втрачав репутацію у Зоні.
Текстове свавілля
З виправленням вихідного коду місії ми розібралися. Рушаємося далі і починаємо модифікацію ігрових текстів. Загляньте в каталог gamedata\config\text\rus встановленої гри, знайдіть у директорії файл stable_task_manager.xml і відкрийте його за допомогою табличного редактора Microsoft Excel .
Після запуску програми ви побачите, що вся інформація з файлу XML буде розподілена по двох стовпцях — A і B , яким відповідають назви id (ідентифікаційний номер) і text (текст). Якщо спускатися плавно вниз стовпцем id , то неважко встановити так звану закономірність. Рядки 3, 6, 9 і далі арифметичної прогресії містять заголовок типової місії. Рядки 4, 7, 10, 13, 16 із закінченням _descr - короткий опис (мета завдання), що виводиться на PDA головного героя. Ну, а рядки 5, 8, 11, 14 і далі, що закінчується на _text , містять текст, що відображається під час діалогу з персонажем, у якого ви отримали завдання.
Таким чином, для зміни текстів того чи іншого однорівневого завдання, прописаного у файлі task_manager.ltx , вам потрібно зробити наступні нехитрі маніпуляції. Насамперед скопіюйте в Блокнот назву певної місії з task_manager.ltx (без квадратних дужок), її опис для виведення на PDA (параметр description ) і текст діалогу ( text ). Потім по черзі знайдіть виписані ключові слова у файлі XML stable_task_manager.xml і модифікуйте текст кожного із записів. Закінчивши виправлення завдання, збережіть усі зміни та протестуйте квест у грі.
Тонкощі квестобудування |
---|
;--[barmen_eliminate_camp_3]
|
Квестобуд
Тепер, коли ви вивчили основи редагування однотипних ігрових завдань, можна спробувати сили в написанні свого власного квесту створити необхідні записи в менеджері завдань (файл task_manager.ltx ), а також забезпечити квест текстовими описами.
Запустіть «Блокнот» і підвантажте файл task_manager.ltx з директорії gamedata\config\misc . Знайдіть ключове слово sar_monolith і після нього з нового рядка додайте наступну конструкцію:
; Ваш авторський коментар
[mission_name]
Тут [mission_name] - довільне найменування квесту, наприклад, tm_kill_stalker_7 .
Далі скопіюйте якесь типове завдання, наприклад, [tm_kill_stalker_2] у буфер обміну і помістіть дублікат у кінець документа. Змініть назву клонованої місії, укладену в квадратні дужки, назву квесту, оголошеного вами в списку завдань. Модифікуйте параметри оригінальної місії, за потреби додайте до коду місії додаткові команди. Найголовніше — не забудьте поправити значення параметрів text та description , які відповідають назвам текстових записів у файлах
gamedata\config\gameplay\storyline_info_taskmanager.xml і gamedata\config\text\rus\stable_task_manager.xml . Потім відкрийте "Блокнотом" XML-файл storyline_info_taskmanager.xml з каталогу gamedata\config\gameplay з грою і додайте в кінець файлу наступний блок:
<article id="[descr]" name="kill_stalker" article_type="task">
<text>[descr] </text>
</article>
У цьому фрагменті коду [descr] — значення параметра description у тілі місії, (у разі — tm_kill_stalker_7_descr ).
Залишилось змінити файл stable_task_manager.xml , який містить тексти завдань російською мовою. Перейдіть в каталог gamedata\config\text\ukr і за допомогою будь-якого табличного редактора - скажімо, Excel - відкрийте файл stable_task_manager.xml . Пересуньте повзунок у правій частині програми до нижньої частини документа. У осередку на перетині 391 рядка та першого стовпця введіть ключове слово, яке відповідає назві вашого квесту у файлі task_manager.ltx . Після цього в полі навпроти (комірка B-391 ) надрукуйте назву майбутнього завдання.
У полі A-392 ( A - назва стовпця, 392 - порядковий номер рядка) вбийте назву, прописану як параметр description вашої місії, а в області B-392 - текст повідомлення, який буде подано на PDA головного героя. У осередку A-393 напишіть значення характеристики text вашої місії та в полі навпаки наберіть текст завдання для відображення під час розмови між Міченим та роботодавцем. Збережіть зміни та закрийте табличний редактор.
* * *
Ми вивчили ази створення нескладних квестів для STALKER і при цьому розібрали структуру скриптових файлів. Якщо тема створення нових місій для "Сталкера" вам цікава, обов'язково загляньте сюди: [посилання буде пізніше]. Там на вас чекає докладний посібник з розробки складних місій та написання нелінійних діалогів для STALKER. Заздалегідь попереджаємо – матеріал розрахований на модмейкерів зі стажем.