docs: update readme.md
This commit is contained in:
@@ -1,13 +1,112 @@
|
|||||||
# Shooting Word
|
# 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).
|
Этот репозиторий не будет активно развиваться. В дальнейшем функционал станет частью проекта [multi-widget](https://github.com/Ku6epXBOCTuK/multi-widget).
|
||||||
|
Пока что ожидается перенос на sveltekit + miniplex ecs и возможно pixi.js\konva
|
||||||
|
|||||||
Reference in New Issue
Block a user