====== Тестирование игры ====== Перед запуском игры для реальных игроков крайне важно убедиться, что все задания отображаются корректно, коды принимаются без сбоев, а подсказки приходят вовремя. ===== 1. Быстрое тестирование автором (Одиночный тест) ===== Любой автор может протестировать игру в один клик прямо из [[authors_main:task_editor:editor|редактора]]: кнопка **"Тестировать Игру"** в верхней панели открывает игру в новой вкладке. Если в черновике есть несохранённые правки, редактор сначала покажет их списком и предложит сохранить — тест показывает то, что лежит на сервере. ===== 2. Панель тестера ===== Внизу страницы у тестера стоит панель, которой у игрока нет. Все инструменты тестирования живут в ней: раньше они были разбросаны по странице, теперь собраны по вкладкам. * Свернуть и развернуть — клик по красной надписи **«Тестирование игры»** слева, по пустому месту полосы или по крестику справа. Крестик тоже только сворачивает: внутри панели лежит блок ошибок скрипта, и убрать её со страницы совсем он не может. * **Высота меняется перетаскиванием** — за полосу или за тонкий хват над ней. Двойной клик возвращает высоту по умолчанию. * Свёрнутость помнится в пределах вкладки браузера, высота — между перезагрузками. Число у названия вкладки — её счётчик: у «Заданий» это «открыто из всего», у «Шаблонов» — сколько шаблонов разобрано, у «Ошибок js» — сколько разных поломок. ==== Вкладка «Задания» ==== {{ :authors_main:lifecycle:tester_tasks.png?800 |Вкладка «Задания»: схема линейки, состояние каждого уровня и строка действий}} Сверху — инструменты: * **«Перемотать время»** — не «плюс десять минут», а «перескочить к ближайшему таймеру на странице». Ждать подсказку по-настоящему не нужно. Если таймеров на уровне нет, кнопка ничего не сделает. * **«Редактор игры»** — ссылка на редактор всей игры. * **«Рестарт игры»** (красная) — стирает прогресс команды целиком и начинает с первого уровня. Ниже — **«Порядок заданий»**, если у игры больше одной линейки. Выбор линейки **сам ничего не применяет**: он показывает её схему серыми номерами, отбитую чертой слева, а применится она рестартом — кнопкой **«Рестарт с 1-го уровня»** или «Рестарт отсюда» на выбранном уровне. === Схема линейки === Это не плоский список номеров, а структура игры: последовательные уровни идут вправо через ''›'', штурмовые ветки висят вниз на общей планке, случайный порядок помечен ''?''. Состояние уровня видно по номеру: ^ Вид ^ Что значит ^ | залит голубым | уровень, на котором вы сейчас | | голубая рамка | открыт, но вы не на нём | | зелёный | пройден | | пунктир | ещё закрыт | === Перейти или начать отсюда === Под схемой — строка действий. Пока номер не выбран, в ней стоит текущий уровень. * **«Перейти»** — просто открыть уровень, ход игры остаётся как был. Есть **только у открытого** уровня: в пройденный и закрытый движок не пустит, а на текущем переходить некуда. * **«Рестарт отсюда»** (красная) — стирает прогресс и расставляет пройденными путь к этому уровню, как будто команда дошла сюда сама. В штурме соседние ветки останутся закрытыми. > **Клик по номеру больше не перезапускает игру.** Первый клик только **выбирает** уровень и показывает, что с ним можно сделать. Повторный клик по уже выбранному номеру — это «Рестарт отсюда»: на телефоне по номеру попадают случайно, а рестарт не отменить. Оба действия — обычные ссылки, так что адрес уровня можно скопировать и отправить автору. > Менять линейку вправе не всякий тестер: приглашённой команде прыжок по уровням сработает, а выбор линейки молча не применится. ==== Вкладка «Шаблоны» ==== Она показывает, что движок сделал с [[authors_main:task_editor:advanced:edit_templates|шаблонами]] ''{% match %}'' на этой странице: какой шаблон, какое значение проверялось, какая ветка сработала и какие были варианты. Вложенные шаблоны сдвинуты вправо — их разбирали только потому, что сработала ветка выше. {{ :authors_main:lifecycle:tester_templates.png?800 |Вкладка «Шаблоны»: какой match что проверял и какая ветка сработала}} * **Наведите** на строку — на задании подсветится то, что эта ветка подставила. * **Кликните** по строке — страница прокрутится к этому месту. * **Стрелка** слева от имени разворачивает исходный текст ветки. * **Клик по варианту** показывает задание так, **будто сработала эта ветка**. {{ :authors_main:lifecycle:tester_templates_pick.gif |Выбор ветки: задание перерисовывается так, будто сработала она}} Пока ветка выбрана вручную, сверху висит жёлтая плашка: задание показано **не так**, как его увидит игрок. Снять — кнопкой **«вернуть как есть»** или повторным кликом по тому же варианту. Подмена живёт до закрытия браузера и видна только вам. Так проверяется ветка, в которую иначе не попасть: индивидуальное задание для чужой команды, ветка ''?'', ветка «ответа ещё нет». ==== Вкладка «Редактор» ==== Текущее задание в редакторе, не уходя из игры: текст, коды, бонусы, подсказки. Раньше это был свёрнутый блок над заданием — теперь вкладка. > Редактор открывается с **админского хоста**, и сессия у него своя. Если вы туда ещё не входили, во вкладке будет форма входа, а войти прямо в ней нельзя. Тогда — ссылка **«Открыть редактор в новой вкладке»**, войти там, и вкладка заработает. Всё, что касается игры целиком — настройки, порядок заданий, номер задания, — правится в редакторе игры: ссылка **«Редактор игры»** есть на вкладке «Задания». ==== Вкладка «Ошибки js» ==== Её не видно, пока всё в порядке; **первая же ошибка в скрипте сама показывает вкладку и разворачивает панель**, даже если панель была выключена. Ловятся ошибки в скриптах заданий, подсказок, бонусов и сквозных бонусов, а также **асинхронные** — из ''setTimeout'', ''fetch'' и ''async''-функций: раньше такие падали молча. Одинаковые складываются в одну запись со счётчиком. Намеренно **не** записываются ошибки браузерных расширений и безымянное «Script error.» от чужих доменов — это не ваш код, и в журнале от них только шум. ==== Вкладки, которых может не быть ==== Нет вкладки — значит, показывать нечего, а не сломалось: * **«Коды»** — все коды, бонусы и сквозные бонусы уровня, по клику подставляются в поле ответа. Видит её только **автор игры или администратор домена**. Приглашённая команда тестеров кодов не видит и играет вслепую, как игроки. * **«GPS»** — есть, только если на задании включён gps. Статус, карта, зоны маркеров и подмена координат; подробно — на странице [[authors_main:task_editor:advanced:gps|Коды по GPS-координатам]]. * **«Действия»** — есть, только если [[authors_main:task_editor:advanced:server_actions|серверные маркеры]] на этой загрузке что-то сделали. Просто наличие маркеров вкладку не создаёт. * **«Шаблоны»** — есть, только если на странице разобран хотя бы один ''{% match %}''. ==== Убрать панель с экрана ==== Переключатель **«Тестовые контролы»** — в меню игры: гамбургер справа вверху, раздел **«Настройки»**, последний переключатель. Он прячет панель, но **не насовсем**: первая же ошибка скрипта вернёт её и откроет на «Ошибках js». Чтобы панели не было вовсе — например, для скриншотов или видео, — откройте игру с ''?debug_panel=0''. Возврат — ''?debug_panel=1''. Учтите: тогда тестер остаётся совсем без инструментов. ===== 3. Командное тестирование (Тестеры) ===== Вы можете приглашать сторонних игроков или целые команды для независимого тестирования: - Команда тестеров должна подать стандартную заявку на вашу игру на сайте. - В блоке **"Подали Заявки"** на странице игры рядом с этой командой появятся две кнопки: **"Принять"** пускает команду в игру по-настоящему, **"Разрешить Тест"** — только на тест. {{ :authors_main:lifecycle:game_requests.png?800 |Заявки: «Принять» пускает команду в игру, «Разрешить Тест» — только на тест}} - После принятия команда сможет зайти в игру в любое время (даже до официального старта). - Тестеры играют в абсолютно реальном игровом интерфейсе: коды прохождения уровней им не видны. Панель тестера у приглашённой команды тоже есть — без вкладки «Коды» и без права менять линейку. Рестарт и перемотка времени им доступны, на вкладке «Задания». ===== 4. Тестирование от лица своей команды ===== Автор игры может подать заявку от лица своей собственной команды и принять её в качестве тестеров. Это позволяет проверить, как игра выглядит на экранах напарников. > **Обратите внимание:** В этом случае все участники вашей команды получат доступ к игре до её начала. Убедитесь, что члены вашей команды не являются реальными участниками предстоящей игры.