Создание лиц персонажей. Часть 1
Если вы решили вставить новое лицо или целую галерею лиц в ресурсы JA2, то запаситесь терпением работа достаточно муторная. Во-первых, вы должны владеть навыками работы с графикой. Во-вторых, определитесь, кого вы будете менять. Заменить можно лицо любого персонажа, но технология замены зависит от того, кем является этот персонаж: чаром, наемником АИМа или МЕРКа, нанимаемым (RPC) или ненанимаемым (NPC). Ну и запаситесь необходимыми инструментами для работы.
Софт, требуемый для работы
Обязательно:
- Adobe Photoshop без комментариев, версия любая
- STI-Edit [582 Kb] редактор sti-файлов
- ProFileEdit [360 Kb] редактор профилей персонажей
Опционально:
- FaceGen Modeller моделлер и аниматор лиц, лежит на
FaceGen.com, лекарство ищите в интернете.
- SLF manager [266 Kb] менеджер slf-файлов (ресурсов) JA.
Структура JA2-ресурсов, содержащих лица персонажей
Все лица персонажей, задействованных в игре, находятся в файле /Data/FACES.SLF
(здесь и далее все отсчеты путей идут от корня игры). Распаковать и вытащить их можно SLF-менеджером ресурсов, а можно и не вытаскивать, если вы собираетесь сделать своего перса Создайте директорию /Data/FACES
, если у вас ее еще нет. Внутри нее создайте три директории: 33face
, 65face
и bigfaces
. Эта иерархия эмулирует иерархию файла FACES.SLF, который является просто архивом. Sti-файлы всех лиц имеют тот же номер, что и номер профиля перса в Prof.dat
, который можно смотреть и редактировать редактором профилей. Некоторые файлы имеют префикс «B
», о котором ниже.
Содержание и назначение этих директорий следующее:
/Data/FACES
Сюда кладутся все sti-файлы с лицами чаров, наемников АИМа-МЕРКа и нанимаемых персонажей (далее RPC), которые отображаются в тактик-интерфейсе, инвентаре и лаптопе. Размер этих лиц 48 × 43, название файла XX.sti, где ХХ номер профиля перса. Например, 68.sti файл с лицом Игги.
Здесь же находятся sti-файлы с префиксом «B
», которые отображаются в диалогах, т.е. содержат лица RPC и ненанимаемых персонажей (далее NPC). Размер этих лиц 90 × 100, название файла BXX.sti, где ХХ номер профиля перса. Например, B68.sti файл с лицом Игги, которое показывается при беседе с ним, пока он не нанят.
Оба типа вышеописанных файлов содержат анимацию глаз и губ персонажей (если она вам нужна ).
/Data/FACES/33face
Здесь располагаются файлы-ноготки с лицами чаров, наемников АИМа-МЕРКа и RPC, которые вы можете видеть в интерфейсе торговцев. Размер этих лиц 15 × 14, название файла так же XX.sti, как и в предыдущих случаях, т.е. отличие только в размере. Анимация в этих стишках не нужна, хотя и предусмотрена форматом (об этом отдельно ниже).
/Data/FACES/65face
В этой директории располагаются файлы с лицами чаров, наемников АИМа-МЕРКа и RPC, которые отображаются в интерфейсе расстановки команды при заходе в сектор, занятый врагом. Размер этих лиц 32 × 27, название файла так же XX.sti, как и в предыдущих случаях, т.е. отличие только в размере. Анимация в этих стишках тоже не нужна.
/Data/FACES/bigfaces
Здесь находятся однокадровые sti-файлы с лицами чаров, наемников АИМа-МЕРКа и RPC, которые можно видеть при выборе лица своему герою в интерфейсе IMP или в правой части статистики лаптопа. Размер этих лиц 106 × 122, название файла так же XX.sti, как и в предыдущих случаях.
Для удобства восприятия и работы, все вышеописанное сведено в единую таблицу:
Директория
| Имя файла | Размер | Анимация | Чар | АИМ-МЕРК | RPC | NPC |
/FACES | xx.sti | 48 × 43 | + | + | + | + | |
Bxx.sti | 90 × 100 | + | | | + | + |
/FACES/33face | xx.sti | 15 × 14 | | + | + | + | |
/FACES/65face | xx.sti | 32 × 27 | | + | + | + | |
/FACES/bigfaces | xx.sti | 106 × 122 | | + | + | + | |
Создание лица с анимированными глазами и губами
Для начала рассмотрим общую технологию создания анимированного лица нового персонажа, на примере лица для ненанимаемого непися, как наиболее простой и распространенный случай. Формат sti-файла с анимированным лицом состоит из 8-и кадров, в которых по номерам располагаются следующие фазы:
- 0 исходное изображение лица
- 1-4 изображение глаз
- 1 полностью закрытые глаза
- 2 наполовину прикрытые глаза
- 3 глаза открыты, брови нахмурены
- 3 глаза открыты, брови подняты
- 5-7 изображение губ
- 5 рот приоткрыт в звуке «И»
- 6 рот приоткрыт в звуке «А»
- 7 рот приоткрыт в звуке «У»
Существует два способа сделать анимацию:
- Взять готовое фото или рисунок нового персонажа и нарисовать соответствующие фазы руками в фотошопе.
- Сгенерировать лицо персонажа в фейс-моделлере, например в
FaceGen Modeller
, анимировать его там, экспортировать фазы и довести их до ума в фотошопе.
Оба способа имеют свои достоинства и недостатки и зависят от ваших целей и способностей. В мою задачу не входит обучение рисованию в фотошопе, равно как и работе в
FaceGen, поэтому будем считать, что вышеуказанные фазы у вас уже есть
Главная проблема, с которой сталкиваются те, кто пытается поставить в игру новое лицо, это его сюрреалистическое отображение, когда во время разговора глаза персонажа начинают наезжать на уши, а губы на нос. Вот с этой проблемой мы и будем бороться.
Для начала, сложите все восемь картинок с имеющимися фазами анимации в один PSD-файл, каждую в отдельный слой и для удобства пронумеруйте слои по номерам кадров sti-файла от 0 до 7 (как описано выше). Затем, чтобы не работать с исходником, он пригодится для создания других типоразмеров, сделайте дубль этого окна (Image -> Duplicate -> Ok), отресайзите и обрежьте изображение в нужный размер, например 90 × 100, если вы готовите «B»-файл для диалогов. Затем выделите «блок» с глазами, сделайте инверт выделения (Ctrl+Shift+i) и переключаясь между слоями, удалите выделенное изображение лица вокруг блока с глазами на слоях 1-4. Аналогичную операцию проделайте на слоях 5-7 с губами. У вас должно получиться исходное лицо нужных габаритов на нулевом слое, четыре совмещенных по координатам блока с глазами на слоях 1-4 и три аналогичных блока с губами на слоях 5-7. Например так, как показано на рисунке ниже (нулевой слой отключен, окно увеличено для наглядности и точности определения координат).
Следующим этапом идет определение X-Y
координат смещения изображения глаз и губ
для их указания в профиле создаваемого
перса. Смещение верхнего левого угла блоков
глаз и губ от верхнего левого угла
изображения лица и даст искомые координаты.
На рисунке показано определение координат
для глаз. Их искомое значение будет X=19, Y=28.
Аналогично определяются координаты
смещения губ. Запишите полученные значения
координат глаз и губ, чтобы не забыть, они
понадобятся для внесения в профайл.
Теперь надо подготовить кадры для sti-файла. Для этого создайте новое окно достаточных размеров, чтобы в него поместилось исходное лицо из нулевого слоя предыдущего окна и рядом с ним все блоки глаз и губ последовательно по слоям (будущим кадрам). Сложите их в это окно и объедините в один слой. Пустое место не занятое изображением или залейте каким-нибудь отсутствующим в изображении цветом или оставьте прозрачным (не имеет особого значение). У вас получится окно, в котором первым будет идти изображение исходного лица, затем блок глаз для первого кадра, потом для второго и т.д., включая блоки с губами. Индексируйте это общее изображение лица и всех блоков, и сохраните получившуюся палитру в отдельный файл, как это делается, подробно описано в статье с описанием технологии тайлобилдинга. У вас должна получиться примерно следующая картинка:
Теперь открываем редактор sti-файлов, нажимаем на кнопку «New» и грузим в него сохраненную палитру.
Возвращаемся в фотошоп, переключаем окно с подготовленными кадрами в режим RGB и удаляем заливку вокруг изображений лица и блоков с глазами и губами. Затем копируем исходное лицо и вставляем его в нулевой кадр sti-файла, создаем новый кадр и копируем в него первый блок с глазами, затем последовательно повторяем с каждым из блоков, включая блоки с губами. В sti-редакторе должно появится 8 кадров (0-7). Если вы все сделали правильно, то я вас поздравляю, sti-файл готов, запишите его в соответствующую директорию. Например, если вы делали файл с анимацией непися для окна диалогов, то сохраните его в корень /FILES
под именем Bxx.sti
, где xx соответствующий номер этого непися в профдате. Теперь откройте профдат в редакторе профиля, найдите в списке нужного непися и на закладке «Прочее» пропишите те координаты, которые были вами получены на этапе определения координат. Начните новую игру, найдите этого непися и наслаждайтесь полученным результатом .
Создание лиц наемников АИМа-МЕРКа
Это более сложный процесс, по сравнению с вышеописанным. Если посмотреть таблицу FACES-ресурсов, то из нее видно, что для нового наемника АИМа-МЕРКа потребуется сделать четыре sti-файла.
Основной файл с анимированными глазами и губами делается так же, как и для NPC, только его размер должен быть 48 × 43. Его надо поместить в корень директории /FACES
. Технологию изготовления см. выше, подробнее мне сказать тут нечего, только не забудьте прописать получившиеся координаты глаз и губ в профиль наемника.
Формат двух файлов для фолдеров /FACES/33face
и /FACES/65face
такой же восьмикадровый sti-файл, но анимации глаз и губ в нем делать не имеет смысла, т.к. она в игре не отображается. Поэтому для нулевого кадра готовится изображение лица, отресайзенное до нужного размера:
- 15 × 14 для
/FACES/33face
- 32 × 27 для
/FACES/65face
А для кадров 1-7 пустые блоки залитые фоновым цветом. Их размер не критичен, но на всякий случай желательно, чтобы блоки для глаз и
блоки для губ были одного размера. Дабы не морочить себе голову, сделайте их по пикселу . Затем идет индексация и покадровое копирование в sti-редактор так, как описано выше. Не забудьте указать в sti-редакторе фоновый цвет, чтобы блоки глаз и губ не были видны.
Четвертый файл размещается в папке /FACES/bigfaces
,
его габариты 106 × 122, формат -
однокадровая стишка без анимации. Никаких
хитростей с ним нет, надо просто
отресайзить картинку в размер,
индексировать ее, скопировать в sti-редактор,
как описано выше и сохранить готовый файл.
Один совет: в качестве заднего фона
положите за портрет какой-нибудь пейзаж,
характерный для этого персонажа, только не
очень пестрый, чтобы он не оттянул на себя
много цветов из палитры.
На этом все! Начните новую игру, идете в
агентство и нанимайте свое творение
Создание лиц нанимаемых персонажей (RPC)
Здесь, как в пословице: «Чем дальше в лес, тем толще партизаны». Я потратил три дня на поиски закономерностей с координатами смещения глаз и губ нанимаемых персонажей тщетно, никакой корреляции на обнаружил, пока не заглянул в исходники. Оказалось, что эти координаты зашиты разработчиками в движок. Таблица этих смещений для каждого RPC представлена справа.
Лирика: Оборвать бы руки по самую шею тому, кто это придумал. И вообще, формат лиц в игре жутко неудобный, спрашивается, зачем создавать отдельные таблицы координат в профиле перса и движке, если sti-файлы могут хранить эти координаты в себе? Гораздо проще было бы написать процедуру по извлечению координатной информации из стишки, как это сделано в тайлсетах, чем заполнять туевы хучи совершенно неинформативных таблиц. А на сколько модерам, в этом случае, бы было проще делать новые лица просто помещаешь стишку в ресурс и она сразу работает, как доктор прописал, безо всякой правки профайла. |
Ну да ладно, спустил пар, продолжим ковыряться с тем, что есть
Раз координаты анимации глаз и губ RPC зашиты в экзешник, то их нельзя поправить в профиле персонажа. Поэтому, при создании своего нанимаемого или сопровождаемого перса, вам придется вырезать блоки глаз и губ таким образом, чтобы их смещение соответствовало табличным, иначе лица будут отображаться, как на картинах Сальвадора Дали.
Это справедливо за одним исключением, если вы делаете мод на сорцах, то можете поправить таблицу координат глаз и губ RPC под свои нужды. В исходниках она находится в Ln#68 файла
/Tactical/Faces.c
Все остальное делается точно также, как в случае с созданием лица наемника АИМа-МЕРКа
Важно! Так же нанимаемый персонаж должен иметь лицо для окна диалогов (местонахождение /Faces , название файла Bxx.sti, размеры картинки 90 × 100), которое будет отображаться пока он вами не нанят или не принят на сопровождение. Технология создания такого лица описана выше и в профайле перса прописываются значение координат глаз и губ именно этого портрета. |
|
|
№ RPC | Имя | Координаты
(X,Y) |
Глаза
|
Губы
|
57
| Мигель | 9, 8 | 8, 24 |
58
| Карлос | 8,
8 | 7, 24 |
59
| Айра | 10, 8 | 8, 26 |
60
| Димитрий | 7,
8 | 7, 26 |
61
| Девин | 6, 7 | 7, 23 |
62
| Robot | 0, 0 | 0, 0 |
63
| Гамос | 8, 7 | 8, 23 |
64
| Рутвен | 8,
8 | 8, 22 |
65
| RPC65 | 0, 0 | 0, 0 |
66
| Динамо | 9,
4 | 7, 22 |
67
| Шенк | 8, 8 | 8, 25 |
68
| Игги | 4,
6 | 5, 22 |
69
| Винс | 8, 9 | 7, 25 |
70
| Конрад | 4,
7 | 5, 25 |
71
| RPC71 | 9, 7 | 8, 22 |
72
| Бешеный | 9,
7 | 9, 25 |
73
| Даррел | 0, 0 | 0, 0 |
74
| Перко | 0,
0 | 0, 0 |
88
| Мария | 9, 3 | 8, 23 |
90
| Джои | 9,
3 | 8, 25 |
97
| Всадник | 11, 7 | 9, 24 |
106
| Фред (ш)* | 9, 5 | 7, 23 |
118
| Джон | 6, 4 | 6, 24 |
119
| Мэри | 12,
4 | 10, 24 |
148
| Мэтт (ш) | 8, 6 | 8, 23 |
156
| Освальд (ш) | 6, 5 | 6, 23 |
157
| Кэльвин (ш) | 13, 7 | 11, 24 |
158 | Карл
(ш) | 9, 7 | 8, 22 |
* | шахтеры,
вот только каким боком они попали в
число RPC? |
|
Создание лица собственного чара
Также, как и в случае с RPC (нанимаемыми персонажами) координаты анимации глаз и губ чара зашиты в игровой движок. Если вы хотите сделать для чара другое лицо, то надо сначала определиться с номером файла, который вы будете замещать и по нему выбрать в таблице координаты, по которым придется разместить глаза и губы вашего нового героя. Все остальное делается также, как в случае с заменой лица нанимаемого персонажа, кроме создания портрета для диалогов.
В названиях файлов с лицами чаров есть одна особенность, все они начинаются с цифры 200 (см. номера под картинками). В профдат координаты смещения глаз и губ чаров не прописываются, движок хранит их внутри (полный дурдом!). В сорцах эта информация находится в файле
/Laptop/IMP Confirm.c , в четырех массивах, начиная с Ln#41.
Мужчины |
#200 |
#201 |
#202 |
#203 |
#204 |
#205 |
#206 |
#207 |
Женщины |
#208 |
#209 |
#210 |
#211 |
#212 |
#213 |
#214 |
#215 |
| |
№ Чара | Пол | Координаты (X,Y) |
Глаза | Губы |
200 | М | 8, 5 | 8, 21
| 201 | М | 9, 4 | 9, 23
| 202 | М | 8, 5 | 7, 24
| 203 | М | 6, 6 | 7, 25
| 204 | М | 13, 5 | 11, 23
| 205 | М | 11, 5 | 10, 24
| 206 | М | 8, 4 | 8, 24
| 207 | М | 8, 4 | 8, 24
| 208 | Ж | 4, 4 | 5, 25
| 209 | Ж | 5, 5 | 6, 24
| 210 | Ж | 7, 5 | 7, 24
| 211 | Ж | 5, 7 | 6, 26
| 212 | Ж | 7, 6 | 7, 24
| 213 | Ж | 11, 5 | 9, 23
| 214 | Ж | 8, 5 | 7, 24
| 215 | Ж | 5, 6 | 5, 26 |
|
Однако, с координатами реписей и чаров, зашитыми в движок, не все так плохо, как может показаться на первый взгляд.
Во второй части статьи описаны способы, с помощью которых можно исправить или обойти эту «прошивку».
Если у вас появились вопросы по статье, то их лучше задавать на форуме, в ветке по редактированию JA2, бываю там регулярно.
Удачи,
VM
aka «Генеральный застройщик пустоши»