← Все записи

Как анкета стала командной игрой: квесты R.U.M.B.

Как устроены квесты и почему подсчёт стилей пришлось переделать.

В R.U.M.B. два этапа: тест стилей DISC, где каждый отвечает, как обычно поступает, и квесты, где видно, как человек действует на деле. С чего начать, решает ведущий. Проблема была в том, что квесты ничем не отличались от теста: восемь ситуаций с четырьмя вариантами ответа, которые каждый проходил в одиночку. По сути это была та же анкета.

Что значит «увидеть стиль в действии»

В тесте человек отвечает так, как видит себя. На тренингах по DISC это дополняют групповыми упражнениями. Самое известное — «Выживание на Луне» из NASA: команда ранжирует предметы, которые возьмёт с собой, а ведущий смотрит, кто ведёт обсуждение, кто приносит идеи, кто поддерживает других и кто проверяет факты.

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

Механика: четыре действия — четыре стиля

Каждый квест — общая задача: выбрать из колоды несколько лучших карт. Лунная экспедиция — 3 вещи из 10, горящий релиз — 2 меры из 8, командный выезд — 2 занятия при ограниченном бюджете.

Каждое действие соответствует стилю DISC: предлагать — влияние (I), проверять — добросовестность (C), поддерживать — стабильность (S), настаивать — доминирование (D). Одним действием задачу не решить: если никто не проверяет карты, команда берёт ловушки, а карта без поддержки не набирает вес. После последнего квеста коллеги ещё и отмечают друг друга: кто был Капитаном, Вдохновителем, Опорой и Аналитиком. Эти голоса дают четверть итога.

Ловушка в самом подсчёте

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

Получалось, что человек со стилем C мог просто не успеть ничего проверить и выглядел «не аналитиком». Подсчёт отражал правила игры, поведение тут было ни при чём.

Решение — нормировать по возможностям. Перед каждым ходом сервер запоминает, какие действия человеку были доступны. Доля стиля — это как часто он выбирал его действие, когда мог: (выборы + 0,25) / (доступно + 1).

Сглаживание решает две задачи. Стиль, для которого возможностей не было вовсе, получает небольшую ненулевую долю, а не ноль. А одна-единственная возможность не превращается в 100 %. Пример из тестов: участник дважды выложил карту, а поддерживать ему было нечего. Раньше выходило 100 % I, теперь D 10 / I 60 / S 20 / C 10 — I явно ведёт, но без вывода «других стилей у человека нет».

Всё решает сервер

Квест — это игра в реальном времени, поэтому всё решает сервер, а клиенты только показывают состояние:

Что нашло ревью

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

Остальное мельче, но на встрече было бы заметно:

Что в итоге

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

Обновление от 26 октября

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