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

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