Перейти к содержимому

Игровые сессии в IZI

Опубликовано: · Обновлено: (1 месяц назад)· IZI Team

Сессия — это core unit биллинга компьютерного клуба в IZI: привязанный к игроку, ПК и тарифу временной интервал, за который клуб получает выручку. Всё что происходит за ПК — оплата, смена устройства, авто-продление, возврат — учитывается на уровне сессии. Аналитика клуба строится из сессионных данных: продолжительность, выручка на сессию, ARPU. Понимание жизненного цикла сессии помогает оператору быстро разбираться с нестандартными ситуациями в зале и правильно настраивать тарифную сетку.

Сессия в IZI — агрегирующая сущность: она хранит когда игрок сел (plannedStartAt / actualStartAt), когда встал (actualEndAt), на каком ПК (SessionDevice), по какому тарифу в каждый момент времени (SessionPlayerTariff).

Жизненный цикл сессии состоит из четырёх статусов:

СтатусЧто значитКогда наступает
PENDINGСессия создана, старт запланирован в будущемОператор создал бронь заранее
ACTIVEЗапланированное время старта наступило, но игрок ещё не нажал «Старт»Авто-переход по времени
STARTEDИгрок активен, ПК разблокирован, время идётПосле нажатия «Старт»
ENDEDСессия завершена, чек сформированАвто по тарифу или ручное завершение

Отдельный статус CANCELLED означает отмену до фактического старта — деньги не списываются, тариф возвращается на баланс согласно политике возврата.

Переходы между статусами строго регламентированы: из PENDING можно перейти в STARTED, ENDED или CANCELLED; из STARTED — только в ENDED. Обратных переходов нет.

Каждая сессия в IZI связывает три элемента:

  • Устройство — ПК (или PS-консоль), на котором идёт игра. Один ПК = одна активная сессия в каждый момент.
  • Игрок — аккаунт клиента. Если клиент пришёл без аккаунта, сессия привязывается к гостевой записи.
  • Тариф — правило списания: по времени, по объёму (multipass), по окну (безлимит). Тариф задаёт цену, логику таймера и то, что произойдёт с остатком при завершении.

Пока сессия активна, таймер идёт и система фиксирует все дополнительные транзакции — например, заказы из бара. Это позволяет смотреть полный чек за визит, а не только игровое время.

В IZI три канала создания и старта сессий. Механика одинакова, различается кто инициирует операцию.

Оператор через CRM. Самый распространённый сценарий. Оператор открывает раздел «Зал», выбирает ПК, привязывает игрока, выбирает тариф из оплаченных заказов. CRM создаёт сессию (createSession) и запускает её (startSession). ПК получает команду на разблокировку через MQTT-брокер. Весь процесс — несколько кликов, занимает секунды.

Само-старт через приложение. Игрок со смартфона выбирает клуб, покупает тариф, выбирает свободный ПК и нажимает «Играть». Сессия создаётся и запускается без участия оператора. Права доступа проверяются на уровне API: игрок может управлять только своей сессией (assertSamePlayer).

Постоплатный режим (open-ended). В клубах с постоплатой сессия создаётся в режиме OpenEnded: игрок садится, оплата не требуется до выхода. Статус OPEN_ENDED означает что биллинг закрывается в момент завершения сессии — IZI выставляет счёт по фактически проведённому времени. Авто-ренью в этом режиме не требуется, система управляет продлением самостоятельно.

Тарификация: почасовая, мультипасс, абонемент

Заголовок раздела «Тарификация: почасовая, мультипасс, абонемент»

Каждая сессия привязана к одному или нескольким тарифным сегментам (SessionPlayerTariff). Каждый сегмент имеет точные временные границы plannedStartAt / plannedEndAt и ссылку на купленный тариф (playerTariffId).

Три базовые модели тарификации:

  • Почасовой тариф. Игрок покупает N часов. Сессия закрывается когда тариф исчерпан, если не включён авто-ренью.
  • Мультипасс. Пакет часов с условием истечения (например, 10 часов в течение 30 дней). Один мультипасс может покрывать несколько сессий — каждая сессия «кусает» от общего пула.
  • Абонемент / безлимит. Тариф с расписанием использования (например, дневной безлимит 10:00–22:00). Сессия активна в рамках расписания; выход за рамки переводит ПК в состояние ожидания.

