Короче, суть такая.
Кастомную озвучку делаю так: регается событие 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 (просто больше ничего придумать не удаётся), и в конце концов обычно такое шаманство приводит к чему-то приемлемому (подлагивание устраняется до незаметного уровня). А бывает и так, что просто во время игры это подлагивание при выделении то достаточно заметно проявляется, то внезапно пропадает и все как по маслу идет (ну это если так-то отмечено, что оно ещё не устранилось).
Собственно прошу прокомментировать и посоветовать по оптимизации. Понимаю, что в идеале вообще должны быть кастомные саундсеты, но всё никак это раскурить не могу, да и, ятп, там не только вшивать в мпкью придётся, но и формат звуковых файлов нужный ставить, а их и так нарезать ещё и громкость настраивать...

Принятый ответ

ClotPh:
Ige, т. е. как-то так (при инициализации)?
call Preload (war3mapImported\SingerOfDeath1.wav)
call Preload("war3mapImported\\SingerOfDeath1.wav")
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
21
7 лет назад
0
nvc123, ммм... какие файлы? Звук у меня и так вшит в mpq (именно по такому пути).
0
28
7 лет назад
0
ClotPh, файлы для прелоада
прелоад устроен следующим образом
есть файл в которым содержится код для прелоада ресурсов
из карты мы вызываем этот файл
и файл сам прелоадит своё содержимое
0
21
7 лет назад
0
nvc123, а это лучше только тем, что время загрузки не увеличивается?
Тогда ПОКА ЧТО я лучше все-таки испробую вариант выше (ятп, он действует), потому что геморроя на голову и так больше, чем хотелось бы.
Этот вариант т. е. xgm.guru/p/wc3/193330?postid=354966#comment16
4
7
7 лет назад
4
ClotPh:
Ige, т. е. как-то так (при инициализации)?
call Preload (war3mapImported\SingerOfDeath1.wav)
call Preload("war3mapImported\\SingerOfDeath1.wav")
Принятый ответ
0
21
7 лет назад
0
^ Ни хрена не действует
То есть я это прописываю в триггере с событием Map Initialization, а звук все равно лагает при первом вызове
Придётся, как и раньше, делать с лагом на старте карты с проигрыванием звука с громкостью 0
0
25
7 лет назад
0
Придется это писать не в инициализации, а в elased time 0.00
0
32
7 лет назад
0
ClotPh, пробуй в через pld скрипт.
0
21
7 лет назад
0
quq_CCCP, я это не раскурю сейчас.
Сами сперва говорите, что при инициализации, а теперь с elapsed time... Свой-то вариант как раз через elapsed делаю, но это логично - там звуки проигрываются и в WE прямо написано, что при инициализации они проигрываться не могут.
Ладно, потом мб поменяю, пока такая технология прелоада: все звуки играются с громкостью 0 через полсекунды после старта карты и (добавлено) каждый из них сразу стопится. Она пока на тест-карте и не понятно, но мб даже так получится, что и лага в начале не будет (хотя его всё-таки пережить можно).
/////////
В общем, если кому интересно.
Мой "прелоад" - проиграть звуки на громкости 0 и застопить каждый сразу - действует. Лаг в этот момент есть (я делаю через полсекунды после запуска карты). Но стоп был сделан не случайно - без него в звуковом канале начинается какая-то мешанина, и другие проигрывающие звуки триггеры начинают их играть с задержкой какое-то время, и все только потом приходит в норму.
А так получается просто типа дополнительного времени загрузки уже загрузившейся карты... пусть оно будет не 2 секунды когда-нибудь, а 4, 8, 16, 32... но очень и очень нескоро и даже такое можно будет пережить или найти другое решение, типа таки постепенного запиливания кастомных саундсетов для героев и отправки туда части звуков.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.