PlayPendium

Tempo Lock · Пища для размышлений

Когда щелчок умолкает

Игра начинается со щелчка, задающего темп; затем щелчок умолкает, и игрок должен продолжать отбивать тот же темп сквозь тихие такты.

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

Устройство раунда

Раунд в Tempo Lock строится из задания, которое определяет четыре вещи: число ударов в минуту для темпа, число тактов, в течение которых играет щелчок, число тихих тактов, что следуют за ними, и число долей в такте — числитель размера. По этим полям движок выстраивает весь раунд — от первой слышимой доли до последней тихой. Темп задаёт скорость щелчка, слышимые такты определяют, как долго игрок слышит метроном, а тихие такты ставят задачу удержать этот темп без щелчка. Число долей в такте определяет, сколько долей приходится на каждый такт, и игра во всех раундах ставит его равным 4, то есть размеру 4/4. 3

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

Щелчок отбивает заданный темп в течение слышимых тактов, затем умолкает, и игрок должен продолжать отбивать тот же темп сквозь тихие такты.

Щелчок и тишина

Щелчок — это слышимый сигнал, устанавливающий темп раунда. Он звучит в заданном темпе всё время слышимых тактов, отмечая каждую долю коротким звуком. Этот щелчок работает как метроном, издавая звук через равные промежутки, только промежуток здесь задан заданием раунда, а не игроком. Сначала звучит затакт из четырёх ударов, а первая доля каждого такта получает щелчок повыше. Музыканты пользуются метрономом, чтобы играть или заниматься в такт, удерживая ровный темп и ровную пульсацию. Щелчок в игре служит той же цели в слышимой фазе, давая игроку точку отсчёта, под которую тот подстраивает свои нажатия. 2

Когда слышимые такты заканчиваются, щелчок умолкает совсем. Игрок больше не слышит метроном и должен продолжать отбивать тот же темп сквозь тихие такты. Эта тишина и создаёт главную трудность игры: темп приходится держать в голове, без внешней опоры. Тишина не пуста — она заполнена памятью о темпе и попыткой игрока его сохранить. Позже счёт измерит, насколько хорошо игрок удержал темп в этой тишине. 3

Сырые отметки времени и детерминизм

Движок работает исключительно с сырыми отметками времени нажатий, измеренными в миллисекундах. Каждое нажатие записывается как абсолютное значение времени, и все вычисления выводятся из этих отметок вместе с заданием. Одна и та же последовательность отметок всегда даёт один и тот же результат, а значит, движок детерминирован и проверяем без часов. Такой подход снимает всякую неоднозначность в расчётах времени и обеспечивает одинаковую оценку при разных прогонах с одними и теми же входными данными. 3

Функции подсчёта очков в движке принимают на вход сырые отметки времени нажатий в миллисекундах вместе с заданием. Благодаря этому движок можно испытывать заранее заготовленными последовательностями отметок и проверять результат, не запуская игру в реальном времени. Детерминизм распространяется и на генератор псевдослучайных чисел с зерном, который выбирает целевой темп для каждого раунда. Одно и то же зерно и одна и та же сложность всякий раз задают одно и то же задание, и дальше каждое правило проверяемо. 3

Движок работает с сырыми отметками времени нажатий, поэтому одни и те же нажатия всегда дают один и тот же результат.

Как темп восстанавливают по нажатиям

Движок восстанавливает оценку темпа по среднему промежутку между соседними нажатиями. Он вычисляет межнажатийные промежутки — разности времени между каждым нажатием и предыдущим, — а затем берёт их среднее, пропуская любой промежуток, равный нулю или отрицательный; при менее чем двух нажатиях он не сообщает темпа вовсе. Число ударов в минуту выводится из этого среднего промежутка и даёт меру темпа, который игрок держал на протяжении отбитой последовательности. Эта функция работает независимо от заданного темпа и даёт объективное измерение того, что игрок сделал на самом деле. 3

Восстановленный темп показывают на экране результата как “Your tempo” («Ваш темп») рядом с заданным, чтобы игрок видел, насколько близко он подошёл к нужной скорости. Расчёт опирается только на сырые отметки времени и охватывает все записанные нажатия — и в слышимой фазе, и в тихой. Он приводится лишь для сведения: сам счёт вычисляется по отклонению, а не по восстановленному темпу. 3

Измерение отклонения от сетки