Подробная настройка каждого типа — в Тарифы и ценообразование.

При смене тарифа во время сессии (авто-ренью или ручное продление) создаётся новый сегмент SessionPlayerTariff с новыми временными границами. Биллинг считается по каждому сегменту отдельно — итоговый чек суммирует все сегменты.

Продление без прерывания. Оператор добавляет тариф к активной сессии через CRM — формируется новый сегмент, ПК не перезагружается. Игрок продолжает играть без перебоев.

Авто-ренью. Если у игрока включён авто-ренью и на балансе есть совместимый тариф — система автоматически добавляет сегмент в момент истечения текущего. Оператор видит в зале что сессия продлилась, не прерывая игрока.

Перенос на другой ПК. Операция switchSessionDevice — игрок меняет место, сессия продолжается. IZI закрывает привязку к старому ПК (actualEndAt = now), открывает к новому. Оба ПК получают команду reconcile. Счётчик времени не прерывается.

Завершение. Ручное завершение доступно оператору (права SessionEdit) и самому игроку через приложение. При завершении IZI записывает actualEndAt, формирует финальный чек, отправляет событие session_ended для аналитики и других модулей.

Отмена. Доступна только для не-стартованных сессий (actualStartAt = null). Требует права SessionDelete. При отмене тариф возвращается на баланс согласно политике возврата в тарифе.

Сессия завершается двумя путями: автоматически или вручную.

Авто-закрытие наступает когда тариф исчерпан (coverageUntilAt < now) и авто-ренью не включён или не нашёл подходящего тарифа. Система записывает actualEndAt, ПК переходит в режим ожидания, CRM уведомляет оператора через real-time подписку.

Ручное закрытие — оператор или игрок инициирует endSession. IZI проверяет статус (сессия должна быть не в ENDED / CANCELLED), записывает время завершения и причину (endedReason: ManualByAdmin или ManualByPlayer), формирует финальный биллинговый чек по всем сегментам.

При досрочной остановке срабатывает политика возврата тарифа. Три варианта:

ПолитикаЧто происходит с остатком
Сохранить остатокОстаток фиксируется, игрок вернётся и доиграет
Возвратить на бонусНеиспользованное конвертируется в бонусный баланс
СжечьОстаток аннулируется

Политика задаётся один раз в настройках тарифа и применяется ко всем сессиям по нему.

Каждая сессия генерирует набор метрик для аналитики клуба.

Продолжительность сессии — разница между effectiveEndAt и effectiveStartAt. IZI хранит оба значения как вычисляемые поля view (sessions_view), поэтому продолжительность всегда консистентна даже если сессия закрывалась нестандартно.

Выручка на сессию — сумма всех биллинговых транзакций привязанных к сессии. Позволяет считать средний чек за сессию как аналитическую метрику отдельно от среднего чека за визит.

ARPU per session — выручка за сессию делённая на количество уникальных сессий за период. Более точная метрика чем ARPU per visit для клубов где один игрок играет несколько раз за день.

Загрузка зала — отношение сессионных часов к доступным часам ПК за период. Считается по actualStartAt / actualEndAt всех STARTED/ENDED сессий на каждом устройстве.

Покрытие тарифа (coverageStatus) — оперативная метрика для оператора: показывает для каждой активной сессии насколько далеко тариф покрывает оставшееся время. Помогает превентивно предложить продление до того как сессия закроется по истечению.

Историческая аналитика по сессиям доступна в разделе «Отчёт по сессиям» в CRM. Там же — фильтрация по ПК, по игроку, по тарифу, по дате; экспорт для внешних инструментов.


Связанные материалы: Тарифы и ценообразование · Зал в реальном времени · Бонусы при пополнении · Что такое IZI · Мобильное приложение игрока

Механика сессий описана на основе production-кода IZI X API (пакет sessions). Конкретные UI-шаги могут незначительно отличаться в зависимости от версии CRM и конфигурации клуба.

Частые вопросы

Что такое игровая сессия в IZI?

Сессия — это единица учёта игрового времени: привязана к конкретному игроку, ПК и тарифу. Биллинг клуба считается посессионно: сессия открыта — время идёт, сессия закрыта — формируется чек. Один игрок в одно время может иметь только одну активную сессию на конкретном ПК.

