Cкрипт на ambient звук - мини урок

Поддержка Фонда Даритель Стимкея 2 место в Обучающем конкурсе Учитель
Больше
4 года 6 мес. назад - 4 года 5 мес. назад #125248 от Безликий
Предыстория:

В данном уроке мы рассмотрим скрипт, разработанный для RPG Maker MV и MZ одним хорошим человеком – Володей. Идея появилась уже давно, ещё пару лет назад при тесте одной игры, которая пыталась в Хоррор, но без атмосферы ничего не вышло. Но недавно, я вспомнил про энтити окружения в Вальве Хаммере, том самом, где делаю карты для Коунтер-Страйк. И подумал. Почему бы не сделать аналог на РПГ мейкере для того, чтобы событие при приближении к нему выводило определённый звук. Собственно, с этой идеей я обратился к коллеге по цеху, но как говорится «у дураков мысли сходятся», а значит он и без моей помощи задумался ровно о том же. Ну а моя просьба стала толчком к разработке.

По итогу, за пару дней, был разработан, протестирован и доведён до ума скрипт, который заставляет событие выводить звук BGS, когда игрок подходит в заданный от объекта радиус, не используя при этом ни переключателей, ни регионов или кода местности, опираясь лишь на расположение игрока и расположение события.

Для чего подобное вообще может быть нужно? Всё просто, создание атмосферы на карте, при помощи звука. Например: звук воды, фонтана, огня, каких-то животных или шепот людей, когда мы подходим к этим местам. Казалось бы, простейшая функция, но почему-то, даже в играх высокого уровня, с хорошими оценками от критиков и игроков, с высокими продажами в том числе, похожей атмосферной функции просто нет. А очень зря.

Вот и сам скрипт:

ВНИМАНИЕ: Спойлер!


И так, что нам надо, чтобы событие с этим скриптом заработало? Всё просто – выставить триггер на параллельно и вставить скрипт. Что примечательно, скрипт работает в RPG Maker MV и RPG Maker MZ.


Ну что, вот так будет выглядеть событие с этим скриптом. Оно работает, можно наслаждаться.

Но как его настроить под себя, что менять и куда писать?
  • Начнем с самого звука, в третьей строчке скрипта есть запись, которая отвечает за название файла звука. Var Name = “music”, файл данного звука берется из папки \audio\bgs вашего проекта. Указывать расширение файла при этом не надо.
  • Теперь нам нужно настроить радиус, в рамках которого и будет включаться данный фоновый звук. И тут нет особой науки, первая же переменная в скрипте отвечает за этот самый радиус, собственно – она так и называется var Radius. Чем выше радиус, тем соответственно дальше от события начинает проигрываться звук. Тут нужно учесть, что находиться в зоне действия сразу двух таких событий нельзя. Дело в том, что особенности РПГ Мейкера, в вопросе воспроизведения звуков, не позволяют проигрывать сразу два BGS или BGM звука, только один в один момент времени. Если игрок попадает в действие сразу двух таких событий, начинаются артефакты воспроизведения - на пересечении радиусов событий звук пропадает. Штука неприятная. Поэтому планируя локации, стоит быть внимательными к тому, где будут располагаться подобные ивенты.
  • Далее, значимым показателем может быть переменная volume – тут у нас возможность настроить громкость звука вначале радиуса, именно с этого показателя музыка начнет проявляться и увеличиваться до максимального значения ближе к расположению самого ивента
  • Переменная pitch, которая отвечает за скорость воспроизведения звука. Не вижу смысла тут менять значение, ведь замедлять или ускорять звук скорее всего - Вам будет не нужно.
  • А вот переменная PanMultiplier довольно занятная, она отвечает за силу эффект, который проявляется по мере приближения к событию с одной из конкретных сторон слева/справа. Тут у нас вступает в силу стерео-эффект, в зависимости от того, с какой стороны от игрока находится событие сила звука в соответствующем динамике будет сильнее на подходе к ивенту и выровнится только вблизи с ним. Чем выше значение этой переменной, тем более явным будет стерео-эффект.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Теперь давайте поговорим на конкретных примерах:


ВНИМАНИЕ: Спойлер!


На этой картинке видно, что есть некое событие внутри загона с курями. Именно оно воспроизводит звук кудахтанья птицы, когда игрок начинает подходить к загону. Особенностью можно назвать то, что радиус высчитывается как бы «ромбовидно», но это опять же особенности мейкера. В этом событии установлен радиус в 5 клеток, учитывая само событие, получается 11 клеток слева направо и снизу вверх и диагонали между этими вершинами. Именно в таком диапазоне тайлов начнётся работа скрипта и за его пределами она прекратиться.

Если же радиусы двух разных событий звука совпадут, будут артефакты связанные с одновременной попыткой мейкера запустить два BGS звука, что в рамках «чистого» движка невозможно, по этому напоминаю о том, что стоит планировать расположение подобных событий более грамотно.

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

Давайте глянем на вторую картинку, чтобы понять о чем идёт речь. Вот она:

ВНИМАНИЕ: Спойлер!



