Короче, суть такая.
Кастомную озвучку делаю так: регается событие unit_selected для конкретного юнита,
дальше триггер:
- отключает себя во избежание звукоабуза
- задаёт случайное значение переменной от 1 до x-xxx, сколько там звуков.
Далее идут ифзенэлсы от 1 до xxx
if (udg_integer == 1) then
call PlaySoundOnUnitBJ( gg_snd_SingerOfDeath1, 100, GetTriggerUnit() )
else
if (udg_integer == 2) then
call PlaySoundOnUnitBJ( gg_snd_SingerOfDeath2, 100, GetTriggerUnit() )
else
if (udg_integer == 3) then
call PlaySoundOnUnitBJ( gg_snd_SingerOfDeath3, 100, GetTriggerUnit() )
else
и так до последнего звука из саундсета.
Потом триггер запускает однократный таймер в Y секунд, после завершения которого исходный триггер (занесенный ранее в хэш) включается обратно.
Всё так-то действует. Но иногда при выделении юнита может проявиться раздражающее подлагивание. Чтобы его убрать, продрачиваются туда-сюда громкости звуков и изменение значения Y (просто больше ничего придумать не удаётся), и в конце концов обычно такое шаманство приводит к чему-то приемлемому (подлагивание устраняется до незаметного уровня). А бывает и так, что просто во время игры это подлагивание при выделении то достаточно заметно проявляется, то внезапно пропадает и все как по маслу идет (ну это если так-то отмечено, что оно ещё не устранилось).
Собственно прошу прокомментировать и посоветовать по оптимизации. Понимаю, что в идеале вообще должны быть кастомные саундсеты, но всё никак это раскурить не могу, да и, ятп, там не только вшивать в мпкью придётся, но и формат звуковых файлов нужный ставить, а их и так нарезать ещё и громкость настраивать...
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
прелоад устроен следующим образом
есть файл в которым содержится код для прелоада ресурсов
из карты мы вызываем этот файл
и файл сам прелоадит своё содержимое
Тогда ПОКА ЧТО я лучше все-таки испробую вариант выше (ятп, он действует), потому что геморроя на голову и так больше, чем хотелось бы.
Этот вариант т. е. xgm.guru/p/wc3/193330?postid=354966#comment16
То есть я это прописываю в триггере с событием Map Initialization, а звук все равно лагает при первом вызове
Придётся, как и раньше, делать с лагом на старте карты с проигрыванием звука с громкостью 0
Сами сперва говорите, что при инициализации, а теперь с elapsed time... Свой-то вариант как раз через elapsed делаю, но это логично - там звуки проигрываются и в WE прямо написано, что при инициализации они проигрываться не могут.
Ладно, потом мб поменяю, пока такая технология прелоада: все звуки играются с громкостью 0 через полсекунды после старта карты и (добавлено) каждый из них сразу стопится. Она пока на тест-карте и не понятно, но мб даже так получится, что и лага в начале не будет (хотя его всё-таки пережить можно).
/////////
В общем, если кому интересно.
Мой "прелоад" - проиграть звуки на громкости 0 и застопить каждый сразу - действует. Лаг в этот момент есть (я делаю через полсекунды после запуска карты). Но стоп был сделан не случайно - без него в звуковом канале начинается какая-то мешанина, и другие проигрывающие звуки триггеры начинают их играть с задержкой какое-то время, и все только потом приходит в норму.
А так получается просто типа дополнительного времени загрузки уже загрузившейся карты... пусть оно будет не 2 секунды когда-нибудь, а 4, 8, 16, 32... но очень и очень нескоро и даже такое можно будет пережить или найти другое решение, типа таки постепенного запиливания кастомных саундсетов для героев и отправки туда части звуков.