Записки мододелу

Доброго всім здоров'я!

Цим постом я відкриваю серію публікацій на тему моддінгу Cities XL. Не поспішайте хапатися за свої шпаломети, бо як матеріалів з моддингу цієї гри українською мовою майже не існує у природі, а комусь дуже треба. Крім того, цей цикл матеріалів, як я сподіваюся, допоможе зрозуміти деякі механізми проектування ігор. Спочатку знання черпаються із зарубіжних матеріалів.

Темою сьогоднішньої статті буде докладний аналіз механізму модів у грі. А зокрема, що собою являє патч-мод.

Отже, розберемося, що є патч. Файл патча-мода для гри Cities XL є одним з малопоширених досить специфічних форматів архіву - MCPK. Простіше кажучи, свій ZIP, тільки з преферансом та блудницями. Усередині себе патч містить папку data та деякий вміст у ній.

Будь-який тлумачний лінуксоїд знає, що таке монтування. Та й користувачі вікон теж знають не з чуток, що таке образ диска. По суті файл, який ми згодовуємо спеціальною програмою, яка імітує компакт-диск, вставлений у привід. З патчами CXL приблизно та сама історія. Під час запуску гра по черзі переглядає вміст певної папки (в даному випадку папка Paks гри) і монтує кожен знайдений файл PATCH до своєї папки data. Ось чому патч обов'язково має містити цю папку.

У випадку, якщо запакований у патч файл має ім'я вже змонтованого, запакований файл перезаписує вже існуючий. У такий спосіб створюються так звані фікси. Замислювалися чому деякі патчі починаються з літери «Z»? Саме тому, що ці файли, завантажившись наперед останніми, перезапишуть необхідні файли в будь-якому випадку. Цеіноді створює конфлікти між патчами. Тому іноді в інструкціях по встановленню того чи іншого мода пишуть, що необхідно видалити такі патчі. До речі, зазвичай саме з горезвісною літерою «Z».

Не важливо, як називається файл. Головне, щоб він не містив жодних інших символів, окрім латиниці, цифр та знака підкреслення. Інакше гра може просто не вмонтувати ваш патчик. А в найгіршому випадку може і вилетіти з помилкою. Ну, не люблять там за кордоном кирилицю. Хоча в деяких патчах є навіть китайська, я б таки не став ризикувати.

Що може бути в патчі?

Структура папки data досить велика. На практиці для модів використовуються небагато папок. Наведу тільки ті, які я хоч раз бачив у модах. За даними одного з офіційних джерел.

interface- інтерфейсні елементи interfacecfg - конфігурації. Файли формату XML interfaceddstexture — іконки. Файли формату DDS interfacetexture — текстури. Файли з розширенням PNG, TGA, JPG

localization- локалізація (мови). Файли з папками з іменами, що відповідають двозначній сигнатурі мови, з розширеннями, що відповідають тій же сигнатурі

У модах на будівлі (які додають нові будівлі в гру) зазвичай використовуються тільки: design/buildings design/layout gfx/building interface/ddstexture localization

Загальний алгоритм створення моди на будинок виглядає так:

  1. Створюємо 3D-модельку. Або тиримо з 3D-Warehouse, або самі малюємо. Не суть. Далі обробляємо до кондиції готового файлу SGBIN. Не забуваймо про обробку текстур.
  2. Створюємо клас модельки. Для надійності краще робити на основі існуючих. Тупо копіюємо готовий клас і змінюємо його вміст, як нам треба.
  3. Створюємо, якщоПотрібно layout. Взагалі краще створити у будь-якому випадку. На всякого пожежника, як кажуть.
  4. Скріншотимо нашу 3D-модельку та створюємо на основі скріншоту іконку модельки. Формат DDS, 128 на 128 пікселів, 32 біти кольоровості. Для цього, до речі, є утилітка png2dds, що дозволяє конвертувати готові файли PNG у формат DDS.
  5. Створюємо локалізацію хоча б для англійської, французької та української мов.
  6. Утиліткою PackUnPack пакуємо наш патчик, вказуючи як вихідну папку папку data проекту.
  7. Публікуємо на сайті XLNation на радість іншим архітекторам.

До речі, як не прикро, локалізацію часто нехтують.

Пара слів про формати

Формат WATER - описово-підсумковий формат для опису води, який дозволяє пов'язати з певним типом водної поверхні певну текстуру.

Файли локалізації досить прості. По суті це текстові файли певного виду в кодуванні ANSI (UCS-2 Little Endian), імена яких повинні збігатися з іменами моделей, що перекладаються, і мати розширення, що відповідає двозначній сигнатурі мови. Усередині файлів міститься приблизно таке:

Де fooID, fooIDL, fooIDD - ідентифікатори мовних рядків, "bla-bla", "bla-bla-bla" та "My description" - це власне рядки. Ідентифікатори повинні підкорятися правилам: — Починається з латинської літери — Містить лише латинку, цифри та знак підкреслення — Закінчується на латинську літеру або цифру Тільки забігаючи вперед, скажу, що ідентифікатори рядків використовуються теги CLASS-файлів, що передуються амперсандом.

Формат SPT — можливо, не те, що можна було б подумати. Є підозра, що це специфічний векторний формат або спрайт.

Про інші формати можна знайти інформацію вІнтернет.

Назва файлів усередині папок повинна (з міркувань обережності) підкорятися досить простим правилам:

— Починається з латинської літери — Містить лише латинку, цифри та знак підкреслення — Закінчується на латинську літеру або цифру