Система очков вознаграждает игрока за то, что его нажатия держатся близко к идеальной сетке метронома в тихой фазе. Идеальная сетка — это положения долей, которые получились бы, если бы метроном запустился на первом нажатии игрока и дальше шёл в заданном темпе. Каждое нажатие сопоставляется с ближайшей идеальной долей, и разница между ними и есть отклонение этого нажатия. Учитываются только те нажатия, чья ближайшая доля попадает в тихую фазу, и, поскольку каждое сопоставляется с ближайшей долей, ни одно нажатие не может отклониться больше чем на половину доли. Каждая доля тихой фазы, оставшаяся без нажатия, засчитывается как промах в половину доли — наихудший случай — и включается в то же среднее, так что пропуск долей поднимает среднее отклонение и опускает счёт, а тот, кто в тишине не нажал ничего, получает ноль. 3

Такой подход через отклонение превращает удержание темпа в измеримую величину. Движок не просто проверяет, попали ли нажатия в некоторое окно, — он измеряет точное отступление от идеальных положений. Безупречное удержание с нулевым средним отклонением даёт 1000 очков, а к 0 счёт падает по прямой при среднем отклонении в четверть доли, так что меньшее отклонение всегда даёт больше очков. Шкала измеряется в долях, а не в миллисекундах, поэтому она означает одно и то же при любом темпе: при 120 ударах в минуту четверть доли — это 125 миллисекунд, при 80 — 187,5. Четверть доли — это ещё и то, что даёт в среднем случайное нажимание, так что случайные нажатия не приносят почти ничего. На экране результата среднее отклонение всё же показывают в миллисекундах и превращают счёт в вердикт: “Locked in!” («темп удержан!») при 850 и выше, “Tight.” («плотно») при 650 и выше, “Wobbly.” («шатко») при 350 и выше и “Lost the beat.” («доля потеряна») ниже того. Так получается непрерывная шкала мастерства вместо двоичного «прошёл — не прошёл», позволяющая тонко оценить точность во времени. 3

Счёт по отклонению измеряет, насколько точно игрок держит темп в тишине.

Наборы сложности

Игра предлагает три набора сложности — Easy, Medium и Hard («лёгкий», «средний» и «трудный»), — которые меняют диапазон темпа и число тихих тактов. Слышимых тактов в каждом наборе четыре. Easy берёт темп между 70 и 100 ударами в минуту и просит четыре тихих такта; Medium берёт между 90 и 130 и просит шесть; Hard — между 110 и 170 и просит восемь. Эти наборы дают игрокам выбор вызова: от мягких темпов с короткими тихими участками до быстрых темпов с долгим удержанием. 3

Наборы сложности действуют внутри той же детерминированной схемы, что и остальной движок. Каждый набор задаёт задание с определёнными значениями полей, и движок обрабатывает это задание точно так же, как любое другое. Трудность кроется в сочетании темпа и числа тихих тактов, которое определяет, как часто идут доли и как долго игрок должен держать их без щелчка. Система очков одинакова для всех наборов и измеряет отклонение от идеальной сетки независимо от выбранной сложности, а поскольку её шкала задана в долях от длительности доли, один и тот же счёт означает одну и ту же относительную точность и на быстром темпе Hard, и на медленном Easy. 3

Темп, стоящий за игрой

В музыке темп — это скорость, с которой исполняется произведение, измеряемая в ударах в минуту. Темп 60 ударов в минуту означает один удар в секунду, а темп 120 ударов в минуту вдвое быстрее — два удара каждую секунду. Длительность ноты, приходящейся на удар, обычно та, что указана знаменателем размера. Темп может задаваться итальянскими обозначениями — от медленных, таких как largo и andante, до быстрых, таких как allegro и presto, — или метрономической пометкой с конкретным числом ударов в минуту. Обозначения темпа передают не только скорость, но и настроение, и темп не обязан быть неизменным: композитор может выписать accelerando (ускорение) или ritardando (замедление) внутри пьесы 1. Игра берёт именно это понятие темпа как неизменной величины в ударах в минуту: заданное число bpm задаёт скорость всего раунда.

Темп в игре — это то число ударов в минуту, которое отбивает щелчок и которое должен держать игрок. Это единственное число, определяющее скорость раунда, и оно стоит в задании рядом с числами тактов. Игрок отбивает этот темп, а движок измеряет, насколько хорошо он его держит. В течение раунда темп не меняется: это постоянная точка отсчёта, относительно которой оценивают игрока. 3

Метроном как устройство

