{{indexmenu_n>30}} ====== Настройки задания ====== Каждое задание (уровень) в игре имеет набор параметров, определяющих логику его прохождения, автопереходы, выдачу подсказок и начисление бонусов. ===== Основные параметры уровня ===== ==== Коды (Ответы) ==== Для прохождения уровня игроки должны ввести один или несколько кодов. * **Регистр букв:** По умолчанию сравнение кодов регистронезависимое. * **Синонимы:** Для одного кода можно прописать несколько вариантов правильных ответов (синонимов), разделяя их запятыми или прописав отдельными строками. * **Виды кодов:** Коды могут быть основными (для закрытия уровня) и бонусными (для получения бонусных секунд или баллов). ==== Подсказки ==== Вы можете настроить любое количество подсказок для каждого задания. * **Таймер:** Подсказка выдается автоматически через указанное время (в секундах или минутах) после входа команды на уровень. * **Штрафные подсказки:** Подсказку можно сделать штрафной — в этом случае игроки могут открыть её раньше времени, но получат штраф по времени (или баллам). Иногда подсказку хочется выдать сразу, но не показывать её содержимое, пока игрок сам не попросит. Для этого текст подсказки заворачивается в раскрывающийся блок прямо в режиме «Источник»:
Нажмите, чтобы увидеть подсказку

Текст подсказки

Тот же эффект кнопкой, которая исчезает после нажатия:

Текст подсказки

Учтите, что спрятанный так текст всё равно лежит в исходном коде страницы — это удобство, а не защита. Если содержимое не должно быть доступно до срока, используйте обычный таймер подсказки или [[authors_main:task_editor:advanced:edit_templates|шаблоны]]. [[https://qeng.org/game.php?jump_to&gid=3493&task_id=79305|Пример в игре]] ==== Обычные и Сквозные бонусы ==== * **Обычные бонусы:** Привязаны к конкретному заданию. * **Сквозные бонусы:** Доступны сразу на нескольких уровнях (например, с 5 по 10 уровни). Если команда ввела ответ на сквозной бонус на уровне 5, на уровне 6 ввести его повторно для получения баллов будет нельзя. Для бонуса на всю игру можно выставлять диапазон уровней с 1 по 999. ==== Лимиты попыток ввода ==== Для защиты от простого перебора (брутфорса) ответов вы можете задать лимит попыток. * Лимит можно установить как общий на уровень (например, не более 50 попыток ввода в минуту на всю команду), так и на конкретного игрока. * При превышении лимита поле ввода блокируется для команды на определенный интервал времени. Игрок видит это так: над полем — сколько осталось ждать, под полем — сколько попыток и за какое время ему положено. {{ :authors_main:task_editor:answer_block.png?800 |Ограничение «один ответ в 10 секунд»: после неверного кода поле ждёт таймер}} Блок с таймером блокировки можно переоформить или дополнить своим элементом — см. [[authors_main:task_editor:advanced:page_elements#своё_оформление_блокировки_ответов|Элементы страницы уровня]]. [[https://qeng.org/game.php?jump_to&gid=3493&task_id=52079|Пример в игре]] ==== Автопереход ==== В поле **«Автопереход»** задаётся время, по истечении которого уровень закроется сам, даже если команда его не прошла. Обычно там стоит длительность в секундах — она отсчитывается от момента, когда команда зашла на уровень, поэтому у каждой команды автопереход наступает в своё время. Иногда нужно, чтобы уровень закрылся у всех одновременно в конкретный момент — например, на многодневной игре, где задание нового дня начинается в назначенный час. Для этого в то же поле вписывается **unix-время** нужного момента (большое число вместо длительности). Такой автопереход не зависит от того, когда команда попала на уровень. Отличить его легко по поведению в тестировании: при рестарте уровня время до автоперехода не сбрасывается, а тестовая перемотка времени уровня его не приближает. [[https://qeng.org/game.php?jump_to&gid=3493&task_id=53861|Пример в игре]] ==== Закрытие задания: «Разумно» ==== Обычно уровень закрывается, как только вбиты все коды, — и недобранные бонусы при этом пропадают. Опция **«Закрыть задание: Разумно»** меняет это поведение: если коды вбиты, но на уровне остались незакрытые бонусы, задание не закрывается само. Вместо этого появляется кнопка **«Завершить задание»**. {{ :authors_main:task_editor:answer_finish.png?800 |Все коды взяты, а задание ещё не закрыто: при «Разумно» уровень заканчивает сама команда}} Пока команда её не нажала, игроки могут спокойно добивать бонусы. Удобно на уровнях, где бонусы дороже времени и обидно терять их из-за того, что кто-то вбил последний код раньше времени. [[https://qeng.org/game.php?jump_to&gid=3493&task_id=42721|Пример в игре]] ===== Оффлайн-проверка ответов ===== При плохом мобильном интернете на локации включение оффлайн-проверки позволяет игрокам видеть статус ввода без ожидания ответа от сервера. ==== Как это работает: ==== - При входе на уровень хэш-коды ответов загружаются в браузер игрока. - При отправке ответа, если интернет отсутствует, ответ добавляется в локальную очередь. - В этой очереди ответы сразу раскрашиваются: **зеленые** (правильные), **красные** (неправильные), **белые** (неизвестные/в процессе отправки). - Как только соединение восстанавливается, очередь автоматически отправляется на сервер. {{ :authors_main:task_editor:offline_queue.gif |Ответы уходят пачкой и ждут в очереди: зелёные движок уже узнал офлайн, красные — нет}} > **Внимание (Безопасность):** Так как хэши кодов при оффлайн-проверке хранятся на клиенте, теоретически игроки могут запустить локальный перебор (брутфорс), чтобы подобрать код. Особенно если коды короткие или известна их маска (например, слово + цифра). ==== Защита от перебора в оффлайне: ==== Чтобы защититься от подбора, добавьте штрафной бонус с ложными кодами (кодами-ловушками). * Например, если правильный код: ''батон432''. * Добавьте скрытый бонус с кодом: ''батон178'' (и штрафом за его ввод). * Чтобы скрыть бонус от игроков, напишите в его описании специальный маркер: **''%hide%''**. Команда не будет знать о существовании ловушки, но автоматический брутфорс наткнется на нее и команда получит штраф. Оффлайн-проверка по умолчанию отключена. Рекомендуется включать ее только на тех уровнях, где заведомо ожидаются проблемы со связью. [[https://qeng.org/game.php?jump_to&gid=3493&task_id=42720|Пример в игре]]