[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Добавление звуков в игру
monolito-sДата: Воскресенье, 25.12.2011, 20:40 | Сообщение # 1
Киллер
Группа: Повелитель Зоны
Сообщений: 335

Персонаж: Каратель


 
Как правильно вставить свои звуки в игру:
Во первых требуется звуковой редактор, можно любой ( я использую TotalAudioConverter).
Нужно перевести ваши mp3 файлы в WAV формат 44100Гц, Моно, 16 бит, желательно сохранить в отдельную папку,(для последующих экспериментов).
Почему сразу нельзя сохранить звук в формате ogg 44100Гц, Моно, 16 бит, в принципе
можно, вот только в комментах Ogg файла должны прописываться параметры распространения звука по игровому миру. Именно по этой причине собственные звуки в игре практически не слышно на определенных расстояниях.
Теперь нам понадобится X-Ray SDK – официальный пакет разработчика для игры S.T.A.L.K.E.R.
Открываем меню Пуск/программы/X-Ray SDK жмём Map X-Drave для создания диска X.
Заходим на диск Х и в папку rawdata/sounds копируем наши файлы в формате Wav( советую сразу переименовать файлы на те которые хотите заменить, геммороя будет меньше, если что-то не получится)
Потом запускаем Level Editor, справа вверху находим меню Звуки (или Sounds, у кого английская версия) жмём и выбираем Звуковой редактор
Там увидим наши файлы, выбираем файл и изменяем следующие параметры:
Quality -0,00 изменяет битрейт файла,игра поддерживает до 80Kбит/c (ставьте не больше 0,4)
MinDist = 1.00 - расстояние, с которого звук начнет затухать (практически это и есть громкость звука)
MaxDist = 300.0 - максимальное расстояние, на котором звук будет слышен ГГ
MaxAIDist = 300.0 - максимальное расстояние, на котором звук будут слышать NPC
BaseVolume = 1.0 - громкость
Дальше надо выбрать к какому типу отнести звук: приведу только нужные
Game Type:
- undefined – неопределенный, на них NPC не реагируют
- Weapon shooting – выстрел оружия
- NPC dying - смерть NPC (Здесь значение MaxAIDist надо поставить поменьше,в игре
стоит 40м, из-за этого нельзя втихую перебить тех-же бандитов не поднимая шума)
- NPC injuring - ранение NPC
- NPC talking - разговор NPC
- Anomaly idle – звуки аномалий
- World ambient - звуки окружающего мира
Теперь жмём ОК и ждём пока закончится синхронизация. Если всё получилось правильно
идём на диск Х в папку gamedata\sounds там забираем готовые ogg файлы и вставляем их
в игру.
Удачного модинга!

2. Новые диалоги

Создание новых веток диалогов
Теория

1) Списки веток диалогов содержатся в файлах вида gamedata/config/gameplay/character_desc_*.xml

Это, например:

character_desc_zombied.xml character_desc_stalker.xml character_desc_garbage.xml ...

Файлы character_desc_*.xml можно сравнить со стволом дерева диалогов. В них перечисляется названия прикрепляемых веток диалогов

Например вот список веток диалога с Сидоровичем взятый из файла character_desc_escape.xml
escape_trader_start_dialog
escape_trader_talk_info
escape_trader_jobs
tm_trader_dialog
tm_trader_reward
escape_trader_done_blockpost_box

В свою очередь каждая ветка диалога также может ветвится.

2) Ветвление диалогов прописывается уже в других файлах.

Например, ветвление диалога с Сидоровичем содержится в файле gamedata/config/gameplay/dialogs_escape.xml Возьмем оттуда, например, ветвление escape_trader_jobs.

Ветвление имеет довольно большие масштабы, поэтому приведу только часть:

escape_dialog.trader_has_talk_info_wr
tutorial_end


escape_trader_talk_info_1
100
99
9995

...

escape_trader_talk_info_0
1




Здесь - это проверка выполнения условия. Ветка появится в диалоге, только если условие выполняется. Конкретно escape_dialog.trader_has_talk_info_wr из ветки escape_trader_talk_info - это обращение к функции trader_has_talk_info_wr, находящейся в файле скрипте gamedata/scripts/escape_dialog.script

Функция выглядит так:
function trader_has_talk_info_wr( trader, actor )
return true
end

То есть, судя по его структуре, escape_dialog.trader_has_talk_info_wr выполняется всегда, т.к. функция всегда возвращает истину и пропускается в списк реплик.

Но для конкретной ветки может быть несколько precondition и других условий.

