-
Notifications
You must be signed in to change notification settings - Fork 237
Механика игры
sofiafilippova2701-collab edited this page Dec 15, 2025
·
5 revisions
- Пользователь авторизован — обязательное условие.
- Нажимает “Create game”.
- Язык программирования выбирается позже, уже в процессе игры. Вывод: система должна поддерживать отложенную инициализацию языка. Это важно для requirements.yml — язык не должен быть жёстко привязан к созданию сессии.
- Режим ожидания второго игрока.
- Игра отображается в списке “доступных для подключения”.
- Второй игрок подключается по нажатию “Connect to game”.
- Оба переносятся в игровое пространство. Вывод: нужна система матчмейкинга (даже самая простая — очередь или список активных игр). Также требуется реальное время (WebSocket или аналог).
- Два редактора: слева — свой, справа — соперника.
- Синхронизация кода в реальном времени (видно, что печатает соперник).
- Задание сверху, время игры под ним (позже — чат слева).
- Кнопка “Check” — неограниченное количество попыток.
- Поддержка переподключения при разрыве соединения.
- Игра может длиться неограниченно. Вывод: Реализация двусторонней синхронизации кода (например, через Operational Transformation или CRDT). Поддержка восстановления сессии по ID. Тесты запускаются только на локальном коде, не на коде соперника. Нет таймера на победу — игра идёт до первого успешного решения.
- При успешной проверке — модальное окно: победитель определён.
- Победитель: Кнопка “Check” блокируется. Появляется кнопка “Exit”. Может остаться и смотреть на код.
- Проигравший: Может продолжать писать и проверять (но победитель уже найден). Может выйти. Игра удаляется из памяти только после выхода обоих. Вывод: Состояние игры: active, finished (один победил), closed (оба вышли). Нужна система управления состоянием сессии. Данные хранятся до полного завершения.