Метроном — устройство, издающее щелчок или иной звук через равные промежутки, которые пользователь может задать, обычно в ударах в минуту. Инструменталисты и певцы занимаются под него, чтобы держать ровный темп и ровную пульсацию. В традиционном механическом метрономе есть маятник с грузом: сдвиг груза вверх по стержню замедляет темп, а вниз — ускоряет, и механизм издаёт щелчок на каждом взмахе. Иоганн Мельцель (Johann Maelzel) запатентовал механический метроном в 1815 году и с 1816-го наладил его серийный выпуск, опираясь на более раннюю пружинную конструкцию с перевёрнутым маятником Дитриха Николауса Винкеля (Dietrich Nikolaus Winkel) и добавив числовую шкалу темпа; современные метрономы бывают и кварцевыми электронными приборами, и программами 2.

Щелчок в игре в слышимой фазе работает как метроном, отбивая заданный темп в течение слышимых тактов. Он даёт тот равный промежуток, под который игрок должен подстроить свои нажатия. Когда щелчок умолкает, игрок должен держать тот же темп без прибора, и это проверяет его способность нести темп внутри себя. Роль метронома в игре в том, чтобы установить темп, а затем устраниться, оставив игрока нести темп дальше в одиночку. 3

Задание и его поля

Задание — это центральная структура данных, определяющая каждый раунд. В нём четыре поля: темп в ударах в минуту; число слышимых тактов, в течение которых играет щелчок; число тихих тактов, что следуют за ними; и число долей в такте — числитель размера, равный 4 для размера 4/4. Вместе эти поля определяют устройство раунда, от числа долей в слышимой фазе до их числа в фазе тихой. 3

По заданию движок вычисляет все производные величины, которые управляют раундом. Из темпа он выводит длительность каждой доли в миллисекундах. Из чисел тактов и числа долей в такте он выводит общее число долей и ту долю, на которой начинается тишина. В течение раунда задание неизменно, а значит, темп и числа тактов остаются постоянными. Игрок может отвечать заданию лишь одним: отбивать нужный темп и попадать нажатиями в идеальную сетку. 3

От отметок времени к счёту

Путь от отметок времени нажатий к итоговому счёту идёт чередой ясных вычислений. Сначала игра записывает каждое нажатие как отметку в миллисекундах, отбрасывая нажатия, сделанные более чем за половину доли до конца затакта из четырёх ударов. В слышимой фазе игрок отбивает вместе со щелчком, вырабатывая чувство темпа. Когда щелчок умолкает, игрок продолжает отбивать сквозь тихие такты. Затем движок измеряет отклонение каждого нажатия тихой фазы от идеальной сетки метронома, привязанной к первому нажатию, усредняет эти отклонения, считая каждую неотбитую тихую долю промахом в половину доли, и переводит это среднее, взятое как доля от длительности доли, в счёт от 0 до 1000. Вместе со счётом он сообщает темп, восстановленный по среднему межнажатийному промежутку, и число нажатий в тихой фазе. 3

Этот конвейер целиком детерминирован. При одном и том же зерне и одной и той же сложности порождается одно и то же задание. При одном и том же задании и одних и тех же отметках времени вычисляется один и тот же счёт. Движок не зависит ни от стенных часов, ни от какой-либо внешней опоры; он зависит только от отметок времени и задания. Это делает систему и надёжной, и проверяемой: каждый шаг можно поверить заранее заготовленными входами и ожидаемыми выходами. 3

Каждое правило движка проверяемо, и каждый результат определяется зерном, заданием и отметками времени.

Тихая фаза как измерение

Измерение происходит именно в тихой фазе. В слышимой фазе щелчок служит опорой, и игрок может подстраивать под него нажатия. В тихой фазе такой опоры нет, и нажатия игрока показывают, насколько хорошо он усвоил темп. Движок измеряет это усвоение, сравнивая каждое нажатие с идеальным положением доли, продолженным от первого нажатия игрока в заданном темпе. Разница между нажатием и идеальным положением и есть отклонение этого нажатия. 3

В тихой фазе замысел игры проступает отчётливее всего. Щелчок отбивает заданный темп в течение слышимых тактов, затем умолкает, и игрок должен продолжать отбивать тот же темп сквозь тихие такты. Длительность тихой фазы, определяемая числом тихих тактов и числом долей в такте, задаёт длину периода измерения. Чем длиннее тихая фаза, тем больше долей игроку приходится держать темп и тем выше вероятность, что отклонение накопится. Система очков измеряет отклонение каждого нажатия тихой фазы, засчитывает каждую тихую долю, оставшуюся без нажатия, и усредняет всё это в итоговый счёт, так что небольшая ошибка в темпе, разрастаясь на долгом удержании, поднимает среднее отклонение и опускает счёт. 3

Детерминизм по зерну

