HLFX.Ru Forum
Показать все 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)


Отправлено fire64 16-03-2009 в 08:05:

Half Life и SAPI

Вот решил я добавить в Half Life поддержку SAPI
что бы сообщения в чате мультиплеера произносились
ну и еще смного для чего, согласитесь вещь интересная и для многих модов нужная

но я столкнулся с одной проблемой

если точнее я не знаю как передать компьютерный голос на клиенты

при условии что на стороне клиента ничего менять нельзя

тоесть реализация передачи голоса, должна быть чисто серверной

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Scrama 16-03-2009 в 08:16:

Пишешь поток на диск, тут же потоком проигрываешь для всех клиентов (в ХЛ потоковое воспроизведение уже реализовано). Я только так вижу.
Совсем, правда, не уверен, что получится. Но ты вообще посмотри как там реализовано проигрывание, если путь к звуку начинается с '*'.

__________________
"Злобным гениям не нужна харизма." © 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


Отправлено Дядя Миша 16-03-2009 в 09:20:

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'


Отправлено Scrama 16-03-2009 в 10:56:

Не, нету. Есть получше, но все равно звучит это как сам понимаешь что.

Я, видимо, не так понял. Если речь идет именно о синтезе, то достаточно ограничиться каким-то набором распознаваемых слов и словосочетаний (типа '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


Отправлено Дядя Миша 16-03-2009 в 11:09:

Войсчат есть, начиная с версии 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'


Отправлено fire64 16-03-2009 в 14:31:

Войсчат, на стороне движка, с сервера до него не добраться

Scrama, ткни меня носом в то место где используется потоковое воспроизведение



клиент менять нельзя, так как я делаю модифицированный сервер для Half Life

и мне нужно что бы обычные клиенты могли на него заходить

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 16-03-2009 в 16:20:

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'


Отправлено Scrama 17-03-2009 в 05:18:

Цитата:
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."

TWHL, ambient_generic


Вообще, мне кажется, что ты не просто пытаешься изобрести велосипед, но велосипед с треугольными колесами и педалью на руле.

__________________
"Злобным гениям не нужна харизма." © 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


Отправлено XaeroX 17-03-2009 в 07:00:

В халфе есть стриминг звуков???
Это случайно не первоапрельская шутка?
Ни в одной кваке, по крайней мере, этого нет (не считая стриминга бг-музыки в ку3)

__________________

xaerox on Vivino


Отправлено fire64 17-03-2009 в 07:29:

Scrama, спасибо


теперь бы хорошо если бы мне напомнили какие парметры должны быть у звука что бы half life его понимала

я имею ввиду частоту и битрейт

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Scrama 17-03-2009 в 07:32:

Цитата:
XaeroX писал:
В халфе есть стриминг звуков???

А вот и нет... Попробовал сделать - ничего не вышло. Выходит, TWHL на пару с гайдом хаммера гонит, а я раньше считал его надежным источником информации по ХЛ. Облажался, да.

__________________
"Злобным гениям не нужна харизма." © 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 17-03-2009 в 07:36:

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.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 17-03-2009 в 07:46:

Информация к размышлению.
1) В сорсе эта фича задокументирована в нескольких источниках, включая вальвовскую дев-вики.
2) В сорцах бетки это есть (правда я не смотрел, работает ли)
3) В сорцах хл1 есть дефайн CHAN_STREAM:

C++ Source Code:
#define CHAN_STREAM	5 // allocate stream channel from the static or dynamic area

И больше ничего. Т.е. это нигде не юзается. Может быть, недоделка?

__________________

xaerox on Vivino


Отправлено Scrama 17-03-2009 в 08:20:

С астериском точно не работает - ругается на ненайденный файл.

__________________
"Злобным гениям не нужна харизма." © 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 17-03-2009 в 08:25:

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 без предварительного кеширования звуковых файлов работать не будет

а если их кешировать то опять же они зальются на клиент и толку от этого не будет

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 17-03-2009 в 09:44:

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'


Отправлено fire64 17-03-2009 в 10:02:

Дядя Миша
это клиентская реализация, а мне бы хотелось серверную

тут правда то же есть подводные камни

например не у всех есть нужные голосовые движки, стандартный юзать не хочется

да и сам sapi у многих не установлен

в случае если бы sapi использовался на сервере а голос передовался на клиент, ничего дополнительного для клиентов ставить было бы не нужно

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 17-03-2009 в 12:36:

Цитата:
это клиентская реализация, а мне бы хотелось серверную

Я извиняюсь - ты с головой вообще дружишь?
Может сервер должен еще и кадры рендерить и отсылать их по сети на видеокарту? Благо OpenGL такую возможность поддерживает.
Не может быть никакой реализации синтезатора на сервере.
Ты может быть думаешь, если на сервере имееются SV_StartSound - так они "на сервере" и проигрываются?
Вся дурость от банального незнания архитектуры происходит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено fire64 17-03-2009 в 12:44:

Дядя Миша, ты читал эту тему ?
вся надежда была на потоковую передачу данных через ambient_generic
но как выяснилось эта информация оказалась фальшивой


но впринципе ты прав, мне действительно небыло известно что GoldSRC не поддерживает потоковую передачу данных

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 17-03-2009 в 13:51:

Цитата:
fire64 писал:
CHAN_STREAM активно юзается в amx плагинах

Потому и юзается, что умеет играть звук без предварительного кэширования, наверное.

По идее, можно писать синтезированный голос в войсчат. Но это, имхо, не так просто сделать без полных сорцов. Ты покопался в том коде voice, что доступен на сервере?

__________________

xaerox on Vivino


Отправлено Дядя Миша 17-03-2009 в 14:44:

fire64 и зачем нужен синтезированный голос на сервере?
основная идея синтезатора - она как раз в том и заключается, чтобы по сети передавать текст, а на клиентской стороне воспроизводить голос.
И таким образом сэкономить траффик.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено fire64 17-03-2009 в 15:25:

я сейчас смотрю CVoiceGameMgr

Дядя Миша, а ты что предлагаешь что бы юзеры ставили себе дополнительно к клиенту еще и Speech Engine ?

например "Katerina" или "Digalo 2000"

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 17-03-2009 в 15:54:

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'


Отправлено Scrama 17-03-2009 в 17:35:

Цитата:
fire64 писал:
Дядя Миша, а ты что предлагаешь что бы юзеры ставили себе дополнительно к клиенту еще и Speech Engine ?

например "Katerina" или "Digalo 2000"

А ты предлагаешь, чтоб юзеры качали постоянно однообразные wav-файлы, которые даже не сожмешь толком для передачи, поскольку все реалтайм делается?

__________________
"Злобным гениям не нужна харизма." © 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


Отправлено XaeroX 18-03-2009 в 17:51:

Сжимать-то можно и в реалтайме, чем-нибудь простым типа ADPCM. Но в любом случае это надо писать как серверный, так и клиентский код.

__________________

xaerox on Vivino


Отправлено fire64 18-03-2009 в 20:52:

ну теперь то я понял, что другого выбора просто нет

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 18-03-2009 в 21:38:

>>чем-нибудь простым типа 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 18-03-2009 в 23:17:

Дядя Миша а если сервер под линуксом работает (а халфовский выделенный сервер запросто может под линуксом работать)

__________________

xaerox on Vivino


Отправлено Дядя Миша 19-03-2009 в 07:53:

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'


Отправлено XaeroX 19-03-2009 в 08:29:

А... ну можно и их юзать. Просто ADPCM совсем простой и дубовый, для него никаких либов не нужно.

__________________

xaerox on Vivino


Отправлено Дядя Миша 19-03-2009 в 11:12:

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