Войти на сайт

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

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

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

  • Безликий
  • Безликий аватар
  • Вне сайта
  • Мастер
  • Сообщений: 245
  • Спасибо получено: 301
  • Даритель СтимкеяУчительПоддержка Фонда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 звуки при перемещении игрока, что надёжнее.
Итог:

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

З.Ы.

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Sleeping Visitor
  • Sleeping Visitor аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 73
  • Спасибо получено: 28
Жаль что на VX Ace такого нет) сам я пока нуб и не осилю такие вещи)
Хотя тоже задумывался о подобных вещах...
Мне вот интересно было бы узнать, как создать эффект 3D звука, чтобы ивент проигрывал его из места своего расположения, тем самым можно было на слух узнать где ивент находится. Разумеется не сильно далеко от игрока, например слышно только те ивенты, что рядом или за пределами экрана но не далее десяти клеток после того, как пропали за границей.
Последнее редактирование: 2 мес. 3 нед. назад от Sleeping Visitor.
Администратор запретил публиковать записи гостям.
Время создания страницы: 0.407 секунд