Просмотр
Материал из DoomDev
Страница «
SNDSEQ
»
Перейти к:
навигация
,
поиск
В DOOM имена звуков, предназначенных для различных событий, таких как движение платформ и давящих потолков, «зашиты» в код игры. В ZDoom используется более гибкий подход Hexen, что позволяет определять различные последовательности звуков в блоке SNDSEQ. Как и блоки ANIMDEFS и SNDINFO, SNDSEQ – обычный текст, который можно редактировать любым текстовым редактором. Блоки SNDSEQ также накапливаются, поэтому в вашем WAD-е может содержаться два блока SNDSEQ и оба они будут использоваться. Последовательности звуков могут быть назначены двум различным классам: дверям и платформам. Звуки дверей используются для дверей и движущихся полиобъектов, а звуки платформ используются для всего остального, что включает в себя движущийся сектор. Кроме того, можно создавать последовательности, не принадлежащие ни к одному из этих классов и доступные только с помощью команды ACS '''soundsequence'''. По умолчанию, последовательность звуков, проигрываемая при движении сектора, определяется спецификатором, используемым для активации сектора. Такое поведение можно изменить, размещая один из предметов последовательностей звуков (1400-1411, см. раздел 12 «типы предметов») внутри соответствующего сектора или используя спецификатор '''Sector_ChangeSound''', чтобы изменить последовательность звуков сектора сразу после загрузки уровня. Последовательности звуков определяются при помощи простого, но мощного языка. Каждая последовательность начинается с двоеточия, за которым следует её имя, а заканчивается командой end. Между ними может находиться любое количество команд, управляющих воспроизведением звуков. Ниже приводится общий формат последовательности звуков: :SequenceName Command 1 Command 2 Command 3 ... end Если планируется использовать эту последовательность не только при помощи команды '''soundsequence''', то следует назначить ей как минимум один ID при помощи команды '''door''' или '''platform''' (или обоими). ZDoom понимает следующие команды: * '''play <звук>'''<br>Проигрывает указанный звук * '''playuntildone <звук>'''<br>Проигрывает указанный звук и, прежде чем переходить к следующей команде, ждет его окончания. * '''playtime <звук> <тики>'''<br>Проигрывает указанный звук и, прежде чем переходить к следующей команде, ждет указанное число тиков. *'''playrepeat <звук>'''<br>Постоянно проигрывает указанный звук, пока последовательность звуков не будет остановлена. После этой команды игнорируются все команды, кроме '''stopsound'''. *'''playloop <звук> <тики>'''<br>Многократно проигрывает указанный звук, ожидая прохождения указанного числа тиков, прежде чем начать проигрывание звука заново. Если число тиков больше, чем время проигрывания звука, то эта команда работает в точности как '''playrepeat'''. Как и в случае '''playrepeat''' выполнение этой команды прекращается только при окончании воспроизведения последовательности звуков. *'''delay <тики>'''<br>Прежде чем переходить к следующей команде, ждет указанное число тиков. В течение этого времени воспроизведение текущего звука будет продолжаться, но не будет повторяться, если закончится раньше. *'''delayrand <минимальное> <максимальное>'''<br>Ждет случайное число тиков, прежде чем переходить к следующей команде. *'''volume <уровень>'''<br>Устанавливает уровень громкости, с которым будут проигрываться дальнейшие звуки этой последовательности. Диапазон громкости: 0-100, где 100 по умолчанию. *'''stopsound <звук>'''<br>Указывает, какой звук будет проигрываться, когда последовательность остановится. Эта команда также останавливает дальнейшее выполнение скрипта, поэтому должна быть последней командой перед оператором '''end'''. *'''nostopcutoff'''<br>Используйте эту команду, если нежелательно не только проигрывание какого-либо звука в момент остановки последовательности, но и внезапное прерывание текущего звука. Эта команда и '''stopsound''' взаимно исключающие, поэтому в одной последовательности можно использовать только одну из них. *'''attenuation <тип>'''<br>Указывает, как ослабляются звуки, проигрываемые после этой команды. Ниже описаны возможные типы ослабления ('''idle''' – по умолчанию): **'''normal'''<br>Звук рассматривается как обычный **'''idle'''<br>Как normal, но с более низким приоритетом **'''static'''<br>Громкость звука очень быстро снижается с увеличением расстояния от источника **'''none'''<br>Звук слышен в полную громкость на всем уровне **'''surround'''<br>Звук слышен в полную громкость, но воспроизводится как «мировой» *'''door <ID> …'''<br>Относит этот звук к классу дверных. <ID> – число от 0 до 63 включительно, используемое для идентификации звука при определении полиобъекта или назначении сектору нестандартного звука. Одна последовательность может быть назначена нескольким ID путем указания в этой строке нескольких ID. *'''platform <ID> …'''<br>Относит этот звук к классу платформенных. <ID> – число от 0 до 63 включительно, используемое для идентификации звука при назначении сектору нестандартного звука. Одна последовательность может быть назначена нескольким ID путем указания в этой строке больше одного ID. ID дверей и платформ рассматриваются, как разные, поэтому одна последовательность может быть назначена дверному ID 0, а другая – может быть назначена платформенному ID 0. Какая из них будет проигрываться, зависит от того, какой спецификатор используется, чтобы активировать соответствующий сектор или полиобъект. При движении полиобъектов всегда проигрывается дверная последовательность. азличные спецификаторы '''Door_''' также проигрывают дверные последовательности. Все остальные проигрывают платформенные последовательности. Если нужно, чтобы одна и та же последовательность проигрывалась для конкретного ID независимо от способа активации, необходимо использовать и команду '''door''' и команду '''platform''', указав одинаковые ID. Ниже я привожу пример (не очень полезной) последовательности звуков: :ScaryDoorSound door 0 playuntildone cyber/sight playrepeat cyber/hoof stopsound cyber/death end Этот звук может быть назначен сектору, содержащему предмет 1400 или имеющему спецификатор '''Sector_ChangeSound(tag, 0)''', и будет проигрываться всегда, когда сектор-дверь открывается или закрывается. Когда такая дверь начинает движение, проигрывается звук, издаваемый кибердемоном при обнаружении врага. Когда дверь продолжает движение, проигрывается звук шагов кибердемона, а когда дверь останавливается, проигрывается звук, издаваемый кибердемоном при его гибели. И хотя это не очень полезный звук двери, он демонстрирует, как использовать последовательности звуков.
Шаблон:Zdoom
Шаблон:Zdoomwikibased
Возврат к странице
SNDSEQ
.
Просмотры
Статья
Обсуждение
Просмотр
История
Личные инструменты
Представиться системе
Навигация
Заглавная страница
Сообщество
Текущие события
Свежие правки
Случайная статья
Справка
Поиск
Инструменты
Ссылки сюда
Связанные правки
Загрузить файл
Спецстраницы