SMS – простое звуковое окружение в маршрутах
Звук в игре – это такая деталь, которую почти никто не заметит, но ее отсутствие заметят все. Поэтому звук является одной из важных составляющих любых игр.
Прежде, чем настраивать простые sms файлы, нужно разобраться с самими звуками.
Обычное звуковое окружение в маршрутах создается звуковыми файлами циклического типа. Звук циклического типа – это такой звук, который может быть проигран подряд бесконечное число раз без звуковых артефактов (то есть звуковая волна в конце звукозаписи нормально/правильно продолжается вначале файла).
Создание циклического звука – процесс достаточно легкий, хотя иногда в некоторых случаях может отнять достаточно большое количество времени. Самый идеальный циклический звук – это звук, который начинается с -128 dB и заканчивается -128 dB, то есть полной тишиной (единица измерения dB всегда переменная). Так можно составлять звуки животных, птиц, какие-то отдельные звуки конкретных объектов (например, пролетающий самолет, сигнал сирены, голоса), то есть одиночные звуки. Однако реализовать звук города, станции, леса, реки, моря и т.д. таким способом не получится.
Программу для обработки можно выбрать любую из профессиональных (Sound Forge, Adobe Audition). В принципе можно работать даже в таких, как FL. Я использую Adobe Audition.
Чем меньше будет файл, тем быстрее он будет загружаться, однако, если файл будет слишком коротким, то какие-то детали звука могут очень сильно подействовать на подсознание играющего, причем негативно. Поэтому важна золотая середина. Для каждого звука следует подбирать свою уникальную длительность.
Вот пример волны звука течения горной реки:
Обратите внимание на начало волны и конец:
Начальная волна лежит в области 0 dB, конечная тоже. Однако этого мало. Важно, чтобы средние значения амплитуд волн в течение 0,3-0,5 секунд в начале и в конце звукозаписи были равными. Другими словами, важно, чтобы средняя громкость в начале и в конце звука были одинаковыми.
Чтобы более наглядно показать, как добиться такого результата, я создам звук леса (источник – старая запись с аудио кассеты). Так как источник довольно паршивого качества, я заодно покажу, как можно очистить звук от шума.
Как видно на шкале времени (в нижней части скриншота), длительность файла составляет более 20 минут. В этом файле достаточно много нужных звуков, однако нам нужен только небольшой участок (выделен в начале звука):
Лучше выделить немного больше, потому что работать со звуком лучше всего в отдельном файле и звук все равно придется урезать.
Файлы должны быть строго определенного формата (Windows PCM, файл с расширением wav). На скриншоте показаны необходимые настройки для звуков, которые нормально проигрываются MSTS (настройки нового файла в Adobe Audition):
Также информацию о свойствах звука можно получить, просмотрев системные свойства звукового файла (на скриншоте показаны свойства звука, которые являются стандартными для MSTS).
После предварительной обработки, в ходе которой я отрезал лишние соседние звуки, я получил следующую волну (это уже новый файл в правильном для игры формате):
Заметьте, что в начале и в конце существует звук. Это шум, который присутствует во всем файле. Его следует удалить. Сделать это довольно легко. Нужно выделить часть этого шума (только шума)
открыть окно удаления шума фона (Reduce Background Noise, на скриншоте выделен красным) и дать «послушать» его программе (Get Profile from Selection):
После получения данных о шуме окно нужно закрыть, затем выделить весь файл и, снова открыв окно Reduce Background Noise, нажать на кнопку OK. В результате шум будет удален из файла (точнее из той области файла, которая была выделена, в данном случае весь файл). Так как у меня источник был записан на аудио кассете и оцифрован очень давно, причем кустарным способом, я обнаружил несколько типов шумов звуке. Вот что у меня получилось после удаления шумов:
Теперь нужно найти повторяющиеся формы волны в начале и в конце для того, чтобы отрезать лишнее:
(начало)
(конец)
Обратите внимание, что выделяемая область в начале файла заканчивается «ударом» (резким увеличением амплитуды) волны, а в конце файла начинается с почти такого же «удара». Выделенные области я удалил, и у меня получилось следующая волна:
Вот и все, звук готов. Иногда могут возникать какие-либо артефакты при циклическом проигрывании (чаще всего резкие щелчки). Возникновение артефактов индивидуально для каждого файла, поэтому могу сказать только одно – нужно, экспериментируя, удалять артефакт путем выбора одинаковых «ударов» волны в начале файла и в конце.
Итак, звуковой файл должен быть в следующем формате: Windows PCM; расширение *.wav; качество звука (или скорость передачи данных) - 352 кб/сек; стерео звук (желательно); размер аудио образца (resolution) 16 бит; частота дискретизации (!) (sample rate) - 11 кГц (11025 Hz).
Итак, звуковые файлы созданы. Теперь их нужно подключить к маршруту.
Дело в том, что для того, чтобы звук работал в маршруте, необходимо создать файл, который описывает параметры загрузки и воспроизведения звукового файла в маршруте. Эти параметры находятся в файлах с расширением .sms.
Самый простой стандартный файл sms выглядит вот так:
Основные параметры: Activation Distance, Deactivation Distance, Volume, Distance_Dec_Past, Distance_Inc_Past, File, CurvePoints.
Activation Distance – дистанция активации звука. Этот параметр указывает расстояние в метрах от источника звука, когда звук загрузится. Deactivation Distance – дистанция деактивации звука. Этот параметр указывает расстояние в метрах от источника звука, когда звук выгрузится (перестанет работать). Volume – уровень громкости, максимальное значение 1. Distance_Dec_Past – этот параметр не должен быть больше Activation Distance, но и не меньше самого большого значения последней точки CurvePoints. Distance_Inc_Past – то же, что и Distance_Dec_Past. File – имя используемого звукового файла в кавычках. CurvePoints – точки кривой громкости звука.
Особое значение имеют точки кривой громкости звука. С помощью этих точек можно создавать для звука нечто вроде Fade-эффекта (уменьшение громкости по мере удаления от источника). Синтаксис CurvePoints довольно прост – указывается количество точек, а далее перечисляются и сами точки, которые определяют громкость на определенном удалении от источника звука. Первая точка всегда должна быть 0.0 1.0, что означает соответственно расстояние и громкость. Последняя точка должна определять нулевую громкость, то есть Х.Х 0.0 (где Х.Х – это расстояние в метрах, немного меньше, чем указанное расстояние в любом из параметров Distance).
Наибольшую реалистичность создают 20 точек с максимального уровня громкости на минимальный с шагом 0.05. Расстояния при этом должны определятся в увеличивающейся на единицу арифметической прогрессии от второй точки (первая всегда 0 метров) к последней. Например, для звука леса я использовал следующую схему точек громкости:
CurvePoints ( 21 0.0 1.0 20.0 0.95 30.0 0.9 41.0 0.85 53.0 0.8 66.0 0.75 80.0 0.7 95.0 0.65 111.0 0.6 128.0 0.55 146.0 0.5 165.0 0.45 185.0 0.4 206.0 0.35 228.0 0.3 251.0 0.25 275.0 0.2 300.0 0.15 326.0 0.1 357.0 0.05 395.0 0.0 )
Заметьте, что вторая точка имеет громкость 0,95 на удалении от источника звука 20 метров. В третьей точка громкость уменьшается на 0,05, а расстояние увеличивается на 10 метров. Во всех остальных точках громкость уменьшается на 0,05. Расстояние каждой точки увеличивается в арифметической прогрессии + 1 к каждому следующему шагу. То есть сначала 10 метров, потом 11, потом 12 и так далее.
Настроенные sms файлы подключаются к маршруту путем редактирования файла ssource.dat, который размещается в корневом директории маршрута, к которому подключаются звуки.
Синтаксис файла ssource.dat крайне прост:
Sound ( Name ( "animals_01_cow_01" ) FileName ( "animals_01_cow_01.sms" ) )
Sound содержит в себе 2 параметра – Name (имя для отображения в Редакторе маршрутов) и FileName (имя файла sms). Для удобства каждый указатель Sound с параметрами помещают на отдельной строке.
В Редакторе маршрутов подключенные файлы размещаются в разделе «Источники звука» (или в "Sound Regions” в английской версии).
Russian Stalker, WST.