IPB

Помощь по разделу

Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов

>

Звуки и звуковое окружение

 
 macron
сообщение 19.08.2012, 13:38
Сообщение #241


Игровой Бог
**********************

Группа: Участник
Сообщений: 5390
Регистрация: 22.02.2006
Из: Париж
Пользователь №: 3089




Введение
Что такое Sound Environment в STALKERе? Это принудительное изменение привычных звуков в определенных зонах. Например, логично, если зайдя в подвал/пещеру/под мост мы начнем слышать эхо от выстрелов/перезарядки/своих шагов и т.п.
Сами зоны ставятся вручную в SDK и в дальнейшем добавляются в папку уровня в виде файла level.snd_env (или как level.sound_environment для старых билдов).

Все билды от 18xx до ТЧ/ЧН поддерживают Sound Environment. Из движка ТЧ его никто не вырезал.

Но есть проблемы с реализацией:
Первая проблема в том, что Sound Environment работает только при включенном EAX.
Вторая проблема в том, из OpenAL-библиотек (OpenAL32.dll+wrap_oal.dll) начиная где-то с 2006 года вдруг исчезла поддержка EAX для звуковых карт за предыдущие годы.
Третья проблема в том, что EAX даже если поддерживается звуковухой, нормально работает/определяется не со всяким драйвером.
Четвертая проблема в том, что в ТЧ в опциях звука разрешено ставить галку на EAX в любом случае, то есть игра не проверяет включен ли он на самом деле, что приводит к самообману, если не читать лог.
Пятая проблема в том, что в финалке ТЧ этот самый Sound Environment зачем-то был вырезан на большинстве уровней. Остался только где-то на:
  • l07_military
  • l08_yantar
  • l12u_sarcofag
  • testers_mp_factory
  • testers_mp_pool
EAX FIXX ver 3
Что нового
добавлен !!!_dsound_software для принудительного включения Generic Software
добавлен !!!_backup для восстановления на случай серьезных проблем
добавлены варианты 15-19
добавлен !!!_sound_fixx_for_cs_cop
добавлен !!!_sound_fixx_for_shoc_10004
добавлен !!!_sound_fixx_for_shoc_10006
обновлен eax.dll до v4.0.1.0
добавлена поддержка ЗП (при использовании !!!_sound_fixx_for_cs_cop)

Ссылка: https://yadi.sk/d/lGuwBsvVQpnub

Данная сборка (EAX FIXX) предназначена для включения поддержки EAX игрой, а следовательно и Sound Environment как для существующих уровней, так и для перспективных модов, в первую очередь для ТЧ.
Текущая сборка предназначена для билдов от 18xx до ТЧ/ЧН.

Сборка состоит из пронумерованных папок с dllками, где в разных комбинациях встречаются портированные из билдов/ТЧ/ЧН OpenAL-библиотеки всевозможных версий.
Каждая папка включает:
  • eax.dll (стандартная версия)
  • OpenAL32.dll
  • wrap_oal.dll
Задача сборки: методом перебора всех комбинаций подобрать вариант, при котором на конкретном оборудовании в конкретном билде/игре заработает EAX, а следовательно, включится поддержка Sound Environment.
Установка
1. В user.ltx один раз правим (или через консоль вводим) команды:
snd_efx on (разрешаем игре использовать эффекты)
snd_targets 24 (старые варианты dllок могут ругаться, если число больше. Можно после тестов выставить 32.)
snd_volume_eff 1 (максимальная громкость эффектов)
snd_volume_music 0 (музыку отключаем, чтобы не мешала)
snd_volume_master 1 (общая максимальная громкость, команда для билдов 18xx)

2. Запускаем игру (билд от 18xx до ТЧ/ЧН/ЗП) и смотрим, что написано в консоли или логе в двух строчках, определяющих EAX.
Если написано:
* sound: EAX 2.0 extension: present
* sound: EAX 2.0 deferred: present
значит, скорее всего, и так все в порядке, EAX работает. Дальнейшие эксперименты можно не проводить.

Если написано:
* sound: EAX 2.0 extension: absent
* sound: EAX 2.0 deferred: absent
Или только в одной строчке absent, значит, EAX не работает или может глючить, и можно поэкспериментировать.

3. Куда-нибудь бекапим папку bin. Если используем билды, пункт 4 пропускаем.

