Skip to content

Механика игры

sofiafilippova2701-collab edited this page Dec 15, 2025 · 5 revisions

Механика игры

Создание игры

  1. Пользователь авторизован — обязательное условие.
  2. Нажимает “Create game”.
  3. Язык программирования выбирается позже, уже в процессе игры. Вывод: система должна поддерживать отложенную инициализацию языка. Это важно для requirements.yml — язык не должен быть жёстко привязан к созданию сессии.

Подключение к игре

  1. Режим ожидания второго игрока.
  2. Игра отображается в списке “доступных для подключения”.
  3. Второй игрок подключается по нажатию “Connect to game”.
  4. Оба переносятся в игровое пространство. Вывод: нужна система матчмейкинга (даже самая простая — очередь или список активных игр). Также требуется реальное время (WebSocket или аналог).

Игровой процесс

  1. Два редактора: слева — свой, справа — соперника.
  2. Синхронизация кода в реальном времени (видно, что печатает соперник).
  3. Задание сверху, время игры под ним (позже — чат слева).
  4. Кнопка “Check” — неограниченное количество попыток.
  5. Поддержка переподключения при разрыве соединения.
  6. Игра может длиться неограниченно. Вывод: Реализация двусторонней синхронизации кода (например, через Operational Transformation или CRDT). Поддержка восстановления сессии по ID. Тесты запускаются только на локальном коде, не на коде соперника. Нет таймера на победу — игра идёт до первого успешного решения.

Завершение игры

  1. При успешной проверке — модальное окно: победитель определён.
  2. Победитель: Кнопка “Check” блокируется. Появляется кнопка “Exit”. Может остаться и смотреть на код.
  3. Проигравший: Может продолжать писать и проверять (но победитель уже найден). Может выйти. Игра удаляется из памяти только после выхода обоих. Вывод: Состояние игры: active, finished (один победил), closed (оба вышли). Нужна система управления состоянием сессии. Данные хранятся до полного завершения.

Clone this wiki locally