Короче, суть такая.
Кастомную озвучку делаю так: регается событие 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 (просто больше ничего придумать не удаётся), и в конце концов обычно такое шаманство приводит к чему-то приемлемому (подлагивание устраняется до незаметного уровня). А бывает и так, что просто во время игры это подлагивание при выделении то достаточно заметно проявляется, то внезапно пропадает и все как по маслу идет (ну это если так-то отмечено, что оно ещё не устранилось).
Собственно прошу прокомментировать и посоветовать по оптимизации. Понимаю, что в идеале вообще должны быть кастомные саундсеты, но всё никак это раскурить не могу, да и, ятп, там не только вшивать в мпкью придётся, но и формат звуковых файлов нужный ставить, а их и так нарезать ещё и громкость настраивать...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Короче, если не получаю ясности, для начала пока попробую проиграть звуки с громкостью 0 при инициализации и посмотрю, что получится
Отредактирован Кет
Я пока прелоад попробую все-таки.
На, код тупейший, знаю, зато понятный шаблон, просто при новом персонаже имя меняешь и все.
Функция реагирует на выделение героя с нужным саундсетом (и только его).
2.5 это сейчас там таймер стоит, а вообще там число меняется от 0.7 до 3, пока мне не покажется, что так меньше лагает
Отредактирован Кет
Отредактирован ClotPh
Это вообще само по себе "особое" решение, знаю, должны нормально быть кастомные саундсеты =/
Если кому не влом, киньте, плз, тут линки еще раз на то, как свои саундсеты делать, у меня будет уже по ссылкам прямо перебираться с блога сюда, а тут по линкам туда и постепенно мб раскурю.
//////////
/////////
Когда-нить мб пригодится
В общем, дело такое: поставлено проигрывать все звуки Картуса в начале одного триггера (на старте буквально сразу). В этот момент ощущается четкий сильный лаг, а потом пока лагов замечено не было.
Так что да, ятп, суть в необходимости прелоада.
Офк один "типа лаг" вначале в тысячу раз лучше небольших лагов в процессе геймплея. Но проблема в том, что если дальше делать так, то он будет только расти и расти. Можно ли прелоадить без лага? Ну не нахожу ничего, кроме вот той ссылки, и там вроде не то. Или только дораскуривать создание своих саундсетов через потрошение варкрафта?
загрузка в память требует времени == лаг
вывод
чтобы не было лагов не используй то что требует загрузки в память
а именно звуки, модели, текстуры и т.д.
либо прелоадь их при событии инициализация карты (тогда карта дольше грузится будет но лагов не будет)
и используй массивы как писал кет
это намного лучше чем писать 100500 ифов
Я функцию увидеть хочу, которая звуки прелоадит.
Я в упор не могу поиском найти ни через гугл, ни через здесь, то, что мне выдаёт, выше вон ссылка, но это старое и не то, по-моему.