Теорія модобудування
Матеріал із Mod Wiki.
Зміст
Про модифікацію гри
Вихід довгоочікуваної гри ознаменувався скандалами та обуренням громадськості великою кількістю прибраного з гри.
На тлі вирізаного контенту та величезної кількості невідповідностей гри обіцянкам розробників почали формуватись моддерські команди. На щастя розробники залишили можливість простого модифікування гри. Завдяки розпакувальнику ігрових архівів ми отримали повний доступ до ресурсів гри. Понад те, розробники залишили у фінальному білді 2947 (і білдах після нього) вищий пріоритет розпакованої папки gamedata.
Отже, що ми маємо?
Звуки у грі записані у форматі ogg. Хочу відзначити, що OGG Vorbis є визнаним ігровим форматом звуку.
Текстури у грі мають формат DDS (Direct Draw Surface). Для їх редагування рекомендую Adobe Photoshop CS 8.0 та NVidia Developer's Photoshop DDS Plugins (завантажити його можна тут).
При цьому врахуйте таке:
- Ви можете використовувати сторонні конвертери. До таких належить Lister Total Commander, який вміє зберігати та переглядати DDS текстури в інших форматах. Це розширене складання Total Commander'a (платний файловий менеджер Крістіана Гіслера) версії 6.55. Придбати його можна тут.
- Також Ви можете скористатися спеціальними DDS конвертером. Але при конвертації може зникнути альфа-канал текстури, він дуже важливий для гри. Тому рекомендую використовувати Photoshop CS 8.0 з плагінами.
Увага! Після роботи у Photoshop над тестурами, при збереженні не забудьте відзначити пункт "Alpha Channels" і у вікні (після натискання на кнопку "Зберегти"), виберіть режим "DXT5 ARGB 8 bpp interpolated alpha".
Також впапці з грою є додаткові текстури з приписаним наприкінці імені файлу словом "bump". Це бамп-карти текстур, що використовуються для надання моделі деякої об'ємності, яку ще називають псевдорельєфністю.
Бамп-карти текстур використовуються тільки при грі на другому рендері (динамічний висвітлення, тобто DirectX9-рендер.
Наступний важливий компонент гри – OGF моделі.
Моделі розташовані в папці meshes.
Вони містять у собі інформацію про матеріал, анімацію та саму модель предмета. Змінити текстуру моделі можна за допомогою WinHEX - шлях до текстури знаходиться в перших рядках файлу.
При використанні OGF Viewer необхідно задати шлях до текстур у конфігураційному файлі, що лежить у папці з програмою.
Наступним компонентом гри є ігрові рівні. Рівні можна розділити на мультиплеєрні та синглові.
MP-рівні відрізняються від рівнів одиночної гри відсутністю деяких компонентів та дещо іншою структурою/набором файлів. Наприклад, на мультиплеєрних рівнях відсутня координатна сітка для A-Life.
Перед релізом бета-версії SDK (Software Development Kit від GSC Game World) я кілька тижнів тестував його та зробив кілька сумних висновків.
По-перше, за допомогою MP-SDK неможливо не лише редагувати, а й навіть переглядати вже відкомпільовані рівні. Справа в тому, що MP-SDK вимагає вихідних рівнів. До того ж, настав час припиняти мріяти про SDK і вигукувати: "Дайте мені СДК я вам нову зброю зроблю і двигун поміняю." MP-SDK - лише мапер для мультиплеера. Можливо, буде маппер і для синглової версії гри, але вихідних рівнів від GSC Game World навіть і чекати не варто.
Однак, не варто забувати, що в мережу було викладено лише бета-версію цього пакету.Можливо, до появи релізу додадуться нові функції та інструменти.
Рівні із синглової версії гри можна портувати під мультиплеєр. Алгоритм дій:
У грі широко використовуються скрипти. Деякі з них - тестові і являють собою сміття, залишене розробниками, але ніколи не можна точно знати, де використовується скрипт.
У скриптах використовується мова Lua. Мова не дуже складна, за допомогою неї можна багато робити, у тому числі й спаунити (від англ. "Spawn" - розміщувати на карті) об'єкти.
До того ж скрипти можна викликати в spawn-файлі, про нього докладніше буде розказано нижче.
Інша, важлива частина гри – конфігураційні файли. Вони відкриваються звичайним "Блокнотом" і є набором параметрів та їх значень.
У грі є конфігураційні файли істот, мультиплеєра, погоди, зброї, об'єктів, геймплея, моделей, конфігураційні скрипти та конфігурація інтерфейсу.
Також існує багато інших конфігураційних файлів.
Про деяких із них докладніше. Конфігурації істот - одним із найважливіших конфігураційних файлів є actor.ltx. У ньому задані параметри актора – тобто. головного героя гри.
На його прикладі розглянемо структуру файлу конфігурації.
[Actor] - приклад entity. Конфігурацію актора викликають за допомогою назви entity. У разі - actor. В інших файлах конфігурації ми можемо знайти приклад посилання на entity. Наприклад: [burer_arena]: m_burer_e.
У разі істота " burer_arena " посилається на істота " m_burer_e " і його прототипом. Також можуть бути посилання на entity, що позначає набір параметрів. Наприклад: damage = m_burer_damage.
Коментарі в ltx файлах починаються із символу ";". Все, що розташоване за цим знаком, грою невраховується.
Також дуже цікава система про інклудів (включень).
Інклуд позначається рядком "#include "ім'я_файлу.ltx""
Пам'ятайте - коли ви створюєте новий конфігураційний файл - не забудьте вставити його методом інклуда в загальний конфігураційний список в system.ltx.
Останнє, про що йтиметься - папка spawns.
У ній розміщено файл all.spawn. У цьому файлі позначені майже всі динамічні об'єкти, які містяться в ігровій зоні. Це як монстри та сталкери, так і приймач "Обрій" на столі у торговця, і навіть ящик поруч із блокпостом.
Формат спаун-файлу довго знався на фахівцях і завдяки товаришеві Zeed'у розібраний. І їм була написана спеціальна програма xrSpawner для спауна динамічних об'єктів.
Додатково
Крім файлів спауна в директорії gamedata також є папка з шейдерами, папка з анімаціями камери, папка з деякими файлами A-life і кілька файлів у форматі xr.