From 9a7d793d7efd6e2c83451e28ff0593e887220c30 Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Thu, 25 Jun 2026 19:50:40 +0500 Subject: [PATCH] docs: update readme.md --- README.md | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 104 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e37873f..365199f 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,112 @@ # Shooting Word -Twitch-чат игра, где зрители пишут слова, чтобы стрелять по врагам. +**Twitch-интерактивная игра, где зрители чата стреляют по врагам, печатая слова.** -## Использование +Shooting Word — это browser-source виджет для стримов, превращающий Twitch-чат в аркадный шутер. Зрители пишут слова в чате, а на экране сначала появляется слово, потом снаряд, и если слово совпадает с врагом — враг уничтожается. Простая механика, высокая вовлечённость, нулевая настройка. -Открой [http://ku6epxboctuk.is-a.dev/shooting-word-html/](http://ku6epxboctuk.is-a.dev/shooting-word-html/), введи имя канала, скопируй ссылку и вставь в OBS как браузер-источник. Чат пишет слова — игрок стреляет. +## Как это работает -Либо сразу открыть `http://ku6epxboctuk.is-a.dev/shooting-word-html/game.html?channel=ИМЯ_КАНАЛА`. +1. Стример добавляет виджет в OBS как **Browser Source** или открывает у себя в браузере. +2. Зрители пишут `!play` в чат, чтобы начать игру. +3. На экране появляются враги с подписанными словами. +4. Зрители печатают совпавшее слово — снаряд летит в цель и уничтожает врага +5. Игра идёт по волнам, сложность растёт, каждые 10 волн — босс. -## Развитие +## Типы врагов + +| Тип | Описание | Очки | +| ----------- | --------------------------------------------- | ---- | +| **Обычный** | Одно слово (hack, code, data, git...) | 10 | +| **Тяжёлый** | Два слова подряд (fire wall, null pointer...) | 50 | +| **Босс** | 3 слоя по 3 слова, появляется каждые 10 волн | 200 | + +Слова — IT/хакерская тематика: названия языков, протоколов, уязвимостей, команд терминала. + +## Возможности + +- **Волны** — количество врагов и их скорость растут с каждой волной +- **Боссы** — multi-phase враги со слоями защиты +- **Статистика** — таблица лидеров по уничтоженным врагам и «Мазила» за много промахов +- **Визуальные эффекты** — частицы, трейлы, screen shake, glitch при уроне +- **Режим single play** — скрытие виджета после одной партии (для автоматизации через Streamer.bot) +- **Локальный ввод** — можно тестировать без Twitch, просто печатая в браузере + +## Установка + +### Быстрый старт + +1. Открой [страницу настройки](http://ku6epxboctuk.is-a.dev/shooting-word-html/) +2. Введи имя.twitch канала +3. Нажми **СКОПИРОВАТЬ ССЫЛКУ** +4. В OBS: Sources → Browser → вставь ссылку +5. Рекомендуемая высота — не менее 800px + +### Прямая ссылка + +```txt +http://ku6epxboctuk.is-a.dev/shooting-word-html/game.html?channel=ИМЯ_КАНАЛА +``` + +### Параметры URL + +| Параметр | Описание | +| -------------- | ----------------------------------------------------- | +| `channel` | Имя канала Twitch (без @) | +| `singlePlay=1` | После game over виджет скрывается (для автоматизации) | + +## Автоматизация с Streamer.bot + +Включи «Отключать источник, когда он не виден» в настройках Browser Source в OBS. Через Streamer.bot скрывай/показывай источник по расписанию или триггерам — игра будет запускаться заново при каждом появлении. Триггер можно настроить на команду или награду за баллы канала. +Полноценной автоматизации без перехода на twitch auth невозможна + +## Технологии + +- Vanilla JavaScript (ES6+), без фреймворков и сборщиков +- Canvas 2D для рендеринга +- [TMI.js](https://github.com/tmijs/tmi.js) для подключения к Twitch IRC +- Один HTML-файл + CSS + JS модули +- Хостится на GitHub Pages + +## Структура проекта + +```txt +├── index.html # Страница настройки (выбор канала) +├── game.html # Игровой экран +├── style.css # Стили ( cyberpunk-тема: чёрный фон, зелёный неон) +├── js/ +│ ├── config.js # Конфигурация и словарь слов +│ ├── game.js # Основной игровой цикл +│ ├── enemy.js # Класс врага (обычный / тяжёлый / босс) +│ ├── projectile.js # Снаряды +│ ├── particle.js # Система частиц +│ ├── input.js # Обработка ввода (чат + локальный) +│ ├── intro.js # Заставка +│ ├── utils.js # Утилиты +│ ├── main.js # Точка входа +│ └── tmi.min.js # Twitch Messaging Interface +├── img/ +│ └── sprite.svg # Иконки (GitHub, Twitch) +└── LICENSE # MIT +``` + +## Добавление своих слов + +Отредактируй `js/config.js`: + +WordGenerator.simpleWords - простые враги из одного слова + +WordGenerator.heavyWords - бронированные враги - два слова + +## Лицензия + +MIT + +## Связь + +- [GitHub Issues](https://github.com/Ku6epXBOCTuK/shooting-word-html/issues) — баги и идеи +- [Twitch](https://www.twitch.tv/ku6ep_xboctuk) — смотри игру в действии + +## Похожие проекты Этот репозиторий не будет активно развиваться. В дальнейшем функционал станет частью проекта [multi-widget](https://github.com/Ku6epXBOCTuK/multi-widget). +Пока что ожидается перенос на sveltekit + miniplex ecs и возможно pixi.js\konva