Далее, tutorial_end - это еще одна проверка, на этот раз на наличие у игрока так называемых infoportions, выдаваемы в процессе ключевых диалогов. В данном случае это проверка на то, закончена ли определенная стадия туториала, или нет. Т.е. ветка допустится в список реплик если стадия туториала закончена.

Более детально мы это разберем в конце статьи.

А далее идут конкретные фразы, содержащие ссылки на вытекающие фразы, например:

escape_trader_talk_info_0
1


Это основа ветки escape_trader_talk_info.

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

1 - это ссылка на вытекающую фразу :

escape_trader_talk_info_1
100
99
9995


В свою очередь 100, 99, 9995 это ссылки на фразы веточки растущие из фразы .

3) Текст каждой фразы содержится в третьем файле. Для диалога с Сидоровичем тексты лежат в файле gamedata/config/text/rus/stable_dialogs_escape.xml

Есть несколько вопросов.


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


...

Эти строки содержат тексты для фраз и

Итого диалоги разложены по трем, а то и более файлам.

Да кстати, путь по веткам может быть зацикленным, если того требует диалог. Например так:

...
1
2


...
11
12


...
1 - Это возврат к фразе №1 (зацикливание)
111

Практика

Добавим в диалог с Сидоровичем ветку своего собственного изготовления.Например такую:
Меченый: Сидрыч, а чего это у тебя зеленые человечки, что по столу бегают, такие худые?
Сидорович: Чего?!
Меченый: Ты их совсем, совсем не кормишь?
Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то
мало что таким перегаром дышишь, уже до зеленых человечков долечился... Шутник.

Для этого:

1) В файле gamedata/config/gameplay/character_desc_escape.xml в конце списка веток для trader припишем свою ветку с произвольным названием. Это будет, например, escape_trader_letat_gusi.

Т.е у нас получится так:

...
escape_trader_start_dialog
escape_trader_talk_info
escape_trader_jobs
tm_trader_dialog
tm_trader_reward
escape_trader_done_blockpost_box
escape_trader_letat_gusi



Записываем изменения, с этим файлом пока всё.

2) Теперь берем файл gamedata/config/gameplay/dialogs_escape.xml

Диалогу:
Меченый: Сидрыч а почему это у тебя зеленые человечки, что по столу бегают, такие худые?
Сидорович: Чего?!!
Меченый: Ты их совсем, совсем не кормишь?
Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то
мало что таким перегаром дышишь, уже до зеленых человечков долечился... Шутник.

Будет соответствовать такая структура:

escape_trader_letat_gusi_0
1


escape_trader_letat_gusi_1
2


escape_trader_letat_gusi_2
3


escape_trader_letat_gusi_3


Условия наличия ветки в диалоге можно взять из ветки .

Т.е берем условия escape_dialog.trader_has_talk_info_wr и tutorial_end. Можно было, конечно, прописать в скрипте еще одно условие для ветки, чтобы она появилась только один раз, а потом больше не возникала. Но об этом как-нибудь позже.

В итоге у нас получилась такая структура:

escape_dialog.trader_has_talk_info_wr
tutorial_end


escape_trader_letat_gusi_0
1


escape_trader_letat_gusi_1
2


escape_trader_letat_gusi_2
3


escape_trader_letat_gusi_3




Её нужно вставить в любом месте между dialog id'ами других веток в файле dialogs_escape.xml. Главное - не промахнутся и засунуть именно между, а не внутрь одного из dialog id.

После сохранения внесенных изменений с файлом dialogs_escape.xml все.

3) Теперь вбиваем сами текстовички в файле gamedata/config/text/rus/stable_dialogs_escape.xml

Т.е нам надо в файле stable_dialogs_escape.xml вставить такую конструкцию:

Сидрыч, а чего это у тебя зеленые человечки, что по столу бегают, такие худые?


Чего?!


Ты их совсем, совсем не кормишь?


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



В любом месте между уже существующими string id. После сохранения изменений, у нас все готово. Можно загружать игру и смотреть что получилось.
Дополнительно

Внимание! После патча 1.002 данный урок перестал работать. Причина - со вторым патчем несовместимо это условие:
escape_dialog.trader_has_talk_info_wr

Дело в том, что во втором патче из файла escape_dialog.script была удалена функция:
function trader_has_talk_info_wr( trader, actor )
return true
end

Можно либо записать эту функцию обратно в escape_dialog.script, либо использовать другие более-менее подходящие условия, например:
escape_dialog.trader_alredy_give_job

Всё. Мы научились писать простые диалоги.
 
  • Страница 1 из 1
  • 1
Поиск:

Вход на сайт
Мини-чат
Опросы
Чего не хватает?
Всего ответов: 208
Статистика