night_dragon_on Posted June 9, 2016 Author Share Posted June 9, 2016 Подскажите, за что отвечает параметр playRules (от 0 до 3) в файле sound_notifications.xml ? 'Описание параметров' События могут озвучиваться сразу в момент возникновения или ставиться в очередь. Параметр <playRules>: 0 - событие немедленно отправляется на озвучку, минуя очередь; ошибки загрузки звука из банка игнорируются. 1 - секция очереди, к которой относится событие, очищается и событие кидается в очередь первым (т.е. если в этой секции стояли в очереди другие события, они аннулируются). 2 - событие "вставляется" в начало своей секции очереди. 3 - событие добавляется в конец своей секции очереди. Параметр <timeout>: Задает "задержку" от момента события до его озвучивания. Если от момента возникновения события до того момента, как оно подошло в очереди, прошло больше времени, чем таймаут, звука не будет (игорируется). По умолчанию (если явно не задано) значение =3. Параметр <minTimeBetweenEvent>: Задает минимальное время между двумя одинаковыми событиями. Если времени прошло меньше - второе событие игнорируется и не озвучивается. По умолчанию значение =0, т.е. одинаковые события кидаются в очередь без промежутков. Если playRules 2 или 3, имеет смысл задавать это значение явно, чтобы звуки не накладывались друг на друга. Параметр <shouldBindToPlayer>: До конца не уверен, но насколько разобрался… По умолчанию False. Если он равен True, то звук проигрывается только в том случае, если игрок, который сгенерил это событие, еще "живой" (или жив тот, кому эта команда адресована, если это "адресная" команда типа "следуй за мной" и т.д.). 2 @ Quote Link to comment Short link Share on other sites More sharing options...
nikitka78 Posted June 9, 2016 Share Posted June 9, 2016 (edited) night_dragon_on, СПАСИБО. Теперь ясно, что можно не только внутри банка звук сдвинуть но и внутри самого sound_notifications.xml - это хорошо Edited June 9, 2016 by nikitka78 @ Quote Link to comment Short link Share on other sites More sharing options...
nikitka78 Posted June 10, 2016 Share Posted June 10, 2016 Привет! В каждый soundbank (те что в примерах проекта) добавлен эвент "emptyEvent", ни как не могу догнать, с какой целью или какую роль он выполняет банках ? @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted June 10, 2016 Author Share Posted June 10, 2016 Нужен для правильной заглушки событий при подключении банка, переопределения событий с помощью XVM-ма, на случай если у пользователя будет удален дефолтный банк "xvm.bnk" @ Quote Link to comment Short link Share on other sites More sharing options...
nikitka78 Posted June 10, 2016 Share Posted June 10, 2016 Кто в курсе чем в оригинальной озвучке отличаются события: enemy_killed_by_player ОТ enemy_killed Смысл вроде как один, но события 2 прописано @ Quote Link to comment Short link Share on other sites More sharing options...
EagleB3 Posted June 10, 2016 Share Posted June 10, 2016 Йес! Научился я останавливать проигрывание контейнера! 'Как прекращать воспроизведение музыки из одного контейнера при запуске музыки из другого контейнера' Допустим, нам надо прекратить проигрывание музыки загрузки боя после после начала боя (то есть после возникновения события music_combat).Для этого делаем дабл-клик по эвенту music_combat. Видим, что там уже есть событие (1) Play.Добавляем еще одно действие (action). Клиикаем на кнопку [>>] в строке (2), выбираем в меню Stop и далее StopAll:Если хотим сделать так, чтобы звук не обрывался резко, а плавно затухал, выбираем продолжительность и характер процесса затухания:Осталось установить правильную последовательность звуков - сначала StopAll, и только потом - Play. Просто перетаскиваем действие Play мышкой под событие StopAll: Может быть я что-то делаю идеологически неправильно, но оно реально работает. Теоретически, описанным способом останавливать - музыку ангара при загрузке предбоевой музыки - музыку результатов боя при загрузке музыки ангара Возможно, надо еще останавливать музыку экрана ввода логина/пароля призагрузке ангара. Если редактируемый таким образом эвент уже включен в саундбанк, то я на всякий случай сначала удаляю изменяемый эвент из списка включений в саундбанк, делаю изменения и потом заново затаскиваю эвент в саундбанк. Хотя, возможно, изменение перечня событий и без этого будет учтено при генерации сайндбанка. 'Тонкость в использовании StopPlay' Насколько я понимаю, StopAll распространяется только на УЖЕ ИГРАЮЩИЕ треки из этого же самого саундбанка. То есть описанный StopAll в music_combat не вырубает ни стрельбу, ни переговоры экипажа, ни звуки лампочки/пожара и т.п., загружаемые другими модами.Но если трек еще не начал проигрываться, а висит на задержке (Delay в действии Play), то его проигрывание отменено не будет. И когда Delay истечет, трек заиграет и наложится куда не надо. Иллюстрация немножко сложная, но попробуем. Допустим, мы смотрим на результаты боя (контенер music_victory (событие 1), в нем действия StopAll(11) и с задержкой на 3 секунды - Play(12)), выходим в ангар (контенер music_hangar (событие 2), в нем действия StopAll(21) и с задержкой на 3 секунды - Play(22)), а потом жмем кнопку "В бой" начинаем загрузку очередной карты (контенер music_kavkaz (событие 3), в нем действия StopAll(31) и с задержкой на 3 секунды - Play(32)). Если мы все делаем не торопясь, то последовательность событий и действий будет такой, как описано: 1(окно результатов)-11(стоп все)-3сек-12(пошла музыка победы)--долго смотрим на результаты боя--2(кнопка закрыть результаты)-21(стоп все)-3сек-22(пошла музыка ангара)--долго смотрим на танки в ангаре--3(жмем "В бой")-31(стоп все)-3сек-32(пошла музыка загрузки карты). Но если вы жмете кнопки быстро, то может получиться так: 1(окно результатов)-11(стоп все)-3сек-12(пошла музыка победы)--долго смотрим на результаты боя--2(кнопка закрыть результаты)-21(стоп все)-3сек-1сек-КЛАЦЦЦЦ!!! 3(жмем "В бой")-31(стоп все)-2 сек-( 22(пошла музыка ангара)-1сек-32(пошла музыка загрузки карты). То есть кнопку "В бой" жмакнули ДО ТОГО, как запустился отложенный на 3 секунды трек музыки ангара (22). И 31(стоп все) ничего не остановил - в этот момент еще ничего не играло. И когда остаток от трех секунд дотикал, запустилась музыка ангара. И на нее наложится 32(музыка загрузки карты). Слушать это наложение будете 30 секунд. Когда начнется бой, действие StopAll в контейнере music_combat оба этих трека остановит. Если, конечно, Вы добавили StopAll в контейнер music_combat. А то еще и третий трек наложится. 'Перекрестное затухание-нарастание звуков разных контейнеров' Допустим, хочется чтобы не только плавно затухала музыка загрузки боя, но и чтобы плавно же нарастала музыка боя.Для звуков одного контенера, воспроизводящихся по списку, есть возможность установить переход X-fade. Для разных контейнеров придется это X-Fader организовать самому. например, так:1) В событии music_combat должны быть созданы события StopAll и Play. Причем именно в таком порядке.2) Для события StopAll назначаем продолжительность и характер процесса затухания (мне понравилось 3 секунды и кривая "сначала медленно, потом быстро").3) Для события Play назначаем время задержки начала проигрывания, продолжительность и характер процесса нарастания (мне понравилось 2 секунда задержки, 3 секунды нарастания и кривая "сначала быстро, потом медленно"). Если редактируемый таким образом эвент уже включен в саундбанк, то я на всякий случай сначала удаляю изменяемый эвент из списка включений в саундбанк, делаю изменения и потом заново затаскиваю эвент в саундбанк. Хотя, возможно, изменение перечня событий и без этого будет учтено при генерации сайндбанка. 5 @ Quote Link to comment Short link Share on other sites More sharing options...
Руслан cb Posted June 10, 2016 Share Posted June 10, 2016 Йес! Научился я останавливать проигрывание контейнера! 'Как прекращать воспроизведение музыки из одного контейнера при запуске музыки из другого контейнера' Допустим, нам надо прекратить проигрывание музыки загрузки боя после после начала боя (то есть после возникновения события music_combat). Для этого делаем дабл-клик по эвенту music_combat. Видим, что там уже есть событие (1) Play. Добавляем еще одно действие (action). Клиикаем на кнопку [>>] в строке (2), выбираем в меню Stop и далее StopAll: Stop-1.png Если хотим сделать так, чтобы звук не обрывался резко, а плавно затухал, выбираем продолжительность и характер процесса затухания: Stop-2.png Осталось установить правильную последовательность звуков - сначала StopAll, и только потом - Play. Просто перетаскиваем действие Play мышкой под событие StopAll: Stop-3.png Может быть я что-то делаю идеологически неправильно, но оно реально работает. Теоретически, описанным способом останавливать - музыку ангара при загрузке предбоевой музыки - музыку результатов боя при загрузке музыки ангара Возможно, надо еще останавливать музыку экрана ввода логина/пароля призагрузке ангара. Если редактируемый таким образом эвент уже включен в саундбанк, то я на всякий случай сначала удаляю изменяемый эвент из списка включений в саундбанк, делаю изменения и потом заново затаскиваю эвент в саундбанк. Хотя, возможно, изменение перечня событий и без этого будет учтено при генерации сайндбанка. 'Тонкость в использовании StopPlay' Насколько я понимаю, StopAll распространяется только на УЖЕ ИГРАЮЩИЕ треки из этого же самого саундбанка. То есть описанный StopAll в music_combat не вырубает ни стрельбу, ни переговоры экипажа, ни звуки лампочки/пожара и т.п., загружаемые другими модами.Но если трек еще не начал проигрываться, а висит на задержке (Delay в действии Play), то его проигрывание отменено не будет. И когда Delay истечет, трек заиграет и наложится куда не надо. Иллюстрация немножко сложная, но попробуем. Допустим, мы смотрим на результаты боя (контенер music_victory (событие 1), в нем действия StopAll(11) и с задержкой на 3 секунды - Play(12)), выходим в ангар (контенер music_hangar (событие 2), в нем действия StopAll(21) и с задержкой на 3 секунды - Play(22)), а потом жмем кнопку "В бой" начинаем загрузку очередной карты (контенер music_kavkaz (событие 3), в нем действия StopAll(31) и с задержкой на 3 секунды - Play(32)). Если мы все делаем не торопясь, то последовательность событий и действий будет такой, как описано: 1(окно результатов)-11(стоп все)-3сек-12(пошла музыка победы)--долго смотрим на результаты боя--2(кнопка закрыть результаты)-21(стоп все)-3сек-22(пошла музыка ангара)--долго смотрим на танки в ангаре--3(жмем "В бой")-31(стоп все)-3сек-32(пошла музыка загрузки карты). Но если вы жмете кнопки быстро, то может получиться так: 1(окно результатов)-11(стоп все)-3сек-12(пошла музыка победы)--долго смотрим на результаты боя--2(кнопка закрыть результаты)-21(стоп все)-3сек-1сек-КЛАЦЦЦЦ!!! 3(жмем "В бой")-31(стоп все)-2 сек-( 22(пошла музыка ангара)-1сек-32(пошла музыка загрузки карты). То есть кнопку "В бой" жмакнули ДО ТОГО, как запустился отложенный на 3 секунды трек музыки ангара (22). И 31(стоп все) ничего не остановил - в этот момент еще ничего не играло. И когда остаток от трех секунд дотикал, запустилась музыка ангара. И на нее наложится 32(музыка загрузки карты). Слушать это наложение будете 30 секунд. Когда начнется бой, действие StopAll в контейнере music_combat оба этих трека остановит. Если, конечно, Вы добавили StopAll в контейнер music_combat. А то еще и третий трек наложится. 'Перекрестное затухание-нарастание звуков разных контейнеров' Допустим, хочется чтобы не только плавно затухала музыка загрузки боя, но и чтобы плавно же нарастала музыка боя. Для звуков одного контенера, воспроизводящихся по списку, есть возможность установить переход X-fade. Для разных контейнеров придется это X-Fader организовать самому. например, так: 1) В событии music_combat должны быть созданы события StopAll и Play. Причем именно в таком порядке. 2) Для события StopAll назначаем продолжительность и характер процесса затухания (мне понравилось 3 секунды и кривая "сначала медленно, потом быстро"). 3) Для события Play назначаем время задержки начала проигрывания, продолжительность и характер процесса нарастания (мне понравилось 2 секунда задержки, 3 секунды нарастания и кривая "сначала быстро, потом медленно"). Crossfader.png Если редактируемый таким образом эвент уже включен в саундбанк, то я на всякий случай сначала удаляю изменяемый эвент из списка включений в саундбанк, делаю изменения и потом заново затаскиваю эвент в саундбанк. Хотя, возможно, изменение перечня событий и без этого будет учтено при генерации сайндбанка. ответь мне пож-та в лс @ Quote Link to comment Short link Share on other sites More sharing options...
nikitka78 Posted June 10, 2016 Share Posted June 10, 2016 (edited) EagleB3 - и как раз в тему, только голову ломал как сделать, а с твоим постом все стало на свои места, пример применения кроме музыки: 1 событие - поджог вашего танка play - сирена play - продолжительный звук пламени 2 событие - тушение пожара stopall play - звук работающего огнетушителя play - голосовое уведомление "пожар потушен" Остается только подобрать временные параметры ( не знаю как с автоматическим огнетушителем будет) Edited June 10, 2016 by nikitka78 @ Quote Link to comment Short link Share on other sites More sharing options...
EagleB3 Posted June 10, 2016 Share Posted June 10, 2016 (edited) Если чуть развить тему про StopAll, то в том же подменю стоят "Stop" - остановить указанный объект "Stop All Except" - остановить объекты ВСЕ, кроме перечисленных - и можно задать список тех, кого останавливать не надо. Еще есть Break - отличается от Stop (на первый взгляд) только тем, что останов выполняется сразу, без отсрочек и возможности сделать затухание по времени. Со всеми тремя экспериментировал, но совсем немного - ибо собираю только мод на музыку, а для музыки StopAll пока, на мой взгляд, подходит лучше всего. ...А на одном уровне с Break и Stop еще есть Pause. В его раздел даже не заглядывал. Но тоже, наверное, есть куда покопать. Но если говорить про пожар и его тушение, то в списке действий есть еще Mute (не разбирался, но, если это то, о чем я думаю, то может очень подойти). После поджога приглушить все звуки, включить сирену и пламя. А тушение пожара, возможно, лучше Stop для сирены (сразу, без затухания. Или Break для сирены), Stop для пламени с затуханием (можно отложить с задержкой на 1 секунду) и Play для огнетушителя (сразу, но можно с нарастанием 1..2сек). Посмотреть будет ли вообще разница (и какая?), если пустить Play огнетушителя перед Stop для пламени. И после этого отменить Mute (если это возможно) Edited June 11, 2016 by EagleB3 @ Quote Link to comment Short link Share on other sites More sharing options...
nikitka78 Posted June 11, 2016 Share Posted June 11, 2016 (edited) Блин застрял на двух событиях: Взрыв БК мне и звук уничтожения моего танка, не могу пока придумать как правильно развести два этих события, чтобы не накладывались звуки Есть какие идеи? Оптимальный вариант: это при взрыве мне БК, звук уничтожения вообще не проигрывался, но пока не догоняю как это сделать Edited June 11, 2016 by nikitka78 @ Quote Link to comment Short link Share on other sites More sharing options...
nikitka78 Posted June 11, 2016 Share Posted June 11, 2016 (edited) del Edited June 11, 2016 by nikitka78 @ Quote Link to comment Short link Share on other sites More sharing options...
EagleB3 Posted June 12, 2016 Share Posted June 12, 2016 Взрыв БК мне и уничтожение моего танка - это два разных события, я правильно понимаю? Если танк уничтожен из-за взрыва БК, то событие уничтожение моего танка при этом происходит? Для проверки можно сделать банк с пустым "Взрывом БК" и послушать. Если события "уничтожение моего танка" при этом нет, то все просто - надо только запихать два звука во Взрыв БК и второй проигрывать с задержкой. Если происходят оба события, то... Надо продолжать курить мануал и при этом затягиваться поглубже. Там не что-попадалось на случай "если герой идет по сцене с зимней дорогой, то..., а если по сцене с летней доргой, то... ". @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted June 12, 2016 Author Share Posted June 12, 2016 (edited) Взрыв БК мне и уничтожение моего танка - это два разных события, я правильно понимаю? Нужно взять 2 реплея где техника уничтожена обычным выстрелом со снятием хп и выстрелом с подрывом бк. Прогнать оба с отладкой через XVM [ "logSoundEvents": true ] и узнать. Edited June 13, 2016 by night_dragon_on 1 @ Quote Link to comment Short link Share on other sites More sharing options...
nikitka78 Posted June 12, 2016 Share Posted June 12, 2016 (edited) по-моему происходит так: - сначала событие взрыв БК и озвучка этого события - потом событие уничтожение танка и стало быть озвучка его. Проблема в том что там очень маленький временной разбег между событиями. Теоретически - возможно озвучку событие "уничтожение танка" сдвинуть на время озвучки события взрыв БК, НО при этом озвучка события "уничтожение танка" всегда будет происходить с задержкой, а это вроде не совсем гудово. Вообще озвучка события "уничтожения танка" - правильнее всего должна начинаться со "stop all", при этом все звуки других событий останавливаются и получаем чисты звук уничтожения без помех ( лампы, шота, и тд) P.S. вообще как и писал EagleB3 , функции Stop, Pause, Mute - очень прикольные и полезные если мы хотим получить чистый звук события без наложения других звуков (пример, шот от арты, все мы знаем что шот от арты в 90% получают когда в свете и работает озвучка лампы, если лампа простая то еще полбеды, а если лампа сложная с многоголосой озвучкой то эти функции приходят на помощь) Edited June 12, 2016 by nikitka78 @ Quote Link to comment Short link Share on other sites More sharing options...
EagleB3 Posted June 12, 2016 Share Posted June 12, 2016 Теоретически - возможно озвучку событие "уничтожение танка" сдвинуть на время озвучки события взрыв БК, НО при этом озвучка события "уничтожение танка" всегда будет происходить с задержкой, а это вроде не совсем гудово. Ммм... А куда в этом случае спешить? Никакие кнопки спешно жать не надо, это не лампа и не пожар. Можно и задерживать этот звук одну-две секунды - уже ничего не изменится. Так что, думаю, самое правильное - просто поставить постоянную задержку в эвент play на "уничтожение танка" @ Quote Link to comment Short link Share on other sites More sharing options...
goodman Posted June 12, 2016 Share Posted June 12, 2016 @night_dragon_on, Йес! Научился я останавливать проигрывание контейнера! годная инструкция вроде, может в шапку разместишь? @ Quote Link to comment Short link Share on other sites More sharing options...
nikitka78 Posted June 13, 2016 Share Posted June 13, 2016 (edited) Родилась тут одна необходимость, прошу совета: а возможно написать скрипт который отключал бы во время боя по некоторой кнопке, какой либо банк (звук) ? Edited June 13, 2016 by nikitka78 @ Quote Link to comment Short link Share on other sites More sharing options...
D2R52 Posted June 14, 2016 Share Posted June 14, 2016 Йес! Научился я останавливать проигрывание контейнера! Насколько я знаю, StopAll остановит все проигрываемые звуки, в зависимости от параметра область действия (scope) у данного игрового объекта или глобально. Остановятся только запущенные звуки, т.е. на события возникшие после StopAll его действие не распространяется. Что интересно, в оригинальном банке с музыкой нет событий StopAll: MusicEvents.txt 1 @ Quote Link to comment Short link Share on other sites More sharing options...
EagleB3 Posted June 14, 2016 Share Posted June 14, 2016 (edited) Что интересно, в оригинальном банке с музыкой нет событий StopAll Думаю, это потому, что оно не событие (Event). Оно действие (Action), и может выполняться при возникновении какого-то события. Пруф. Когда я пытался исследовать тему, я создавал и события Stop. Точно так же, как для запуска музыки мы, скажем, на контенер music_malinovka создаем событие Play, можно создать и событие Stop. А потом это событие (Stop_music_malinovka) можно привесить в другое событие, скажем в music_combat (и там вполне человеческий интерфейс, выбор из списка...), и оно будет подвешиваться через событие (action) типа Post Event. И оно даже работало. Но я быстро эти исследования свернул, ибо решение КМК, крайне (!) неудобно для музыки - делать такой Stop на каждый контейнер загрузки карты. И потом еще прописывать десяток эвентов Stop в эвенте music_combat. в зависимости от параметра область действия (scope) у данного игрового объекта или глобально А кто является игровым объектом в WOT? Или, пожалуй, даже лучше спрошу так: кто им может быть в принципе? Скажем, Arena? Hangar? Или это саундбанк? Или я вообще не о том? И, пользуясь случаем - два идеологических вопроса: 1) Получить список всех событий, которые обслуживает, скажем, ExternalMusicSources.pck - это можно сделать как? Через PjOrion? 2) Если я собираю чисто музыкальный мод (только замена музыки, и притом замена всей музыки), и собираюсь его выложить для общего пользования - чем хорошо и чем плохо использовать пару банков ExternalMusicSources.pck + ExternalMusicSources.bnk? С одной стороны, с такими названиями (да еще со звуками, играющими в стриме) можно вообще никакие конфигурационные файлы не редактировать и так пользователям будет проще. А какие в этом случае имеются грабли? Может быть, в этом случае лучше дать банкам какое-то другое имя (например, OldGoodRock)? Edited June 14, 2016 by EagleB3 @ Quote Link to comment Short link Share on other sites More sharing options...
D2R52 Posted June 14, 2016 Share Posted June 14, 2016 Думаю, это потому, что оно не событие (Event). Оно действие (Action), и может выполняться при возникновении какого-то события. Если бы вы посмотрели приложенный файл, то поняли бы, что имелось в виду именно evant action. Например, Event 3944980085 "music_combat" событие ид_события название_события >Play GameObject 372182364 >действие область действия ид объекта |Container ID 162F0D5C объект (контейнер в данном случае) | SoundFX ID 241D0A1F ссылка на звук | File Id 127052965|0792ACA5 звук Так вот, я не нашел действий StopAll в оригинальном банке музыки. А кто является игровым объектом в WOT? Или, пожалуй, даже лучше спрошу так: кто им может быть в принципе? Скажем, Arena? Hangar? Или это саундбанк? Или я вообще не о том? Я не могу отвечать за то, что накрутили разработчики WOT, но это однозначно не саундбанк, игровой объект с точки зрения wwise это некий объект, испускающий звуки. См. https://www.audiokinetic.com/download/documents/TheWwiseApproach.pdf https://www.audiokinetic.com/library/2015.1_5418/?source=WwiseFundamentalApproach&id=what_are_game_objects__what_are_game_objects Если интересно, то вот примерно так это происходит //Init engine wwise = new Wwise(); wwise.Init(); wwise.InitReverb(); //create game object wwObject = wwise.RegisterGameObject((uint)100, "Car"); wwise.Update(); //init banks wwise.SetBasePath(basePath); wwise.LoadBank("Init.bnk"); wwise.LoadBank(bank); wwise.Update(); //emit sound from game object wwObjectGlobal.PostEvent(eventName); Чем хорошо и чем плохо использовать пару банков ExternalMusicSources.pck + ExternalMusicSources.bnk? Банк тут только один - ExternalMusicSources.bnk. Я выложил его структуру в предыдущем сообщении, и там видно что он устроен немного сложнее обычных банков - в нем есть неопознанные события, mute, unmute, pause, resume. Т.е. без исходного проекта собрать 100% аналогичный не получится. ExternalMusicSources.pck это запакованные streamed медиа файлы. Но музыку можно поменять не трогая сам банк, а поместив свои файлы в ExternalMusicSources.pck. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.