Итак, допустим все мы хорошо знаем как в Fallout 2 создавать
предметы. В частности, оружие. Но давайте говорить откровенно, создание
нового оружия - это не только создание новой графики. В лучшем случае
это ещё и его озвучивание. Ведь каждому виду оружия должен
соответствовать его уникальный звук (выстрела, перезарядки и т.д.) Об
том как это сделать и пойдёт речь в данной статье.
Практическая часть
Что нам для этого понадобится:
1. Программа "acm2wav" (на сайте в разделе файлы)
2. Программа "regsnd" (на сайте в разделе файлы)
3. Любой распаковщик Dat файлов
4. Любой 16-ый редактор (к примеру WinHex или любой другой)
Для начала немного теории:
Поговорим о самых важных звуках применимых к оружию в Fallout2. Это два
звука одиночных выстрела, два звука выстрела очередью и два звука
перезарядки что в целом составляют единый набор звуков для конкретного
оружия (есть и другие звуки - к примеру, звук при попытке выстрела при
пустом магазине). Для одного оружия набор звуков (6 штук - 2 одиночный,
2 очередь и 2 перезарядка) может быть только один. Другое дело, что
этот набор звуков может применяться к разному оружию.
Для конкретной идентификации набора звуков ему присваивается Sound ID,
который потом и применяется. Следует отметить, что в определённом
наборе может отсутствовать какой-нибудь вид звука (выстрел очередью,
перезарядка)
Все звуки находятся в папке "sound\sfx\". Имя же файла со звуком зависит от его типа (выстрел, перезарядка).
Структура имени такова:
Первые два символа в имени означают тип звука.
WA - выстрел
WR - перезарядка
Третий символ означает Sound ID набора звуков применяемый в протофайле оружия (идентификатор звука, представляющий
собой однобайтовое число, которое в записи имени файла выглядит как один символ
из таблицы ASCII) В игре уже задействованы значения, представленные символами: '0-9', 'a-z', а также '!', '#', '$', '@'
Четвёртый символ зависит от типа звука. Для выстрела справедливо:
1 - одиночный выстрел
2 - очередь
для перезарядки возможны x или 1. Мы будем рассматривать стандартный вариант с 1 в имени.
Далее в имени идут три икса (xxx) за ними номер звука (в начале говорилось, что всех звуков всегда по два)
С теорией всё. Приступаем к практике.
Допустим, мы захотели
перенести определённое оружие из Fallout Tactics. Мы успешно создали в
Fallout2 нужный предмет с нужной графикой и теперь нам предстоит
перенести его озвучку.
Допустим это оружие - Spasm Neuro-Disruptor. Соответственно мы взяли из
Fallout Tactics следующие файлы:
1.spasmreload.wav
2.spasmsingle1.wav
3.spasmsingle2.wav
4.выстрел очередью отсутствует
Договоримся, что мы решили добавить полностью новый набор звуков в Fallout2 (с новым Sound ID).
Этап 1
Берём любой Sound ID, который не используется в Фолле. Исключая уже задействованные возмём к примеру значение 0x25 - символ %
При помощи программы SND2ACM создаём из wav файлы формата acm (для
каждого файла программа SND2ACM показывает количество сэмплов (Input
type: WAV "XXXXX" samples) Запомните это значение). Далее
переименовываем полученные:
spasmsingle1.acm в wa%1xxx1.acm (т.к. одиночный выстрел это WA; Sound ID - %)
spasmsingle2.acm в wa%1xxx2.acm (т.к. одиночный выстрел это WA; Sound ID - %)
spasmreload.acm в wr%1xxx1.acm (т.к. перезарядка это WR; Sound ID - %)
Этап 2
Поместим созданные acm файлы в нужную папку (sound\sfx\) Туда же при помощи любого распаковщика dat поместим файл SNDLIST.LST
Теперь нам нужно прописать наши файлы со звуками в SNDLIST.LST
Каждый файл сдесь имеет следующий вид:
-------------------------------------------------------------
Имя acm
Размер блока распакованных данных
реальный размер файла acm
номер (с шагом 2)
-------------------------------------------------------------
!!!Важно!!! Описание файлов в SNDLIST.LST отсортировано в
порядке возрастания. Если вы не соблюдёте последовательность звук в
игре не будет проигрываться!!!
Итак, учитывая предыдущее замечание начинаем прописывать все три
файла. Это можно сделать как ручным способом так и автоматически
(рекомендуется).
Для автоматической регистрации всех файлов в SNDLIST.LST необходимо
поместить созданные файлы acm в папку со звуками (sound\sfx\), туда же
нужно скопировать программу
regsnd (regsnd.exe).Теперь остаётся только запустить её. С регистрацией
всё. Можно переходить к этапу 3. Ну а для параноиков вроде меня :)
рассмотрим вариант ручной регистрации файлов.
Рассмотрим на одном примере.
Пропишем файл wa%1xxx1.acm
Найдём место куда следует вписать нужный файл. Очевидно, что это после WA$2XXX2.ACM и перед WA01XXX1.ACM
Приведём кусок файла:
--------------------------------------------------------------
WA$2XXX1.ACM
69220
16661
1912
WA$2XXX2.ACM
67372
16324
1914
WA01XXX1.ACM
39988
8476
1916
WA01XXX2.ACM
36170
8051
1918
--------------------------------------------------------------
В результате внесения нашего файла мы получим следующее:
--------------------------------------------------------------
WA$2XXX1.ACM
69220
16661
1912
WA$2XXX2.ACM
67372
16324
1914
wa%1xxx1.acm
64516
15988
1916
WA01XXX1.ACM
39988
8476
1916
WA01XXX2.ACM
36170
8051
1918
--------------------------------------------------------------
Пустых строк в файле нет. Сделано для наглядности!!!
Рассмотрим подробнее. Ну wa%1xxx1.acm - понятно, это имя файла.
15988 - это размер acm файла(wa%1xxx1.acm).
Чтобы получить 64516 (Размер блока распакованных данных) необходимо выполнить следующее:
Полученное для каждого файла количество сэмплов умножте на 2(т.к. 1
сэмпл - 16 бит) Для файла wa%1xxx1.acm количество сэмплов 32258, а
значит Размер блока распакованных данных равен 64516
А дальше заметим, что т.к. мы вставили наш файл в середину SNDLIST.LST
мы тем самым сбили последовательность номеров (последнее поле). Теперь
нам вручную необходимо это исправить, а именно увеличить номера всех
записей, которые следуют после созданной нами на 2 (т.к. нумерация идёт
с "шагом 2" :)
Т.е. наш файл станет 1916, следующий 1918 и т.д.
И последнее.
В самом начале SNDLIST.LST идёт число, соответствующее количеству acm
файлов. При каждом новом добавлении это число надо увеличивать. Ну вот
теперь наш файл прописан.
Тоже самое надо проделать с оставшимися двумя файлами.
Этап 3
Итак, все файлы уже подготовлены (присутствуют в фолле
и определяются им). Теперь нам следует привязать полученный звук к
конкретном оружию.
Открываем маппер от BIS скажите вы... и будете глубоко неправы. Дело в
том, что маппер не будет видеть вновь созданный нами новый набор
звуков. Вернее не будет видеть нового имени в списке. Но будет всё
видеть, если мы пропишем имя вручную.
Для этого откроем любым 16-ым редактором нужный нам прототип оружия. Допустим 00000011.pro
По смещению 0x79 укажем SoundID нашего оружия - 0x25 (т.е. '%' в шестнадцатеричном
представлении).
На этом всё. Смотрите, пробуйте. В случае неприятностей - пишите.
Основная проблема, при которой звуковые файлы не будут проигрываться -
это ошибки при ручном прописывании файлов (неверный размер или неверная
последовательность (сортировка))