← Дневник разработки

Лягушки, кузнец и грузовик

Под повествованием теперь звучит фон: болото, лес, пещера, дождь. Пять коротких петель, две с половиной сотни килобайт каждая, включаются по месту, где стоит герой. Звук по умолчанию выключен — в эту игру играют с телефона, часто при других людях, и звук, который включается сам, хуже звука, которого нет вовсе.

Самое интересное в этой работе оказалось не про звук.

Автор честно предупредил

Лесной фон мы взяли с Freesound — запись с диктофона, лицензия CC0, всё чисто. В описании автор написал, что оставил в записи слабый сигнал заднего хода какой-то строительной машины: тихо, вряд ли кому-то помешает.

Для тридцатисекундной петли, которая крутится час подряд, это не «вряд ли помешает». Это писк раз в секунду, который через десять минут невозможно перестать слышать.

Нашёлся он ровно там, где обещано: тон 1078 Гц, повторение примерно 1,4 раза в секунду, тремя группами — в начале, в середине и ближе к концу. Между ними осталось чистое окно с 18-й по 46-ю секунду, оттуда петля и вырезана.

Дальше показалось логичным превратить это в инструмент. Техника ищется просто: узкая полоса около килогерца, которая ритмично пульсирует. У леса такой участок набрал 6,5 против общего шума записи. У чистого дождя — 2,1. Разница очевидная.

Пещера набрала 28

Следующей записью была пещера. Тот же детектор выдал 28,35 — вчетверо больше, чем настоящий сигнал заднего хода.

Ни в какой пещере нет строительной техники. В пещере капает вода. Капли — это узкая полоса, которая ритмично пульсирует, то есть ровно то, что детектор и ищет. Он сработал безупречно и нашёл именно то, ради чего эту запись вообще брали.

Дальше стало только хуже. Деревня — 4,11: кузнец бьёт молотом. Болото — 4,07: лягушки. Таверна — 4,25: стучат стаканами. Ни одного постороннего звука, четыре срабатывания.

Я попробовал разделить их автоматически. Дважды.

Сначала по регулярности: грузовик пищит метрономом, а лягушки квакают вразнобой. Не сработало — чистый дождь тоже вышел «регулярным», потому что мерил я не сигнал, а собственное окно анализа. Потом по форме удара: у гудка ровная полка, у капли и молота резкая атака и затухание. Тоже не сработало — всё легло около одного значения, включая стаканы, которые уж точно ударные.

Вывод пришлось записать в сам инструмент, чтобы не переписывать его в третий раз: детектор показывает, где слушать. Что именно слышно — он сказать не может. Число говорит «здесь что-то периодическое», а периодическое в фоновой записи чаще всего и есть то, за чем пришли.

«Скорее всего, нормально» — это не проверено

Вторая половина работы — лицензии, и там нашлась ровно одна проблема.

Запись таверны отмечена CC0. В описании автор упоминает, что использовал в ней чужой файл со звоном стекла. Свою работу он выложил как общественное достояние, но это верно только если исходник тоже был CC0, а исходник не назван: ни номера, ни ссылки, ни отметки о заимствовании — только фраза в тексте.

Скорее всего, там всё в порядке. Но «скорее всего» и «проверено» — разные вещи, а вся затея держится на том, что библиотека проверяема. Запись отклонена и осталась в списке помеченной: если её просто удалить, через полгода кто-нибудь найдёт тот же файл заново и решит иначе. Причина отказа живёт дольше, чем сам отказ.

Теперь ни один звук не попадает в игру без записи о происхождении — это проверяется тестами, а не обещанием.

Болото вместо деревни

Первое же сопоставление места и звука оказалось исключением.

Гнилой Брод по типу местности — деревня, и деревенский фон у нас есть. Только в нём мычит скотина и работает кузница, а Гнилой Брод третью неделю вымирает от мора. Живая деревня под умирающей деревней звучит как издевательство.

Он получил болотный фон — «деревня на краю болота», лягушки и стоячая вода передают это гораздо точнее. Из чего следует, что тип местности — значение по умолчанию, а не правило: история должна иметь право назвать свой звук. Заодно выяснилось, что изба знахарки не получает никакого фона вовсе, и это правильно: шагнул внутрь — болото стихло. Тишина здесь и есть укрытие.

Что молчит

Яма молчит целиком. Подходящей записи толпы пока нет, а подставлять вместо неё лес — хуже, чем ничего: неверный звук не просто неуместен, он врёт игроку о том, где он находится. Непокрытое место молчит.

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