Сим постом я открываю серию публикаций на тему моддинга игры Cities XL. Не спешите хвататься за свои шпаломёты, ибо как материалов по моддингу данной игры на русском языке почти не существует в природе, а кому-то очень надо. Кроме того, данный цикл материалов, как я надеюсь, поможет понять некоторые механизмы проектирования игр. Изначально знания черпаются из зарубежных материалов.
Возможно кому-то изложенное покажется «кэпством». Опять таки же воздержитесь, пожалуйста, от подобных комментариев. То, что очевидно для Вас, явится открытием для кого-то другого. Если у Вас есть, чем дополнить материал, милости прошу в комментарии.
Темой сегодняшней статьи будет подробный разбор механизма модов в игре. А в частности, что из себя представляет патч-мод.
Общее
Итак, разберёмся, что есть патч. Файл патча-мода для игры Cities XL представляет собой один из малораспространённых довольно специфичных форматов архива — MCPK. Проще говоря, свой ZIP, только с преферансом и блудницами. Внутри себя патч содержит папку data и некоторое содержимое в ней.
Любой толковый линуксоид знает, что такое монтирование. Да и пользователи «окошек» тоже знают не понаслышке, что такое образ диска. В сущности файл, который мы скармливаем специальной программке, которая как бы имитирует компакт-диск, вставленный в привод. С патчами CXL примерно та же история. Во время запуска игра по очереди просматривает содержимое некоторой папки (в данном случае папка Paks игры) и монтирует каждый найденный PATCH-файл к своей папке data. Вот почему патч обязательно должен содержать эту папку.
В случае, если запакованный в патч файл имеет имя уже смонтированного, запакованный файл как бы перезаписывает уже существующий. Таким образом создаются так называемые фиксы. Задумывались, почему некоторые патчи начинаются с буквы «Z»? Именно потому, что эти файлы, загрузившись заведомо последними, перезапишут необходимые файлы в любом случае. Это иногда создаёт конфликты между патчами. Поэтому иногда в инструкциях по установке того или иного мода пишут, что необходимо удалить такие-то и такие-то патчи. Кстати, обычно именно с пресловутой буковкой «Z».
Не важно, как называется ваш файл. Главное, чтобы он не содержал никаких других символов, кроме латиницы, цифр и знака подчёркивания. Иначе игра может попросту не примонтировать ваш патчик. А в худшем случае может и вылететь с ошибкой. Ну, не любят там за рубежом кириллицу. Хотя в некоторых патчах есть даже китайский, я бы таки не стал рисковать.
Что может содержаться в патче?
Структура папки data довольно велика. На практике для модов используются немногие папки. Приведу только те, которые я хотя бы раз видел в модах. По данным одного из официальных источников.
design — логика игры. В основном файлы формата CLASS
design\actor — анимированные объекты игры (люди, машинки). Файлы формата ACTOR
design\buildings — файлы классов зданий
design\decoration\furniture — фурнитура, «украшательства» в игре
design\decoration\furniture_vehicle — машинки
design\decoration\ground — поверхность
design\decoration\tree — деревья
design\defautavatar — аватары. Файлы форматов AVA и BODY
design\layout — описания размещения частей моделей. Файлы форматов LAYOUT
design\massplacementtool — инструменты для массового строительства, например, для дорог
gfx — графика, 3D. В основном файлы формата SGBIN
gfx\animation — анимация. Файлы формата MOTION
gfx\avatar — аватары. Файлы форматов SGBIN, TGA, XML
gfx\building — строения
gfx\character — люди
gfx\furnitures — фурнитура, «украшательства». Файлы форматов SGBIN, SGDUMMIES
gfx\furntituresstreet — фурнитура улиц
gfx\landscape — ландшафт. Файлы с расширением LAND
gfx\landscape\layers — слои ландшафта. Файлы формата PNG
gfx\landscape\materials — материалы ландшафта. Файлы формата XML
gfx\landscape\textures — текстуры ландшафта. Файлы формата PNG
gfx\landscape\water — вода. Файлы формата WATER
gfx\placeholder — плейсхолдеры объектов
gfx\road — дороги
gfx\trees — деревья. Файлы форматов DDS, SPT, PNG, TGA
gfx\vehicle — машинки. Файлы форматов SGBIN, SGDUMMIES
interface — интерфейсные элементы
interface\cfg — конфигурации. Файлы формата XML
interface\ddstexture — иконки. Файлы формата DDS
interface\texture — текстуры. Файлы с расширением PNG, TGA, JPG
localization — локализация (языки). Файлы с в папках с именами, соответствующими двухзначной сигнатуре языка, с расширениями соответствующими той же сигнатуре
В модах на здания (добавляющих новые здания в игру) обычно используются только:
design/buildings
design/layout
gfx/building
interface/ddstexture
localization
Общий алгоритм создания мода на здание выглядит так:
- Создаём 3D-модельку. Либо тырим с 3D-Warehouse, либо сами рисуем. Не суть. Далее обрабатываем до кондиции готового файла SGBIN. Не забываем про обработку текстур.
- Создаём класс модельки. Для надёжности лучше делать на основе уже существующих. Тупо копируем себе готовый класс и изменяем его содержимое, как нам надо.
- Создаём, если надобно layout. Вообще лучше создать в любом случае. На всякий пожарный, как говорится.
- Скриншотим нашу 3D-модельку и создаём на основе скриншота иконку модельки. Формат DDS, 128 на 128 пикселей, 32 бита цветности. Для этого, кстати, есть утилитка png2dds, позволяющая конвертировать готовые PNG-файлы в формат DDS.
- Создаём локализацию хотя бы для Английского, Французского и Русского языков.
- Утилиткой PackUnPack пакуем наш патчик, указывая в качестве исходной папки папку data проекта.
- Публикуем на сайте XLNation на радость прочим архитекторам.
Кстати, как ни обидно, локализацией зачастую пренебрегают.
Пара слов о форматах
Форматы CLASS, LAYOUT, ACTOR — это в сущности XML. Отличие в том, что в теле документа может быть несколько корневых тегов и в тегах зачастую используются символы, недопустимые в обычном XML. Описание буду приводить в следующих статьях.
Формат SGBIN — формат 3D-моделей, имеющих 4 уровня детализации. От самого низкого до самого высокого. Полагаю не нужно объяснять, что есть уровень детализации. SGDUMMIES — судя по всему, вспомогательный формат для элементов моделей. Как работать с данным форматом, будет рассказано в последующих статьях.
Формат WATER — описательно-итоговый формат для описания воды, который позволяет связать с определённым типом водной поверхности определённую текстуру.
Файлы локализации довольно просты. В сущности это текстовые файлы определённого вида в кодировке ANSI (UCS-2 Little Endian), имена которых должны совпадать с именами переводимых моделей и иметь расширение, соответствующее двухзначной сигнатуре языка. Внутри файлов содержится примерно следующее:
#FILE_VERSION 3
#FIELD_ID fooID
bla-bla
#FIELD_ID fooIDL
bla-bla-bla
#FIELD_ID fooIDD
My description
Где fooID, fooIDL, fooIDD — идентификаторы языковых строк, «bla-bla», «bla-bla-bla» и «My description» — это собственно строки. Идентификаторы должны подчиняться правилам:
— Начинается с латинской буквы
— Содержит только латиницу, цифры и знак подчёркивания
— Оканчивается на латинскую букву или цифру
Чуть забегая вперёд, скажу, что идентификаторы строк используются в определённых тегах CLASS-файлов, предваряемые амперсандом.
Формат SPT — возможно не то, что можно было бы подумать. Есть подозрение, что это специфичный векторный формат или же спрайт.
Об остальных форматах можно найти информацию в интернете.
Именование файлов внутри папок должно (из соображений осторожности) подчиняться довольно простым правилам:
— Начинается с латинской буквы
— Содержит только латиницу, цифры и знак подчёркивания
— Оканчивается на латинскую букву или цифру
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий