Короче, суть такая.
Кастомную озвучку делаю так: регается событие 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")
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
33
Мб просто все эти звуки в массив пихать и выдавать нужный по индексу? Типа
call PlaySoundOnUnitBJ(SingerOfDeath[GetRandomInt (0, 174)], 100, GetTriggerUnit())
вместо всего этого ужаса. Впрочем не знаю, поможет ли это твоей проблеме, но делать столько проверок явно не айс.
21
Кет, ну можно, просто тогда для каждого саундсета свой глобальный массив надо.
Это вообще само по себе "особое" решение, знаю, должны нормально быть кастомные саундсеты =/
Если кому не влом, киньте, плз, тут линки еще раз на то, как свои саундсеты делать, у меня будет уже по ссылкам прямо перебираться с блога сюда, а тут по линкам туда и постепенно мб раскурю.
//////////
Ну нихрена пока не понятно еще, короче, в тест-карте прописано при запуске проигрывать все звуки Картуса с громкостью 0, ВРОДЕ СЕЙЧАС КАЖЕТСЯ, что все отлично (тот триг, что был выше, абсолютно не изменился, ща отталкиваюсь от того, что задача - спрелоадить звуки), но это не показатель, потому что минимум 1-2 раза уже так точно "казалось" после экспериментов с параметрами, а потом снова замечались подлагивания, ладно, после импорта в основные карты этого "прелоада" будет видно.
/////////
Ага, вот про звуковые сеты
Когда-нить мб пригодится
////////////
ТАК! Ну расклад такой. Сейчас протестировалась уже оптимизированная карта.
В общем, дело такое: поставлено проигрывать все звуки Картуса в начале одного триггера (на старте буквально сразу). В этот момент ощущается четкий сильный лаг, а потом пока лагов замечено не было.
Так что да, ятп, суть в необходимости прелоада.
Офк один "типа лаг" вначале в тысячу раз лучше небольших лагов в процессе геймплея. Но проблема в том, что если дальше делать так, то он будет только расти и расти. Можно ли прелоадить без лага? Ну не нахожу ничего, кроме вот той ссылки, и там вроде не то. Или только дораскуривать создание своих саундсетов через потрошение варкрафта?
28
ClotPh, прелоад это преждевременная загрузка в память
загрузка в память требует времени == лаг
вывод
чтобы не было лагов не используй то что требует загрузки в память
а именно звуки, модели, текстуры и т.д.
либо прелоадь их при событии инициализация карты (тогда карта дольше грузится будет но лагов не будет)
и используй массивы как писал кет
это намного лучше чем писать 100500 ифов
21
nvc123, карта дольше грузиться будет = меньшее из всех зол.
Я функцию увидеть хочу, которая звуки прелоадит.
Я в упор не могу поиском найти ни через гугл, ни через здесь, то, что мне выдаёт, выше вон ссылка, но это старое и не то, по-моему.
33
ClotPh, вроде тем, что по ссылке, прелоадить вполне можно.
7
ClotPh:
Я функцию увидеть хочу, которая звуки прелоадит.
native Preload takes string filename returns nothing
где filename - путь до звука
21
Ige, т. е. как-то так (при инициализации)?
call Preload (war3mapImported\SingerOfDeath1.wav)
28
ClotPh, лучше используй файлы для прелоада
про прелоад есть куча статей же
21
nvc123, ммм... какие файлы? Звук у меня и так вшит в mpq (именно по такому пути).
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.