Чем сессия отличается от заказа?

Заказ (order) — это финансовый документ: список купленных тарифов и сумма к оплате. Сессия — игровой процесс: когда запустился ПК, сколько фактически прошло, на каком устройстве. Один заказ может породить несколько сессий (купил 3 часа, сыграл двумя частями), одна сессия всегда привязана ровно к одному заказу.

Как запустить сессию из CRM?

В разделе «Зал» найдите нужный ПК, выберите игрока, выберите тариф из купленных заказов, нажмите «Запустить». CRM создаёт сессию в статусе PENDING, затем сразу переводит в STARTED — ПК разблокируется. Всё это занимает секунды; вручную переключать что-то на ПК не нужно.

Может ли игрок сам запустить сессию через приложение?

Да. Через мобильное приложение IZI игрок выбирает клуб, покупает тариф и запускает сессию самостоятельно — без участия администратора. ПК разблокируется после подтверждения. Этот режим называется само-старт; в постоплатных клубах сессия стартует сразу, оплата снимается при выходе.

Что происходит когда заканчивается оплаченное время?

Система проверяет покрытие тарифа (coverageStatus). Если включён авто-ренью — ПК не выключается, система автоматически продлевает сессию за счёт следующего тарифа на балансе игрока. Если авто-ренью выключен и тариф закончился — ПК переходит в предупреждающий режим, кассир видит это в зале и может предложить продление.

Можно ли продлить сессию не вставая с ПК?

Да, через авто-ренью. Если у игрока на балансе есть совместимый тариф и авто-ренью включён — смена тарифа происходит автоматически в момент истечения текущего, ПК не перезагружается. Оператор также может вручную добавить тариф к активной сессии из CRM без прерывания игры.

Что такое пауза сессии и зачем она нужна?

Пауза — это промежуток, когда сессия числится активной, но игрок временно отходит. В IZI пауза реализуется через статус ACTIVE (сессия создана, planned start в будущем) до момента фактического старта. После нажатия «Старт» сессия переходит в STARTED и начинается фактический отсчёт времени.

Можно ли передать сессию на другой ПК?

Да, через операцию switchSessionDevice. Оператор в CRM или игрок через приложение указывает новый ПК — IZI закрывает привязку к старому устройству и открывает к новому в рамках той же сессии. Счётчик времени не прерывается, тариф остаётся прежним.

Как считается стоимость если тариф меняется во время сессии?

Каждый тариф-сегмент внутри сессии хранится отдельно (SessionPlayerTariff) с точными временными границами. Биллинг считается по каждому сегменту независимо: первые 2 часа по тарифу А, следующий час по тарифу Б. Итоговый чек складывается из суммы всех сегментов.

Что показывает оператору если ПК завис или не отвечает?

В разделе «Зал» (hall-realtime) рядом с ПК отображается coverageStatus сессии. Если ПК не выходит на связь по MQTT — статус устройства переходит в «не отвечает». Оператор видит это сразу в виде цветового индикатора без обновления страницы.

Можно ли отменить сессию?

Да, но только до момента фактического старта (пока сессия в статусе PENDING или ACTIVE, то есть actualStartAt = null). После того как игрок нажал «Старт» — отмена недоступна, только завершение. Отмена требует прав SessionDelete в CRM.

Как оформить возврат денег за сессию?

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

Есть ли лимит времени за сутки на одном ПК?

Технического лимита на уровне сессии нет — сессия работает пока тариф покрывает время или включён авто-ренью. Ограничения задаются через расписание тарифа (например, ночной тариф доступен только с 23:00 до 07:00) или через зональные лимиты клуба. Суточного счётчика как отдельной сущности в IZI нет.

Что такое сессия в IZI?

Сессия — запись об использовании конкретного ПК конкретным игроком по выбранному тарифу. У каждой сессии есть время старта, привязанный тариф и статус: активна, остановлена или завершена. Один ПК — одна активная сессия в каждый момент времени.

Что происходит с остатком времени при досрочном завершении?

Зависит от политики возврата тарифа. Три варианта: остаток сохраняется на тарифе (игрок вернётся и доиграет), сгорает или возвращается на бонусный баланс. Политика задаётся в настройках тарифа раз и применяется ко всем сессиям по нему.