⋮

Богдан Кравцов
Система анча

В 2005 году я придумал систему пересчёта времени при снятии уровня для городского командного квеста «Схватка».

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

Команды приступали к заданиям в разное время, так что иногда по вине организаторов или команд, или в силу непредусмотренных обстоятельств ключ оказывался недоступным или испорченным или излишне открытым в тот момент, когда часть команд уже справилась с заданием, а часть — нет. В таких случаях следовало восстановить, насколько это возможно, равновесие в игре. Для этого и нужна была система снятия уровня.

Пожелания были такими:

— чтобы проблемный уровень учитывался в игре, пока ключ в порядке;

— чтобы командам было невыгодно портить код;

— чтобы в игре не создавалось искусственных задержек и ожиданий;

— чтобы распределение призовых мест не вызывало сомнений;

— чтобы результаты авангарда менялись как можно меньше;

— чтобы победитель определялся по пересечению финишной прямой;

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

— чтобы пересчёт был не слишком сложным.


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

Вот как моя система описана в официальных правилах:

12.3. Если уровень объявлен снятым, то происходит пересчет времени по системе:

12.3.1. Финишировавшими на уровне считаются только те команды, которые взяли ключ «по сценарию», то есть, если две команды нашли ключ на задуманном месте, а третья — в двух километрах вниз по течению, то финишировавшими считаются только первые две команды, а «финиш последней команды» — это время, когда последняя команда прошла уровень по сценарию.

12.3.2. То время, которое прошло с момента финиша последней команды (см. 12.3.1) до принятия решения о снятии уровня, вычитается из времени команд, которые провели это время на снятом уровне, как будто его не было.

12.3.3. Зачетное время команд, которые прошли уровень к моменту снятия, не изменяется.

12.3.4. От зачетного времени команд, которые не прошли уровень на момент снятия и потратили времени больше, чем минимальное время прохождения (среди прошедших команд), ничего не вычитается, кроме времени, которое было вычтено по пункту 12.3.2.

12.3.5. К зачетному времени команд, которые не прошли уровень на момент снятия и потратили времени меньше, чем минимальное время прохождения, добавляется ШТРАФ так, чтобы время, затраченное на уровне, равнялось минимальному времени прохождения. То же самое касается команд, которые дошли до этого уровня после того, как он был снят — в итоге получается, будто все они проходят этот уровень за время, минимальное из зафиксированных.
числа
 ⋮