4. Если используем ЧН/ЗП, то в папку bin суем все из !!!_sound_fixx_for_cs_cop.
Если используем ТЧ 1.0004, то в папку bin суем все из !!!_sound_fixx_for_shoc_10004.
Если используем ТЧ 1.0006, то в папку bin суем все из !!!_sound_fixx_for_shoc_10006.

5. Проверяем.
Для ЧН/ЗП в случае отсутствия EAX или проблем со звуком, в игре меню звуковых опций меняем Generic Hardware на Generic Software или наоборот, перезапускаем игру, проверяем снова.
Для билдов/ТЧ в случае отсутствия EAX или проблем со звуком, копируем dsound.dll из !!!_dsound_software в папку bin. Звук должен принудительно перейти в режим Generic Software.
Для ЧН/ЗП, если в опциях не переключается (Generic Hardware/Generic Software), можно тоже попробовать с dsound.dll.

6. Если не заработало, начинаем полномасштабное тестирование:
(Для ЧН/ЗП полное тестирование можно проводить дважды - сначала с выбранным в опциях вариантом Generic Hardware, потом с Generic Software).
(Для билдов/ТЧ полное тестирование можно проводить дважды - сначала обычно, потом через !!!_dsound_software).

Берем все dllки из папки 01_18xx-22xx_default и кладем в папку bin. Запускаем игру и читаем в логе/консоли строчки о EAX. Далее берем dllки из папки 02_18xx-22xx_tweaked1, проделываем то же самое, и так далее, проверяем все варианты. Запоминаем, где включился EAX (пишет present в обеих строчках). Если EAX включился в нескольких вариантах, оставляем тот, где даты файлов новее, или звук кажется лучше. Возможны случаи, когда в логе в одной строчке написано present, в другой absent. Скорее всего Sound Environment не попрет.
Некоторые варианты могут оказаться несовместимы с конкретным билдом/игрой/системой и во время тестов привести к вылету/зависанию игры при запуске. При включенном EAX с разными версиями возможно появление новых мелких глюков, например щелчков. Нет гарантии, что на разных билдах/играх будет корректно работать один и тот же вариант.

Если в результате тестов в ТЧ/ЧН/ЗП звук ухудшился, или игра не запускается - удалите dsound.dll (если устанавливали) и восстановитесь из !!!_backup.
Что делать, если не помогло
1. Если звуковуха отдельная, попробовать обновить ее драйвера, обращать внимание на поддержку EAX.
Драйверов может быть несколько вариантов, в том числе неофициальные.

2. Если звуковуха встроенная, например Realtek, попробовать обновить ее драйвера.
Часто на сайтах поддержки материнских плат лежат устаревшие варианты.
То есть лучше искать драйвера непосредственно от производителя чипа звуковухи.
Также можно погуглить на тему проги "Realtek 3D SoundBack", может пригодится.

3. За 20 баксов приобрести простенький Sound Blaster Live/5.1.
В зависимости от модели/операционной системы не исключены проблемы с поиском драйверов,
но по крайней мере эти звуковухи должны поддерживать EAX с одним из вариантов фикса.

4. Скачать исходники OpenAL и будучи крутым программистом скомпилировать под свою звуковуху персональные OpenAL32.dll+wrap_oal.dll.
Как самостоятельно в SDK создать Sound Environment?
Допустим, у нас уже открыт какой-то уровень.
Edit Mode -> Sound Env -> Ставим точку на карте. Появится кубик. Правой кнопкой заходим в его свойства.
Environment Inner ставим long_corridor (например).
Environment Outer ставим open_space.
Далее зумим/вращаем наш кубик, чтобы заполнить нужное помещение.
Когда наставили достаточно кубиков, говорим Compile -> Make Game. И суем готовый level.snd_env в игру в папку уровня.

