Вот решил я добавить в Half Life поддержку SAPI
что бы сообщения в чате мультиплеера произносились
ну и еще смного для чего, согласитесь вещь интересная и для многих модов нужная
но я столкнулся с одной проблемой
если точнее я не знаю как передать компьютерный голос на клиенты
при условии что на стороне клиента ничего менять нельзя
тоесть реализация передачи голоса, должна быть чисто серверной
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
Пишешь поток на диск, тут же потоком проигрываешь для всех клиентов (в ХЛ потоковое воспроизведение уже реализовано). Я только так вижу.
Совсем, правда, не уверен, что получится. Но ты вообще посмотри как там реализовано проигрывание, если путь к звуку начинается с '*'.
fire64 почему это? как раз таки сервер менять нельзя, а клиент можно. Все элементарно - есть команда "say", ловим её на клиенте - там где вывод текста на экран. И отправляем этот текст в синтезатор.
А есть сейчас достойные бесплатные синтезаторы? ну чтобы не булькало, как у мелкософта, а наоборот читало приятно.
Не, нету. Есть получше, но все равно звучит это как сам понимаешь что.
Я, видимо, не так понял. Если речь идет именно о синтезе, то достаточно ограничиться каким-то набором распознаваемых слов и словосочетаний (типа 'camping at RL' или 'need back up'), то проще сделать как говорит Д.Миша - парсить say на клиенте и проигрывать нужные звуки из набора.
Только кому это реально нужно?
Кстати, войсчат, если я не путаю, в стимовской версии есть.
Войсчат есть, начиная с версии 1.1.0.8.
Хочется приятного голоса - запишите кучу стандартных фраз, как в Unreal Tournament'99
К этому делу можно прилепить простенький анализатор текста, который будет выбирать наиболее подходящую фразу, в зависимости от текста.
From WorldCraft 2.1 Help: "To play a wav through the streaming code (for very large, one-shot wavs) use * in front of the name. For instance, ambience/*speak2.wav would stream speak2.wav. Streaming sounds are loaded in segments from the disk, played, and flushed from memory."
В халфе есть стриминг звуков???
Это случайно не первоапрельская шутка?
Ни в одной кваке, по крайней мере, этого нет (не считая стриминга бг-музыки в ку3)
А вот и нет... Попробовал сделать - ничего не вышло. Выходит, TWHL на пару с гайдом хаммера гонит, а я раньше считал его надежным источником информации по ХЛ. Облажался, да.
To play a wav through Half-Life's streaming code, you can put an asterisk in front of the wav name (e.g. path/*filename.wav) or select 'stream' from the 'Channel to use' box.
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
Информация к размышлению.
1) В сорсе эта фича задокументирована в нескольких источниках, включая вальвовскую дев-вики.
2) В сорцах бетки это есть (правда я не смотрел, работает ли)
3) В сорцах хл1 есть дефайн CHAN_STREAM:
C++ Source Code:
#define CHAN_STREAM 5 // allocate stream channel from the static or dynamic area
И больше ничего. Т.е. это нигде не юзается. Может быть, недоделка?
//Sound Channels
CHAN_STREAM 5 - not exactly sure, check hlsdk for more
CHAN_STATIC 6 - not exactly sure, check hlsdk for more
CHAN_NETWORKVOICE_BASE 7 - no-touchy
CHAN_NETWORKVOICE_END 500 - no-touchy
но опять же как это заюзать
дело в том что pfnEmitSound без предварительного кеширования звуковых файлов работать не будет
а если их кешировать то опять же они зальются на клиент и толку от этого не будет
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей