Войти
ПрограммированиеФорумЗвук

Простой звуковой движок

Страницы: 1 2 Следующая »
#0
13:43, 12 мая 2013

Привет.
Для казуальной игры нужен простой звуковой движок, никакого 3d. Volume и Pan - больше ничего не требуется. Поэтому хочу написать сам. Для windows взял DirectSound, если будет переноситься на другие ос - OpenAL.
Для загрузки ogg взял Ogg Vorbis. Для загрузки wav - пока не знаю, но нужен ли вообще этот wav? Может всё в .ogg хранить?

Звуковые ресурсы подразделяются на два вида - звуковые эффекты (щелчок кнопки, взрывы, шаги и т.д.) и музыка (фоновая музыка, диалоги). Насколько я понял, звуковые эффекты можно целиком загружать в оперативную память (т.е. создавать статические вторичные буфферы в DirectSound) и запускать при необходимости.
С музыкой и диалогами, насколько я понял, нужен стриминг, т.е. создавать потоковые вторичные буферы и стримить в них данные периодически.

Вопрос вот в чём.  Стоил ли заморачиваться с потоковыми буферами или можно все звуковые ресурсы целиком загрузить в в статические буферы и не париться?
Если всё же лучше стримить длинные звуки (музыку, речь), то данные всё равно в раскодированном виде деражать в оперативке или же с жёского диска их стримить, налету раскодируя Ogg Vorbis?

Спасибо.


#1
15:09, 12 мая 2013

Riddik
возьми Squall и не парься. http://www.gamedev.ru/projects/forum/?id=61955

#2
15:36, 12 мая 2013

Aroch
Спасибо, но лучше немного попариться но сделать самому)

#3
16:23, 12 мая 2013

>Для загрузки wav - пока не знаю, но нужен ли вообще этот wav?
Полностью самостоятельно загрузить wav легче, чем даже ogg с использованием библиотеки. Так что это вопрос 10 строк кода.

>Вопрос вот в чём. Стоил ли заморачиваться с потоковыми буферами или можно все звуковые ресурсы целиком загрузить в в статические буферы и не париться?
Для начала не парься, а когда понадобится, тогда запарься. Раскодированная музыка на две минуты займёт 10 МБ.

>Если всё же лучше стримить длинные звуки (музыку, речь), то данные всё равно в раскодированном виде деражать в оперативке или же с жёского диска их стримить, налету раскодируя Ogg Vorbis?
В оперативке при стримминге смысла хранить нет. Обычно читают сразу с жёсткого диска и скармливают декодеру постепенно.

#4
16:27, 12 мая 2013

Riddik
> Стоил ли заморачиваться с потоковыми буферами или можно все звуковые ресурсы целиком загрузить в в статические буферы и не париться?
Нафига писать движок ущербнее чем он нужен?
Потоковый звук отжирает десятки мегабайт, застрименный - вряд ли больше 1Мб на все одновременно производимые звуки.

Сам движок довольно прост в написании - на openAL я его сделал за три дня в 2008 (я обычно медлительный, люди порой за день все форматы успевают найти и "подхватить").

#5
19:03, 12 мая 2013

CasDev
Спасибо!

gammaker
> Полностью самостоятельно загрузить wav легче, чем даже ogg с использованием
> библиотеки. Так что это вопрос 10 строк кода.
Если wav с компрессией, тогда как?

#6
19:24, 12 мая 2013

>Если wav с компрессией, тогда как?
wav с компрессией - это уже извращение. Хватит несжатого wav + сжатый ogg. Хотя и вообще wav не нужен, но на всякий случай можешь и реализовать.

#7
19:42, 12 мая 2013

o.k:)

#8
13:03, 14 мая 2013

Я бы посоветовал лучше сразу писать на OpenAL. Либа сама перейдет в софтварный режим DirectSound'а, если не найдет родных драйверов. Поэтому смысла писать отдельный двиг под DirectSound не вижу. К тому же он уже давненько deprecated. Плюс сразу получаем кроссплатформенность.
Riddik
А что с Юнити не срослось?

#9
14:38, 14 мая 2013

fullspektr
> на OpenAL
На некоторых старых системах (на Windows XP) даже родные примеры из OpenAL SDK не запускаются, нужны дрова. А требования - чтобы от XP на любом хламе всё работало. Не у всех пользователей есть. Может я и не допонял чего-то, как заставить OpenAL работать всюду.

fullspektr
> А что с Юнити не срослось?
Срослось.
Это уже следующий проект, его без Unity делаем)

#10
14:49, 14 мая 2013

Riddik
чтобы OpenAL везде работал надо с собой таскать и устанавливать этот пакет oalinst

#11
15:02, 14 мая 2013

Duncon
Могу ошибаться, но вроде в этом случае не подхватываются "железные" драйвера. В итоге будем иметь только софтварную реализацию. Ведь OpenAL ищет рядом сначала драйвера от Creative или Nvidia, если находит, то включается режим Hardware, иначе переходит в режим Software. Не таскать же с собой еще драйвера от вендоров.
Многие игры устанавливают же этот дистрибутив, да и можно запускать установку в фоне, там есть специальный ключ для этого

#12
15:37, 14 мая 2013

Riddik
> Для загрузки wav - пока не знаю, но нужен ли вообще этот wav?
несжатый Wav очень просто грузится. в мсдн где-то был пример.

Riddik
> Если wav с компрессией, тогда как?
он тебе не нужен
а не сжатый ты можешь использовать для дебага, в релизе он вряд ли пригодится

#13
16:08, 15 мая 2013

Спасибо, будет две реализации - DirectSound и OpenAL.

Насчёт DirectSound. Как правильно реалиовать звуковые инстансы? Т.е. один буффер с данными, например, звука падающего камня. Камнепад - каждый камень при падении "издаёт" этот звук.

Правильно ли будет вызывать directSound->DuplicateSoundBuffer()? при каждом запуске звукового эффекта?

#14
18:20, 15 мая 2013

Не гуглится, я бы не задавал.

OpenAL не взлетает без установки oalinst на голой XP, на wrap_oal.dll ругается. Если будет можно ставить oalinst в фоне, тогда нет проблем. Инсталлер не я делаю, а издатель, не факт, что он захочет ставить oalinst на машинах своих клиентов.

Страницы: 1 2 Следующая »
ПрограммированиеФорумЗвук

Тема в архиве.