Все кейсы

Интерактивная игра в реальном времени

Мультиплеерная игра в чате Twitch на Canvas API и WebSocket. Зрители взаимодействуют со стримом через команды, OAuth-авторизация, система инвентаря.

WebSocketCanvas APITypeScriptTwitch API
Интерактивная игра в реальном времени

Задача

Я веду стримы по разработке на Twitch. Зрители смотрят как я пишу код, но хочется больше интерактива - не просто чат, а реальное взаимодействие с тем что происходит на экране. Идея: игра, где персонажи зрителей живут на экране стрима, а управление происходит через команды в чате. Написал "!join" - твой персонаж появился. Написал "!chop" - он рубит дерево. Нужна плавная анимация, синхронизация между всеми зрителями в реальном времени и сохранение прогресса между стримами. При этом игра должна работать не только как оверлей на стриме, но и как отдельное приложение в Telegram для мобильных зрителей.

Решение

Рендеринг игрового мира на Canvas API с game loop на requestAnimationFrame - стабильные 60 FPS. Каждый кадр: обновление позиций персонажей, анимация действий, отрисовка карты и объектов. WebSocket-сервер на Node.js подключается к Twitch IRC и парсит команды из чата. Когда зритель пишет команду, сервер валидирует её, обновляет состояние игры и бродкастит изменения всем подключенным клиентам через WebSocket. Авторизация через Twitch OAuth - зритель логинится через Twitch и его персонаж привязывается к аккаунту. Инвентарь и трофеи хранятся в базе и сохраняются между сессиями. Для мобильных зрителей сделал Telegram Mini App - та же игра, но с тач-управлением вместо команд в чате. Комната автоматически синхронизируется со стримом через общий WebSocket.

Результат

Проект набрал 24 звезды на GitHub. В среднем 15 активных игроков на стриме - это высокое вовлечение для канала с ~15 зрителями. Зрители возвращаются на стримы чтобы продолжить прокачивать персонажа. Telegram Mini App расширил аудиторию - мобильные зрители подключаются к игре не открывая Twitch.

Похожие кейсы

Миграция платформы на React и NestJS
Переписал ядро o5.Еда с PHP/jQuery на TypeScript/React/NestJS. Модульная архитектура, типизированный API, 500+ бизнес-клиентов без простоя при переходе.
ReactTypeScriptNestJSNode.js
Пайплайн транскодирования аудио
Серверный пайплайн: загрузка FLAC/MP3/OGG, транскодирование в нужные форматы, стриминг через S3. Lossless воспроизведение в браузере с любого устройства.
NuxtTypeScriptS3Node.js
Интеграция каталога MusicBrainz
Подключил каталог MusicBrainz (127 000+ артистов), скробблинг в ListenBrainz, Telegram Mini App для мобильного доступа к библиотеке.
NuxtTypeScriptTelegram Mini App
SEO-архитектура для сайтов доставки
Отдельные страницы товаров с Schema.org разметкой, SSR, мета-теги. Клиентские сайты выходят в топ Google по локальным запросам.
NuxtTypeScriptTailwind CSS

Нужно решить похожую задачу?

Напишите - обсудим ваш проект или идею.

© 2026 Николай Косарев