Зміст

Налаштування завдання

Кожне завдання (рівень) у грі має набір параметрів, що визначають логіку його проходження, автопереходи, видачу підказок та нарахування бонусів.

Основні параметри рівня

Коди (Відповіді)

Для проходження рівня гравці повинні ввести один або кілька кодів.

Підказки

Ви можете налаштувати будь-яку кількість підказок для кожного завдання.

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

<details><summary>Натисніть, щоб побачити підказку</summary>
<p>Текст підказки</p>
</details>

Той самий ефект кнопкою, яка зникає після натискання:

<button class="btn btn-default" onclick="this.style.display='none'; this.parentNode.nextElementSibling.style.display='block';">Показати підказку</button>
<div style="display:none"><p>Текст підказки</p></div>

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

Приклад у грі

Звичайні та Наскрізні бонуси

Ліміти спроб введення

Для захисту від простого перебору (брутфорсу) відповідей ви можете задати ліміт спроб.

Блок із таймером блокування можна переоформити або доповнити своїм елементом — див. Елементи сторінки рівня.

Приклад у грі

Автоперехід

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

Іноді потрібно, щоб рівень закрився в усіх одночасно в конкретний момент — наприклад, на багатоденній грі, де завдання нового дня починається о призначеній годині. Для цього в те саме поле вписується unix-час потрібного моменту (велике число замість тривалості). Такий автоперехід не залежить від того, коли команда потрапила на рівень.

Відрізнити його легко за поведінкою в тестуванні: при рестарті рівня час до автопереходу не скидається, а тестове перемотування часу рівня його не наближає.

Приклад у грі

Закриття завдання: «Розумно»

Зазвичай рівень закривається, щойно вбито всі коди, — і недобрані бонуси при цьому зникають. Опція «Закрити завдання: Розумно» змінює цю поведінку: якщо коди вбито, але на рівні залишилися незакриті бонуси, завдання не закривається саме. Замість цього з'являється кнопка «Завершити завдання».

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

Приклад у грі

Офлайн-перевірка відповідей

В умовах поганого мобільного інтернету на локації увімкнення офлайн-перевірки дозволяє гравцям бачити статус введення без очікування відповіді від сервера.

Як це працює:

  1. При вході на рівень хеш-коди відповідей завантажуються в браузер гравця.
  2. При надсиланні відповіді, якщо інтернет відсутній, відповідь додається до локальної черги.
  3. У цій черзі відповіді одразу розфарбовуються: зелені (правильні), червоні (неправильні), білі (невідомі/в процесі відправки).
  4. Щойно з'єднання відновлюється, черга автоматично надсилається на сервер.
Увага (Безпека): Оскільки хеші кодів при офлайн-перевірці зберігаються на клієнті, теоретично гравці можуть запустити локальний перебір (брутфорс), щоб підібрати код. Особливо якщо коди короткі або відома їх маска (наприклад, слово + цифра).

Захист від перебору в офлайні:

Щоб захиститися від підбору, додайте штрафний бонус із помилковими кодами (кодами-пастками).

Офлайн-перевірка за замовчуванням вимкнена. Рекомендується вмикати її лише на тих рівнях, де заздалегідь очікуються проблеми зі зв'язком.

Приклад у грі