Вся система детерминирована генератором псевдослучайных чисел с зерном. Одно и то же зерно всякий раз задаёт одно и то же задание, и дальше каждое правило проверяемо. Зерно определяет темп, который берётся целым числом из диапазона выбранной сложности; числа тактов приходят из самого набора сложности. Поскольку зерно и сложность полностью определяют задание, они всегда дают одно и то же устройство раунда. Это свойство распространяется и на подсчёт очков, ведь одни и те же отметки времени при одном и том же задании всегда дают один и тот же счёт. 3

Детерминизм по зерну служит и игроку, и разработчику. Игроку он даёт согласованность и честность раундов: одна и та же последовательность нажатий всегда даст один и тот же результат. Режим Daily («Ежедневный») берёт зерно из даты по UTC, поэтому все, кто играет в этот день на данной сложности, получают одно и то же задание, а Practice («Тренировка») выбирает для каждого раунда новое случайное зерно. Разработчику он даёт возможность тщательно испытывать движок заранее заданными зёрнами и последовательностями нажатий. Детерминизм здесь не ограничение, а достоинство: он делает систему измерения времени в игре прозрачной и надёжной. 3

Sources & notes

  1. "Tempo," Wikipedia, in music, tempo is the speed or pace of a given composition, measured in beats per minute (BPM): a tempo of 60 beats per minute signifies one beat per second, while a tempo of 120 beats per minute is twice as rapid, signifying two beats every second. The note value of each beat is typically the one indicated by the denominator of the time signature. Tempo may be indicated by Italian markings, from slow ones such as largo and andante (at a walking pace) to fast ones such as allegro and presto, or by a metronome mark giving a specific BPM. Tempo markings can convey mood as well as speed, and a tempo need not be fixed: a composer may write an accelerando to speed up or a ritardando to slow down within a piece. en.wikipedia.org/wiki/Tempo.
  2. "Metronome," Wikipedia, a device that produces an audible click or other sound at a uniform interval that can be set by the user, typically in beats per minute. Musicians use a metronome to play or practise in time, keeping a steady tempo and a regular beat. A traditional mechanical metronome uses a weighted pendulum: sliding the weight up the rod slows the tempo and sliding it down speeds it up, and the mechanism produces a click with each swing. Johann Maelzel patented a mechanical metronome in 1815 and mass-produced it from 1816, building on an earlier spring-powered, inverted-pendulum design by Dietrich Nikolaus Winkel and adding a numerical tempo scale; modern metronomes also come as quartz electronic devices and software. en.wikipedia.org/wiki/Metronome.
  3. Tempo Lock game engine: a pure, deterministic timing engine with no audio and no DOM. A target sets a tempo in beats per minute, a number of audible bars while a click plays, a number of silent bars to hold after it stops, and a beats-per-bar time-signature numerator (4 for 4/4). The click plays the target tempo for the audible bars, then cuts out, and the player must keep tapping the same tempo through the silent bars. The beat length in milliseconds is sixty thousand divided by the tempo; the total beat count is the audible plus silent bars times the beats per bar; and the silent phase starts at the audible bars times the beats per bar. The scoring functions take raw tap timestamps in milliseconds together with the target, so the same inputs always give the same result and the engine is testable without a clock. The tempo is recovered from the average interval between taps. Drift is the average distance of silent-phase taps from the nearest beat of an ideal grid anchored on the first tap and stepped at the target tempo; each silent-phase beat without a tap counts as a miss of half a beat, and with fewer than two taps the drift is half a beat. The score is 1000 at zero drift, falling linearly to 0 at a quarter of a beat, so the scale is relative to the tempo; the result grades are “Locked in!” at 850 or more, “Tight.” at 650 or more, “Wobbly.” at 350 or more, and “Lost the beat.” below that. Difficulty presets: Easy 70–100 BPM with 4 audible and 4 silent bars, Medium 90–130 with 4 and 6, Hard 110–170 with 4 and 8. The tempo is drawn from a seeded random number generator; Daily mode seeds it from the UTC date, Practice from a random number. Read from the game’s own source.
  4. Further reading on Metronome, Re-examining Czerny’s and Moscheles’s Metronome Marks for Beethoven’s Piano Sonatas. doi.org.
  5. Further reading on Metronome, Turn the Beat On: An Evidenced-Based Practice Journey Implementing Metronome Use in Emergency Department Cardiac Arrest . pubmed.ncbi.nlm.nih.gov.
Was this worth reading?
Play Tempo Lock
PlayPendium · About · Contact · Privacy · Terms · Cookies · Accessibility · Copyright · Browse all games · Classic arcade games · © 2026