Данная статья посвящена конвертированию, нередко у модостроителей возникает необходимость вставить в свое творение(мод) какого-либо НПЦ из другой части игры. Эта же необходимость, возникла и у меня при разработке модификации Stronghand (alpha).
Статья разделена на 2 части:
И так начнем.
Главной задачей в этом деле является внешность НПЦ, а главной узнаваемой частью тела НПЦ является его лицо . :)
И хоть в Г1 и Г2а текстуры лиц абсолютно одинаковые, но в скриптологии Gothic I и Gothic II способ задания внешнего вида НПЦ существенно отличается, также же как и измененная нумерация текстур лиц.
Для начала рассмотрим общий формат текстуры, не отличающийся в Gothic I и Gothic II.
Итак, текстура лица представляет собой графический файл с разрешением «256*128», изначально в формате «*.TGA», а впоследствии компилированный в понятный для игры формат «*.TEX» с префиксом »-C» перед расширением файла, но это нам мало интересно. :)
Важнее имя файла текстуры, например: «HUM_HEAD_V0_C0-C.TEX», далее будем рассматривать ИМЯ ТЕКСТУРЫ с нужными нам данными без префикса и расширения, т.е. «HUM_HEAD_V0_C0».
Основная функция Mdl_SetVisualBody, используемая в обеих частях игры, но в Gothic I напрямую, а в Gothic II через дополнительную внешнюю функцию B_SetNpcVisual.
Используя описание Vam’а под редакцией TycoooN’a, это выглядит так:
void Mdl_SetVisualBody (c_npc self, string body, int bodytex, int COLOR, string head, int HTEX, int ttex, int armor);
Установить параметры изображения НПС self, где :
В Г1 в отличие от Г2а ЛИЦО задается двумя числами т.к. ТЕКСТУРА ЛИЦА взаимосвязана с ПАЛИТРОЙ, которая также привязана к ТЕКСТУРЕ ТЕЛА НПЦ, т.е в Г1 у одной ТЕКСТУРЫ ЛИЦА и ТЕКСТУРЫ ТЕЛА должна быть общая ПАЛИТРА.
В Г2а перестали использовать нумерацию ПАЛИТРЫ, переведя все исчисление только на нумерацию ТЕКСТУР, т.е. в Г2а ПАЛИТРА всегда имеет нулевое значение как и ТЕКСТУРА ТЕЛА, поэтому для любой ТЕКСТУРЫ ТЕЛА, независимо от оттенка кожи (ПАЛИТРЫ), можно подставить любую ТЕКСТУРУ ЛИЦА.
Задание внешности в Г1:
Mdl_SetVisualBody (НПЦ, МОДЕЛЬ_ТЕЛА, ТЕКСТУРА_ТЕЛА, ПАЛИТРА, МОДЕЛЬ_ГОЛОВЫ, ТЕКСТУРА_ЛИЦА, ТЕКСТУРА_ЗУБОВ, ДОСПЕХИ);
Задание внешности в Г2а:
B_SetNpcVisual(НПЦ, ПОЛ, МОДЕЛЬ_ГОЛОВЫ, ТЕКСТУРА_ЛИЦА, ТЕКСТУРА_ТЕЛА, ДОСПЕХИ);
Как видно, в Г2а многое было упрощено через внешнюю функцию B_SetNpcVisual, далее ниже представлены примеры задания внешности Торуса в Г1 и Г2а.
Еще ниже представлена ТАБЛИЦА КОНСТАНТ, которые используются в Г2а для задания ТЕКСТУРЫ ЛИЦА, хотя вместо констант можно писать и простые числа.
И в самом низу идут две ТАБЛИЦЫ ПЕРЕКОДИРОВКИ лиц из формата Г1 в Г2а и наоборот.
Пример из Готики 1 (Торус):
Mdl_SetVisualBody (self,"hum_body_Naked0",0,3,"Hum_Head_Fighter", 12,0,GRD_ARMOR_H);
Итак в данном случае у Торуса в Г1 ТЕКСТУРА ЛИЦА имеет номер 12, с ПАЛИТРОЙ номер 3. В таблице перекодировки (Г1 в Г2а) находим, что в Г2а это соответствует текстуре номер 4
Пример из Готики 2 (Торус):
B_SetNpcVisual(self,MALE,"Hum_Head_Fighter",Face_B_Thorus,BodyTex_B,ITAR_Thorus_Addon);
Теперь попробуем перекодировать из формата Г2а в формат Г1.
В Данном случае у Торуса ТЕКСТУРА ЛИЦА имеет константу Face_B_Thorus, что равно 4, если смотреть таблицу констант, (см. пример выше), теперь ищем в таблице перекодировки (Г2а в Г1), соответствующую ТЕКСТУРУ Г2а и получаем для Г1 ТЕКСТУР 12 и ПАЛИТРУ 3. Найдя необходимые текстуры и палитры, дело закончено остается вставить нужное в игру.
Материал составлен и подготовлен Ukur (aka BlackWolf)
© 2008 Mighty DWARF
Проект портала World of Gothic RU. © 2005-2009 marazmus, MaGoth и команда World of Gothic RU.
Копирование материалов сайта разрешено только при явном согласии авторов материалов.
При копировании материалов прямая ссылка на сайт обязательна.