Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Динамическая музыка в Сталкере
GAMEINATOR forums > S.T.A.L.K.E.R. > Мастерская: создание модов для S.T.A.L.K.E.R.
aka_sektor
Итак.
Кто-то разбирал предметно данный вопрос? Как именно она устроена.
Напомню, впервые введена была в Чистом Небе. Осталась и в Зове Припяти, изменив лишь композиции.
Однако до этого, ЕМНИП, засвечивалась в модах на ТЧ. Оттуда собственно была взята ПЫС и допилена.

UPD:
На примере Зова Припяти. Там за динамическую музыку отвечает:
gamedata\scripts\xrs_dyn_music.script

Если посмотреть на параметры в нём, то враг должен находится от игрока на расстоянии от 75 до 99 метров, чтобы музыка сработала. И от 100 метров, чтобы прекратилась.

UPD2:
За то какие композиции будут играть отвечает:
gamedata\scripts\xrs_dynamic_music_themes.script

Однако если посмотреть этот же файл в Чистом небе, то становится понятно, что тамошняя система более сложная.

Зов Припяти ограничен лишь 4 наборами разных тем по 3 файла:
->

Код
themes={
        {
            files={
                    "music\\combat\\theme1_part_1",
                    "music\\combat\\theme1_part_2",
                    "music\\combat\\theme1_part_3"
                  },
        },
        {
            files={
                    "music\\combat\\theme2_part_1",
                    "music\\combat\\theme2_part_2",
                    "music\\combat\\theme2_part_3"
                  },
        },
        {
            files={
                    "music\\combat\\theme3_part_1",
                    "music\\combat\\theme3_part_2",
                    "music\\combat\\theme3_part_3"
                  },
        },
        {
            files={
                    "music\\combat\\theme4_part_1",
                    "music\\combat\\theme4_part_2",
                    "music\\combat\\theme4_part_3"
                  }
        }
       }



UPD3:
ЧН же задаёт для каждой локации определенный набор динамической музыки. Но не простой. Имеются условия для проигрывания той или иной темы:
->