(IMG:http://images.gameru.net/thumb/7f56839d3b.jpg)
EAX params help (eng)
Код
Environment        // sets all listener properties
Size            // environment size in meters
Diffusion        // environment diffusion

Room
Room            // room effect level at low frequencies
RoomHF            // room effect high-frequency level re. low frequency level

Distance Effects
RoomRolloffFactor    // like DS3D flRolloffFactor but for room effect
AirAbsorptionHF        // change in level per meter at 5 kHz

Reflections
Reflections        // early reflections level relative to room effect
ReflectionsDelay    // initial reflection delay time

Reverb
Reverb            // late reverberation level relative to room effect
ReverbDelay        // late reverberation delay time relative to initial reflection

Decay
DecayTime        // reverberation decay time at low frequencies
DecayHFRatio        // high-frequency to low-frequency decay time ratio

В обсуждении вопроса принимали участие:
Lyoko774, РСФСР, MacroN, Veresk

Пример использования Sound Environment на Кордоне

Сообщение отредактировал RayTwitty - 09.12.2017, 21:15
Перейти в начало страницы
 
 
 
Ответов
 NanoBot-AMK
сообщение 15.03.2019, 21:25
Сообщение #242


Почти Игроман
*********

Группа: Участник
Сообщений: 577
Регистрация: 10.11.2015
Пользователь №: 22739



Marafonec, вот.
код
Код
global_ns_fix2.asm
;Фикс пропадания звука дождя при загрузке уровня.
;if (g_pGamePersistent->pEnvironment){
;    CEffect_Rain*    rain = g_pGamePersistent->pEnvironment->eff_Rain;
;    if (rain)
;        rain->state = CEffect_Rain::stIdle;
;}
align_proc
SoundRain_fix proc
    mov        edx, ds:g_pGamePersistent
    mov        eax, [edx]
    ASSUME    eax:ptr IGame_Persistent, ecx:ptr CEnvironment, edx:ptr CEffect_Rain
    mov        ecx, [eax].pEnvironment
    .if (ecx)
        mov        edx, [ecx].eff_Rain
        .if (edx)
            and        [edx].state, CEffect_Rain@stIdle
        .endif
    .endif
    ASSUME    eax:nothing, ecx:nothing, edx:nothing
    jmp        return_SoundRain_fix
SoundRain_fix endp

xrgame_stubs.asm
;----------------------------------------------------------------
;Фикс пропадания звука дождя при загрузке уровня.
org 101A793Ch - shift; 15 bytes
    jmp        SoundRain_fix
    db        10 dup (90h)
return_SoundRain_fix:
;----------------------------------------------------------------

Естественно высокоуровневый асм.

Сообщение отредактировал NanoBot-AMK - 15.03.2019, 21:26
Перейти в начало страницы
 
 
 Marafonec
сообщение 15.03.2019, 23:17
Сообщение #243


Ветеран
*****

Группа: Участник
Сообщений: 75
Регистрация: 13.09.2011
Из: Новозыбков
Пользователь №: 14450



NanoBot-AMK, спасибо большое!
Но... не получается скомпилить. в логе выводит ошибки:
Лог

Assembling: mydll.asm
global_ns_fix2.asm(153) : error A2006:undefined symbol : pEnvironment
global_ns_fix2.asm(156) : error A2006:undefined symbol : eff_Rain
global_ns_fix2.asm(158) : error A2006:undefined symbol : state


Может быть сам тег "код" форума что-нибудь корежит в приведенном тобой коде? На АМК неоднократно сталкивался с таким.

Сообщение отредактировал Marafonec - 15.03.2019, 23:33
Перейти в начало страницы
 
 
 NanoBot-AMK
сообщение 10.04.2019, 19:35
Сообщение #244


Почти Игроман
*********

Группа: Участник
Сообщений: 577
Регистрация: 10.11.2015
Пользователь №: 22739



Код высокоуровневый, почти Си.
Для компиляции, должны определены соответствующие структуры.
Вот низкий уровень.
Код
align_proc
SoundRain_fix proc
    mov        edx, ds:g_pGamePersistent
    mov        eax, [edx]
;;;ASSUME    eax:ptr IGame_Persistent, ecx:ptr CEnvironment, edx:ptr CEffect_Rain
    mov        ecx, [eax+1132];.pEnvironment
    .if (ecx)
        mov        edx, [ecx+760];.eff_Rain
        .if (edx)
            mov        dword ptr [edx+32], 0;.state
        .endif
    .endif
;;;ASSUME    eax:nothing, ecx:nothing, edx:nothing
    jmp        return_SoundRain_fix
SoundRain_fix endp

Но я давно от такого стиля отказался, не смотря на то, что требуется некоторое время на определения и проверку структур.
ЗЫ
Код не проверен полностью, вылетать не должен, но я не проверил фикса этого бага. Погода была не та.

Сообщение отредактировал NanoBot-AMK - 10.04.2019, 19:40
Перейти в начало страницы
 
 
 NanoBot-AMK
сообщение 11.04.2019, 00:24
Сообщение #245


Почти Игроман
*********

Группа: Участник
Сообщений: 577
Регистрация: 10.11.2015
Пользователь №: 22739



Дополнение для ревизий на основе маландинуса. Проблемы с релокациями!
Файл xrgame_stubs.asm
Код
;----------------------------------------------------------------
;Фикс пропадания звука дождя при загрузке уровня.
org 101A7942h - shift; 9 bytes
    jmp        SoundRain_fix
    db        4 dup (90h)
return_SoundRain_fix:
;----------------------------------------------------------------

Файл corrections_list.txt
Код
0x101A7942 9; Фикс пропадания звука дождя при загрузке уровня.

Так же можно в функции SoundRain_fix закомментировать строку:
Код
;mov        edx, ds:g_pGamePersistent

Так как в edx есть нужное.

Сообщение отредактировал NanoBot-AMK - 11.04.2019, 00:27
Перейти в начало страницы
 
 
 Marafonec
сообщение 13.04.2019, 18:25
Сообщение #246


Ветеран
*****

Группа: Участник
Сообщений: 75
Регистрация: 13.09.2011
Из: Новозыбков
Пользователь №: 14450



NanoBot-AMK, в общем по правке звука дождя - никакие танцы и бубны мне не помогли.
DLL патчится, но игра все равно вылетает при запуске. (IMG:style_emoticons/default/sad.gif)
Перейти в начало страницы
 
 
 RSFSR
сообщение 25.04.2019, 15:03
Сообщение #247


Продвинутый геймер
********

Группа: Участник
Сообщений: 281
Регистрация: 30.09.2015
Пользователь №: 22513



понаставил много звуковых зон. некоторые краями пересекаются(на полметра максимум) и весь уровень накрыл одной большой коробкой с open_space.
большинство зон работает нормально, но некоторые смещаются. сталкивался кто-нибудь с таким?

Перейти в начало страницы
 
 
 macron
сообщение 25.04.2019, 18:16
Сообщение #248


Игровой Бог
**********************

Группа: Участник
Сообщений: 5390
Регистрация: 22.02.2006
Из: Париж
Пользователь №: 3089



RSFSR, если не ошибаюсь, все out внутренних зон должны быль равны in общей зоны.

Сообщение отредактировал macron - 25.04.2019, 18:16
Перейти в начало страницы
 
 
 RSFSR
сообщение 25.04.2019, 19:30
Сообщение #249


Продвинутый геймер
********

Группа: Участник
Сообщений: 281
Регистрация: 30.09.2015
Пользователь №: 22513



macron, да? а я думал это зона, с которой идет пересечение у данной
ок, попробую
Перейти в начало страницы
 
 
 RSFSR
сообщение 25.04.2019, 23:28
Сообщение #250


Продвинутый геймер
********

Группа: Участник
Сообщений: 281
Регистрация: 30.09.2015
Пользователь №: 22513



macron, а у общей зоны какой out?
Перейти в начало страницы
 
 
 macron
сообщение 26.04.2019, 01:14
Сообщение #251


Игровой Бог
**********************

Группа: Участник
Сообщений: 5390
Регистрация: 22.02.2006
Из: Париж
Пользователь №: 3089



Цитата(RSFSR @ 25.04.2019, 23:28) *
а у общей зоны какой out?

Возможно, default.
Перейти в начало страницы
 
 
 RSFSR
сообщение 27.04.2019, 18:25
Сообщение #252


Продвинутый геймер
********

Группа: Участник
Сообщений: 281
Регистрация: 30.09.2015
Пользователь №: 22513



в общем поставил - часть зон поправилось. но некоторые нет.
еще вопрос - как поправить щелканье некоторых звуков после сдк?
желательно без залезания в звуковые редакторы (IMG:style_emoticons/default/smile.gif)
Перейти в начало страницы
 
 
 Yara
сообщение 27.04.2019, 19:10
Сообщение #253


Опытный Игрок
****

Группа: Участник
Сообщений: 52
Регистрация: 20.03.2014
Из: omsk
Пользователь №: 19526



Цитата(RSFSR @ 27.04.2019, 21:25) *
в общем поставил - часть зон поправилось. но некоторые нет.
еще вопрос - как поправить щелканье некоторых звуков после сдк?
желательно без залезания в звуковые редакторы (IMG:style_emoticons/default/smile.gif)

Помогало в sound editor sdk, выставить в поле quality: 1. В редких случаях даже это не поможет и придётся использовать зв.редакторы, а комменты для аи можно сделать с помощью проги
Перейти в начало страницы
 
 
 macron
сообщение 27.04.2019, 20:24
Сообщение #254


Игровой Бог
**********************

Группа: Участник
Сообщений: 5390
Регистрация: 22.02.2006
Из: Париж
Пользователь №: 3089



Цитата(RSFSR @ 27.04.2019, 18:25) *
как поправить щелканье некоторых звуков после сдк?

1. Никогда не пользоваться сраным SDKшным энкодером.
2. Заиметь файл в формате WAV 44100 16 mono. (Хотя у моего энкодера есть параметр --downmix для превращения стерео в моно, не проверял).
3. По очереди использовать энкодер и savandt по сылке.
https://yadi.sk/d/j1Pcoo613MwUqk

Цитата(RSFSR @ 27.04.2019, 18:25) *
в общем поставил - часть зон поправилось. но некоторые нет.

А вообще, EnvFX установлен ?

Сообщение отредактировал macron - 27.04.2019, 20:16
Перейти в начало страницы
 
 
 RSFSR
сообщение 27.04.2019, 20:37
Сообщение #255


Продвинутый геймер
********

Группа: Участник
Сообщений: 281
Регистрация: 30.09.2015
Пользователь №: 22513



а как быть со звуками, которые уже щелкают?
например с финалки:
contact_7.ogg

dropinpool2.ogg - в 1472 есть нормальный нещелкающий в формате .wav, но обычным конвертером не берется
-А вообще, EnvFX установлен ?-
да

Сообщение отредактировал RSFSR - 27.04.2019, 20:38
Перейти в начало страницы
 
 
 macron
сообщение 27.04.2019, 22:00
Сообщение #256


Игровой Бог
**********************

Группа: Участник
Сообщений: 5390
Регистрация: 22.02.2006
Из: Париж
Пользователь №: 3089



Цитата(RSFSR @ 27.04.2019, 20:37) *
dropinpool2.ogg - в 1472 есть нормальный нещелкающий в формате .wav, но обычным конвертером не берется

Только что выложил энкодер wav в ogg. Какие трудности? (IMG:style_emoticons/default/wink_old.gif)

Цитата(RSFSR @ 27.04.2019, 20:37) *
а как быть со звуками, которые уже щелкают?
например с финалки:contact_7.ogg

Как, как - звуковой редактор в зубы, и вперед. Вырезать вручную или фильтрами против щелчков. Я через примитивный Nero wave Editor еще под XP исправил почти все звуки для OLR. На win7 он не заработал, пришлось качать корявый семерошный. Посмотри в ресурсах OLR, может некоторые оттуда подойдут. Или учись сам редактировать, раз в теме.

Сообщение отредактировал macron - 27.04.2019, 22:02
Перейти в начало страницы
 
 
 RSFSR
сообщение 27.04.2019, 22:25
Сообщение #257


Продвинутый геймер
********

Группа: Участник
Сообщений: 281
Регистрация: 30.09.2015
Пользователь №: 22513



Цитата
Только что выложил энкодер wav в ogg. Какие трудности? wink_old.gif

inavalid parametr for bitrate
многие звуки из 1465 билда осилить не может
Перейти в начало страницы
 
 
 macron
сообщение 27.04.2019, 22:33
Сообщение #258


Игровой Бог
**********************

Группа: Участник
Сообщений: 5390
Регистрация: 22.02.2006
Из: Париж
Пользователь №: 3089



Цитата(RSFSR @ 27.04.2019, 22:25) *
inavalid parametr for bitrate

Вопрос был по dropinpool2.wav из 1472, всё нормально кодируется.
https://yadi.sk/d/Gwy_IAzYnxaRug
Перейти в начало страницы
 
 
 RSFSR
сообщение 27.04.2019, 22:49
Сообщение #259


Продвинутый геймер
********

Группа: Участник
Сообщений: 281
Регистрация: 30.09.2015
Пользователь №: 22513



он да, а другие нет
https://my-files.ru/57wt9k
Перейти в начало страницы
 
 
 RSFSR
сообщение 27.04.2019, 23:50
Сообщение #260


Продвинутый геймер
********

Группа: Участник
Сообщений: 281
Регистрация: 30.09.2015
Пользователь №: 22513



уже помогли со звуками), не актуально
Перейти в начало страницы
 
 
 
 

 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 18.06.2019, 08:54