← Щоденник розробки

Жаби, коваль і вантажівка

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

Найцікавіше в цій роботі виявилося не про звук.

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

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

Для тридцятисекундної петлі, яка крутиться годину поспіль, це не «навряд чи завадить». Це писк раз на секунду, який через десять хвилин неможливо перестати чути.

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

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

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

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

У жодній печері немає будівельної техніки. У печері капає вода. Краплі — це вузька смуга, яка ритмічно пульсує, тобто рівно те, що детектор і шукає. Він спрацював бездоганно і знайшов саме те, заради чого цей запис узагалі брали.

Далі стало тільки гірше. Село — 4,11: коваль б’є молотом. Болото — 4,07: жаби. Таверна — 4,25: стукають склянками. Жодного стороннього звуку, чотири спрацювання.

Я спробував розділити їх автоматично. Двічі.

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

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

«Найпевніше, нормально» — це не перевірено

Друга половина роботи — ліцензії, і там знайшлася рівно одна проблема.

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

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

Тепер жоден звук не потрапляє до гри без запису про походження — це перевіряється тестами, а не обіцянкою.

Болото замість села

Перше ж зіставлення місця і звуку виявилося винятком.

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

Він отримав болотяний фон — «село на краю болота», жаби і стояча вода передають це набагато точніше. З чого випливає, що тип місцевості — значення за замовчуванням, а не правило: історія має мати право назвати свій звук. Заразом з’ясувалося, що хата знахарки не отримує жодного фону взагалі, і це правильно: ступив усередину — болото стихло. Тиша тут і є укриттям.

Що мовчить

Яма мовчить цілком. Придатного запису юрби поки немає, а підставляти замість неї ліс — гірше, ніж нічого: невірний звук не просто недоречний, він бреше гравцеві про те, де він перебуває. Непокрите місце мовчить.

І це, мабуть, головне, що лишилося від усієї роботи: вирішити, чого у грі не буде, виявилося важливішим, ніж додати ще один файл.