Тут у нас загон со свинюшками, они погромче чем курицы и поэтому радиус значительно выше. Но если присмотреться, можно заметить, что действие события со звуком (под номером 1) распространяется и на уровень события двери (под номером 2). Дверь же активирует перенос персонажа внутрь дома. И логичный вопрос, а что будет с BGS звуком – ответ очевиден, он так и останется играть. Точнее, конкретно в этом случае персонаж при нажатии на событие двери будет вне зоны действия скрипта, но если персонаж сделает шаг в сторону двери, наступив при этом в зону работы скрипта, начнёт воспроизводиться звук. А так как персонаж вместе с этим перенесётся и на новой локации события отвечающего за проигрывание и отключение звука нет – то и отключиться BGS не сможет.

Разумеется, решить это можно правильным подбором радиуса действия события со звуком, либо принудительно выключать BGS звуки при перемещении игрока, что надёжнее.
Итог:

Скрипт довольно простой, но работает хорошо. Его основная функция это создание атмосферы на карте при помощи звуков, но использовать можно и совершенно в других целях, например создавать механики завязанные на умении персонажа слышать или квесты, в которых игроку придётся ориентироваться на звуки. Тут уж куда Вас заведёт фантазия.

З.Ы.

Тем же, кому удобнее воспринимать информацию в видео-формате на моём канале имеется и такой вариант. Встраиваю его сюды:

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


Последнее редактирование: 4 года 5 мес. назад пользователем AnnTenna.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Художник Писатель 2 место Учитель Оратор Паладин Организатор конкурсов Писатель 3 место Победитель конкурса 2 место
Больше
4 года 6 мес. назад #125253 от sando
Любопытный урок!

Единственное что расстроило - что показывал "не в бою" - то есть, собственно, не в хорроре.

Также, поглядела твой канал и считаю, что он зачетный ^_^ Как минимум, в отношении туториалов по мейкеру.

vk.com/sando_rpgmaker - пустая болтовня (приходите)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Поддержка Фонда Даритель Стимкея 2 место в Обучающем конкурсе Учитель
Больше
4 года 6 мес. назад #125254 от Безликий

Единственное что расстроило - что показывал "не в бою" - то есть, собственно, не в хорроре.


Ну, я жанр сильно недолюбливаю (8 по сему и не делаю ничего в нём.

Также, поглядела твой канал и считаю, что он зачетный ^_^ Как минимум, в отношении туториалов по мейкеру.


Спасибо, приятно видеть такие отзывы.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Проект месяца 1 место Ветеран 3 место в Обучающем конкурсе Проект месяца 2 место
Больше
4 года 6 мес. назад #125263 от DarchanKaen
Полезно, спасибо.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Учитель
Больше
4 года 6 мес. назад - 4 года 6 мес. назад #125269 от nirion
Мне тоже очень нравится нравиться твой канал, этот скрипт просто супер, я только не много его использовал в своей игре, но думаю, это будет ещё много раз
Последнее редактирование: 4 года 6 мес. назад пользователем nirion.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Проект месяца 1 место Ветеран 3 место в Обучающем конкурсе Проект месяца 2 место
Больше
4 года 5 мес. назад - 4 года 5 мес. назад #125358 от DarchanKaen
Оказалось еще полезнее, чем я думал!
Выяснилось, логику дальности можно приспособить не только для звука, но и для оттенка экрана.
С этим, конечно, нужно хорошо поиграться...Но вот минимально-работающий пример кода.
код

В теме конкурса сделал демку на звук + оттенок экрана:
rpgmaker.ru/forum/konkursy-i-golosovanij...kurs?start=20#125357
Последнее редактирование: 4 года 5 мес. назад пользователем DarchanKaen.
Спасибо сказали: Alx_Yago, xrenj

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
4 года 5 мес. назад #125359 от Alexandr_7

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

код

В теме конкурса сделал демку на звук + оттенок экрана:
rpgmaker.ru/forum/konkursy-i-golosovanij...kurs?start=20#125357


Может ткие функции в свое ядро запихнуть. Раотать будут на переменных. Как считаете? Мне конешно не особо нужно но не сложно.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Поддержка Фонда Даритель Стимкея 2 место в Обучающем конкурсе Учитель
Больше
4 года 5 мес. назад #125360 от Безликий

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

код

В теме конкурса сделал демку на звук + оттенок экрана:
rpgmaker.ru/forum/konkursy-i-golosovanij...kurs?start=20#125357


Технически логика подходит для многих вещей, у нас уже есть скрип для плавного изменения прозрачности графики ивентов (8 ну а так, делать можно что угодно.
Спасибо сказали: DarchanKaen

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
4 года 1 мес. назад - 4 года 1 мес. назад #126673 от Sleeping Visitor
Жаль что на VX Ace такого нет) сам я пока нуб и не осилю такие вещи)
Хотя тоже задумывался о подобных вещах...
Мне вот интересно было бы узнать, как создать эффект 3D звука, чтобы ивент проигрывал его из места своего расположения, тем самым можно было на слух узнать где ивент находится. Разумеется не сильно далеко от игрока, например слышно только те ивенты, что рядом или за пределами экрана но не далее десяти клеток после того, как пропали за границей.
Последнее редактирование: 4 года 1 мес. назад пользователем Sleeping Visitor.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.118 секунд
Работает на Kunena форум