Код
        maps = "marsh, escape, garbage, darkvalley, agroprom, agroprom_u, yantar, red_forest, military, limansk, hospital",
        files={
            intro_1 = "music\\combat\\theme2_intro_1",
            intro_2 = "music\\combat\\theme2_intro_2",
            danger_1 = "music\\combat\\theme2_danger_1",
            danger_1a = "music\\combat\\theme2_danger_1a",
            danger_2 = "music\\combat\\theme2_danger_2",
            danger_3 = "music\\combat\\theme2_danger_3",
            danger_3a = "music\\combat\\theme2_danger_3a",
            danger_3b = "music\\combat\\theme2_danger_3b",
            danger_3c = "music\\combat\\theme2_danger_3c",
            danger_4 = "music\\combat\\theme2_danger_4",
            danger_5 = "music\\combat\\theme2_danger_5",
            idle_1 = "music\\combat\\theme2_idle_1",
            idle_2 = "music\\combat\\theme2_idle_2",
            combat_1 = "music\\combat\\theme2_combat_1",
            combat_2 = "music\\combat\\theme2_combat_2",
            combat_3 = "music\\combat\\theme2_combat_3",
            combat_4 = "music\\combat\\theme2_combat_4",
            combat_5 = "music\\combat\\theme2_combat_5",
            combat_6 = "music\\combat\\theme2_combat_6",
            combat_7 = "music\\combat\\theme2_combat_7",
            combat_8 = "music\\combat\\theme2_combat_8",
            final_1 = "music\\combat\\theme2_final_1",
            final_2 = "music\\combat\\theme2_final_2",
            final_3 = "music\\combat\\theme2_final_3",
            final_4 = "music\\combat\\theme2_final_4",
            final_5 = "music\\combat\\theme2_final_5"


Расшифровать скорее всего можно так:
intro - враг рядом, но ещё не видит игрока
danger - враг увидел игрока
idle - враг потерял игрока из виду
combat - враг вступил в бой
final - игрок победил врага
Diesel
aka_sektor, это которая срабатывает в засвете ГГ врагами?

Ничего сложного там нет. Я данную фичу прикручивал в БТР, вкачестве плеера.
https://www.amk-team.ru/forum/topic/13331-b...comment=1055710
Diesel
aka_sektor, данную тему можно и логикой отдельной запилить. Получить сигнал тревоги, включить рандомное чтение файлов звуков из папки.
В ЗП это сделать как два пальца об асфальт. И не надо писать целый менеджер.

Есть конечно плюс от пысовской реализации, что не надо целиком файл воспроизводить, а лишь третью часть. Ну и звук как бы заглушается.
aka_sektor
Условия видимо задаются данным кодом:
->
Код
graph={
            null={
                intro_1 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            intro_1={
                final_2 = {"lo","<"},
                danger_1 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            intro_2={
                final_2 = {"lo","<"},
                danger_3 = {"lo",">"},
                combat_6 = {"hi",">"}
            },
            danger_1={
                final_2 = {"lo","<"},
                danger_2 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            danger_1a={
                final_2 = {"lo","<"},
                danger_2 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            danger_2={
                final_1 = {"lo","<"},
                danger_3a = {"lo",">"},
                combat_1 = {"hi",">"}
            },
            danger_3={
                final_2 = {"lo","<"},
                danger_4 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            danger_3a={
                final_2 = {"lo","<"},
                danger_4 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            danger_3b={
                final_2 = {"lo","<"},
                danger_4 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            danger_3c={
                final_2 = {"lo","<"},
                danger_4 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            danger_4={
                final_4 = {"lo","<"},
                danger_5 = {"lo",">"}
            },
            danger_5={
                final_4 = {"lo","<"},
                danger_1a = {"lo",">"},
                combat_6 = {"hi",">"}
            },
            idle_1={
                final_1 = {"lo","<"},
                danger_3a = {"lo",">"},
                combat_1 = {"hi",">"}
            },
            idle_2={
                final_3 = {"lo","<"},
                danger_3c = {"lo",">"},
                combat_4 = {"hi",">"}
            },
            combat_1={
                final_3 = {"lo","<"},
                danger_4 = {"hi","<"},
                combat_2 = {"hi",">"}
            },
            combat_2={
                final_5 = {"lo","<"},
                danger_4 = {"hi","<"},
                combat_3 = {"hi",">"}
            },
            combat_3={
                final_2 = {"lo","<"},
                idle_1 = {"hi","<"},
                combat_4 = {"hi",">"}
            },
            combat_4={
                idle_1 = {"lo","<"},
                idle_1 = {"hi","<"},
                combat_6 = {"hi",">"}
            },
            combat_5={
                final_3 = {"lo","<"},
                danger_4 = {"hi","<"},
                combat_2 = {"hi",">"}
            },
            combat_6={
                final_3 = {"lo","<"},
                idle_2 = {"hi","<"},
                combat_7 = {"hi",">"}
            },
            combat_7={
                final_3 = {"lo","<"},
                idle_2 = {"hi","<"},
                combat_8 = {"hi",">"}
            },
            combat_8={
                final_2 = {"lo","<"},
                danger_3b = {"hi","<"},
                combat_5 = {"hi",">"}
            },
            final_1={
                null = {"lo","<"},
                intro_1 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            final_2={
                null = {"lo","<"},
                intro_1 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            final_3={
                null = {"lo","<"},
                idle_2 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            final_4={
                null = {"lo","<"},
                intro_2 = {"lo",">"},
                combat_5 = {"hi",">"}
            },
            final_5={
                null = {"lo","<"},
                intro_2 = {"lo",">"},
                combat_5 = {"hi",">"}

Однако непонятно как это читать.

Понятно, что это знак ">" больше.
А это "<" меньше.
Что значит "lo" и "hi" ?

UPD:
Если проверить по файлу: xrs_dyn_music.script

Это некие переменные:
Код
        if v[1]=='lo' then glevel=music_lo_lvl end
        if v[1]=='hi' then glevel=music_hi_lvl end

Код
local music_lo_lvl=7
local music_hi_lvl=17
Diesel
aka_sektor, это громкость однако.
aka_sektor
Diesel, если понимаешь в скриптах, опиши подробнее, что как работает. cool.gif

Цитата(Diesel @ 03.07.2020, 21:15) *
от пысовской реализации

На самом деле, в коде скрипта в ЧН например, значится моддер xStream.
Наверное взято из AMK Mod'а было ПЫС.

Цитата(Diesel @ 03.07.2020, 21:15) *
звук как бы заглушается.

Да, вот мне например ЧНовская динамическая музыка нравится. Вроде бы даже был мод, кто-то делал, переносящий её на Зов Припяти.

Интересно, как это получилось. Неужели просто эти 2 скрипта перекинули из ЧН в ЗП?

Или все же есть движковая привязка. Какие-то особые коллбеки. И например, из ЧН/ЗП в ТЧ уже так просто не перекинешь. Нужно костылять там будет. Хотя AMK мод то был на ТЧ вообще то.
Diesel
aka_sektor, я слабак в скриптах. Могу лишь делать вид, что соображаю. Хотя если уметь управлять механизмом, то не обязательно знать его устройство. Зачем ломать голову? Вот бы сейчас все знали как работает впрыск в Д.Д.
ForserX
Помимо скриптовой оболочки есть ещё код, отвечающий за её запуск. Случайно столкнулся, из-за небольшого косяка. Месяца три без неё двиг работал...
aka_sektor
Цитата(ForserX @ 04.07.2020, 22:09) *
код, отвечающий за её запуск

Движковый? Хорошо бы подробнее узнать.

Кста, насчет AMK мода, попутал. Там никогда не было динамической музыки. unsure.gif
Это xStream отдельный выпускал мод, на пару с DEXXX. "Interactive Music Mod": http://stalker-gsc.ru/load/32-1-0-12

Ещё кста, на ТЧ переносили таки музыку из ЧН. Вот мод "Clear Sky Dynamic Music": https://www.amk-team.ru/forum/topic/6843-cl...-dynamic-music/


Уже не знаю, как оно там реализовано.
ForserX
Цитата(aka_sektor @ 04.07.2020, 22:46) *
Движковый? Хорошо бы подробнее узнать.

Я уже не скажу на память, что-то в районе level***.cpp файлов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.