Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Cкрипт на ambient звук - мини урок

Cкрипт на ambient звук - мини урок 2 нед. 3 дн. назад #125248

  • Безликий
  • Безликий аватар
  • Сейчас на сайте
  • Мастер
  • Сообщений: 215
  • Спасибо получено: 254
  • 2 место в Обучающем конкурсеУчительПоддержка ФондаДаритель Стимкея
Предыстория:

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

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

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

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

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


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


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

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

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


ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


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

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

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

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

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]



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

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

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

З.Ы.

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

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


Последнее редактирование: 1 нед. 6 дн. назад от AnnTenna.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: sando, DarchanKaen, VarVarKa, Alx_Yago, LiRo, LalalalalaBB, SirAndriy

Cкрипт на embient звук - мини урок 2 нед. 3 дн. назад #125253

  • sando
  • sando аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 849
  • Спасибо получено: 888
  • ПаладинПисательПисатель 2 местоПобедитель конкурсаОратор2 место ХудожникУчительОрганизатор конкурсов3 место
Любопытный урок!

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

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

Cкрипт на embient звук - мини урок 2 нед. 3 дн. назад #125254

  • Безликий
  • Безликий аватар
  • Сейчас на сайте
  • Мастер
  • Сообщений: 215
  • Спасибо получено: 254
  • 2 место в Обучающем конкурсеУчительПоддержка ФондаДаритель Стимкея
Единственное что расстроило - что показывал "не в бою" - то есть, собственно, не в хорроре.

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

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

Cкрипт на embient звук - мини урок 2 нед. 3 дн. назад #125263

  • DarchanKaen
  • DarchanKaen аватар
  • Вне сайта
  • Мастер
  • Сообщений: 192
  • Спасибо получено: 157
  • ВетеранРазработчикПроект месяца 1 место
Полезно, спасибо.
Мои игры [ Нажмите, чтобы развернуть ]
Администратор запретил публиковать записи гостям.

Cкрипт на embient звук - мини урок 2 нед. 2 дн. назад #125269

  • nirion
  • nirion аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 70
  • Спасибо получено: 40
  • Проект месяца 3 место
Мне тоже очень нравится нравиться твой канал, этот скрипт просто супер, я только не много его использовал в своей игре, но думаю, это будет ещё много раз
Последнее редактирование: 2 нед. 2 дн. назад от nirion.
Администратор запретил публиковать записи гостям.

Cкрипт на embient звук - мини урок 1 нед. 1 день назад #125358

  • DarchanKaen
  • DarchanKaen аватар
  • Вне сайта
  • Мастер
  • Сообщений: 192
  • Спасибо получено: 157
  • ВетеранРазработчикПроект месяца 1 место
Оказалось еще полезнее, чем я думал!
Выяснилось, логику дальности можно приспособить не только для звука, но и для оттенка экрана.
С этим, конечно, нужно хорошо поиграться...Но вот минимально-работающий пример кода.
код [ Нажмите, чтобы развернуть ]

В теме конкурса сделал демку на звук + оттенок экрана:
rpgmaker.ru/forum/konkursy-i-golosovanij...kurs?start=20#125357
Мои игры [ Нажмите, чтобы развернуть ]
Последнее редактирование: 1 нед. 1 день назад от DarchanKaen.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Alx_Yago, xrenj

Cкрипт на embient звук - мини урок 1 нед. 1 день назад #125359

  • Alexandr_7
  • Alexandr_7 аватар
  • Сейчас на сайте
  • Светлый дракон
  • Сообщений: 919
  • Спасибо получено: 357
  • Проект месяца 3 местоПроект месяца 2 местоУчительВетеран
DarchanKaen пишет:
Оказалось еще полезнее, чем я думал!
Выяснилось, логику дальности можно приспособить не только для звука, но и для оттенка экрана.
С этим, конечно, нужно хорошо поиграться...Но вот минимально-работающий пример кода.
код [ Нажмите, чтобы развернуть ]

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

Может ткие функции в свое ядро запихнуть. Раотать будут на переменных. Как считаете? Мне конешно не особо нужно но не сложно.
Мой вк: vk.com/borisov_alexandr_5
Мой дискорд: Alexandr_5#6523
Администратор запретил публиковать записи гостям.

Cкрипт на embient звук - мини урок 1 нед. 1 день назад #125360

  • Безликий
  • Безликий аватар
  • Сейчас на сайте
  • Мастер
  • Сообщений: 215
  • Спасибо получено: 254
  • 2 место в Обучающем конкурсеУчительПоддержка ФондаДаритель Стимкея
DarchanKaen пишет:
Оказалось еще полезнее, чем я думал!
Выяснилось, логику дальности можно приспособить не только для звука, но и для оттенка экрана.
С этим, конечно, нужно хорошо поиграться...Но вот минимально-работающий пример кода.
код [ Нажмите, чтобы развернуть ]

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

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