![]() |
Показать все 31 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Half Life и SAPI (https://hlfx.ru/forum/showthread.php?threadid=1759)
Half Life и SAPI
Вот решил я добавить в Half Life поддержку SAPI
что бы сообщения в чате мультиплеера произносились
ну и еще смного для чего, согласитесь вещь интересная и для многих модов нужная
но я столкнулся с одной проблемой
если точнее я не знаю как передать компьютерный голос на клиенты
при условии что на стороне клиента ничего менять нельзя
тоесть реализация передачи голоса, должна быть чисто серверной
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
Пишешь поток на диск, тут же потоком проигрываешь для всех клиентов (в ХЛ потоковое воспроизведение уже реализовано). Я только так вижу.
Совсем, правда, не уверен, что получится. Но ты вообще посмотри как там реализовано проигрывание, если путь к звуку начинается с '*'.
__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran
fire64 почему это? как раз таки сервер менять нельзя, а клиент можно. Все элементарно - есть команда "say", ловим её на клиенте - там где вывод текста на экран. И отправляем этот текст в синтезатор.
А есть сейчас достойные бесплатные синтезаторы? ну чтобы не булькало, как у мелкософта, а наоборот читало приятно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Не, нету. Есть получше, но все равно звучит это как сам понимаешь что.
Я, видимо, не так понял. Если речь идет именно о синтезе, то достаточно ограничиться каким-то набором распознаваемых слов и словосочетаний (типа 'camping at RL' или 'need back up'), то проще сделать как говорит Д.Миша - парсить say на клиенте и проигрывать нужные звуки из набора.
Только кому это реально нужно?
Кстати, войсчат, если я не путаю, в стимовской версии есть.
__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran
Войсчат есть, начиная с версии 1.1.0.8.
Хочется приятного голоса - запишите кучу стандартных фраз, как в Unreal Tournament'99
К этому делу можно прилепить простенький анализатор текста, который будет выбирать наиболее подходящую фразу, в зависимости от текста.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Войсчат, на стороне движка, с сервера до него не добраться
Scrama, ткни меня носом в то место где используется потоковое воспроизведение
клиент менять нельзя, так как я делаю модифицированный сервер для Half Life
и мне нужно что бы обычные клиенты могли на него заходить
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
fire64 голос играется на клиентской стороне В ЛЮБОМ случае.
Если передавать синтезированный по голос по сети, взамен живого, то в чем смысл новшества?
Добавлено 16-03-2009 в 19:20:
Да и потом - ты умеешь сжимать конечный результат, дабы он пролез в стрим-канал? Халфа с микрофона сжимает.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran
В халфе есть стриминг звуков???
Это случайно не первоапрельская шутка?
Ни в одной кваке, по крайней мере, этого нет (не считая стриминга бг-музыки в ку3)
__________________
Scrama, спасибо
теперь бы хорошо если бы мне напомнили какие парметры должны быть у звука что бы half life его понимала
я имею ввиду частоту и битрейт
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran
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:
#define CHAN_STREAM 5 // allocate stream channel from the static or dynamic area |
__________________
С астериском точно не работает - ругается на ненайденный файл.
__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran
CHAN_STREAM активно юзается в amx плагинах
и еще вот
//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 без предварительного кеширования звуковых файлов работать не будет
а если их кешировать то опять же они зальются на клиент и толку от этого не будет
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
CHAN_NETWORKVOICE_BASE 7 - no-touchy
CHAN_NETWORKVOICE_END 500 - no-touchy
Это каналы, которые используются для передачи голоса.
Но я опять повторюсь - для SAPI это нахрен не нужно - достаточно отловить на клиенте команду say и проиграть её через синтезатор.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
это клиентская реализация, а мне бы хотелось серверную
тут правда то же есть подводные камни
например не у всех есть нужные голосовые движки, стандартный юзать не хочется
да и сам sapi у многих не установлен
в случае если бы sapi использовался на сервере а голос передовался на клиент, ничего дополнительного для клиентов ставить было бы не нужно
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, ты читал эту тему ?
вся надежда была на потоковую передачу данных через ambient_generic
но как выяснилось эта информация оказалась фальшивой
но впринципе ты прав, мне действительно небыло известно что GoldSRC не поддерживает потоковую передачу данных
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
__________________
fire64 и зачем нужен синтезированный голос на сервере?
основная идея синтезатора - она как раз в том и заключается, чтобы по сети передавать текст, а на клиентской стороне воспроизводить голос.
И таким образом сэкономить траффик.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
я сейчас смотрю CVoiceGameMgr
Дядя Миша, а ты что предлагаешь что бы юзеры ставили себе дополнительно к клиенту еще и Speech Engine ?
например "Katerina" или "Digalo 2000"
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
fire64 SpeechEngine в виде одной дллки должен находится прямо
в папке cl_dlls
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran
Сжимать-то можно и в реалтайме, чем-нибудь простым типа ADPCM. Но в любом случае это надо писать как серверный, так и клиентский код.
__________________
ну теперь то я понял, что другого выбора просто нет
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
>>чем-нибудь простым типа ADPCM
Вот еще! Есть замечательный протокол для сжатия голоса - да-да, тот самый который жмет наши разговоры по сотовому телефону - имеется в ЛЮБОЙ винде, называется Microsoft GSM 6.10 или около того.
Для сжатия голоса подойдет как нельзя лучше.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша а если сервер под линуксом работает (а халфовский выделенный сервер запросто может под линуксом работать)
__________________
XaeroX эти кодеки доступны под GPL с общим названием libsnd или чота такое
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А... ну можно и их юзать. Просто ADPCM совсем простой и дубовый, для него никаких либов не нужно.
__________________
XaeroX ADPCM чота не очень по качеству. 4 бита все же сказываются.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 01:58. | Показать все 31 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024