genshin-twitch-wish не связан с HoYoverse. Genshin Impact, контент и материалы игры являются товарными знаками и принадлежат HoYoverse.
В симуляторе используются контент и материалы из Honey Impact - Genshin Impact DB and Tools.
Симулятор написан на Python и использует PyGame для вывода анимации, TwitchIO для взаимодействия с чатом и наградами на трансляции.
Возможности:
- База персонажей и предметов актуальна для патча
4.3
, обновляется с выходом обновлений в игре - Поддерживаются как одиночные молитвы, так и множественные (от 2 до бесконечности)
- Поддерживается работа с чатом на трансляции и использование баллов канала зрителями
- Поддерживается загрузка пользовательских фонов (даже анимированных), звуков и шрифтов
- Настройка времени и показа стадий анимации (показ ника зрителя, анимация падения, анимация результата молитвы)
- Запись истории молитв зрителей в
CSV
формате - Рендер истории молитв зрителей в
HTML
формате - Полная настройка всех шансов и мягкого гаранта при молитвах
- Полная настройка сообщений чат-бота и баллов канала
- Полная настройка баннеров и выпадающих предметов
- Чат-бот умеет сам делать молитвы, а также подсказывать зрителям, когда они снова могут пользоваться командами (по таймауту)
- Сервисные команды чат-бота для отключения звука или остановки симулятора (паузы) во время важных моментов на трансляции
- Поддержка текста и предметов на разных языках
- Здесь можно выбить скины
Переходим по ссылке на последний релиз, скачиваем архив genshin-twitch-wish_win64.zip
, распаковываем в любую удобную папку. Симулятор состоит из:
- banners - папка, баннеры для симулятора
- sound - папка, звуки для анимаций
- logs - папка, файлы журналов работы симулятора
- images - папка, спрайты для симулятора
- fonts - папка, шрифты для текста
- background - папка, спрайты фонов для анимаций
- text - папка, все текстовые файлы
- ui - папка, файлы интерфейсов
- TwitchGenshinWishSim.exe - сам симулятор
- icon.png - иконка для окна симулятора
- config.json - файл настроек
- config_def.json - шаблон файла настроек
- messages.json - файл с сообщениями для симулятора и чат-бота
- auth.json - появится после первого запуска, файл с Twitch токенами
- database.sqlite - появится после первого запуска, база данных с молитвами зрителей
По умолчанию включен тестовый режим. Можно сразу запустить симулятор TwitchGenshinWishSim.exe
и посмотреть на результат 100 тестовых молитв. Тестовый режим отключается в файле конфигурации, параметр test_mode
В симуляторе используется 2 вида бота: чат-бот - читает сообщения из чата (секция chat_bot), бот на баллы канала - ждет использование наград зрителями (секция event_bot). Так как эти боты работают раздельно друг от друга, возможны 2 варианта настройки:
- Использовать разные учетные записи Twitch. Первая будет чат-ботом, вторая - аккаунт стримера, для баллов канала
- Использовать одну учетную запись и для чат-бота и для баллов канала
При первом запуске будет предложено настроить аккаунты. Настройка автоматическая и интерактивная, нужно лишь следовать инструкциям и отвечать y или n (y - да, n - нет). Когда файл auth.json
будет создан симулятор больше не будет предлагать настроить аккаунты
Получение токенов вручную через собственное приложение
Этот и следующие разделы можно пропустить, если сработала интерактивная настройка
Заходим в свой основной аккаунт Twitch, переходим в панель разработчика, жмем кнопку Регистрация приложения
Заполняем по порядку:
- Название приложения (должно быть уникальным, можно добавить название канала)
- Ссылка, куда будет передаваться токен, указываем
https://twitchtokengenerator.com
- Категория
Chat Bot
Проходим капчу и подтверждаем создание приложения.
Переходим обратно к списку всех приложений и выбираем то, которое только что создали, жмем Управление
Жмем на кнопку Новый секретный код
, появится новое поле. Оставляем текущую вкладку с данными открытой.
Открываем в новой вкладке (вкладку с данными, если она есть, не закрываем) генератор Twitch токенов, жмем на Uhhhh what? Just take me to the site
Заполняем поля данными из предыдущей вкладки (если пропустили предыдущий пункт то не трогаем):
- CLIENT ID = Идентификатор клиента
- CLIENT SECRET = Секретный код клиента
Если для чат-бота и для баллов канала будет использоваться один и тот же аккаунт, то отмечаем пункты:
- chat:read - чтобы читать сообщения из чата
- chat:edit - чтобы писать в чат
- channel:read:redemptions - чтобы видеть использование балов канала
Если разные:
- Для чат-бота отмечаем:
- chat:read - чтобы читать сообщения из чата
- chat:edit - чтобы писать в чат
- Для бота баллов канала (аккаунт, с которого будет вестись трансляция):
- channel:read:redemptions - чтобы видеть использование балов канала
Прокручиваем до конца списка и жмем кнопку Generate Token!
Обязательно проверяем, что вверху страницы указано название нашего приложения (если создавали) и имя нужного нам аккаунта. После чего нас перекинет на предыдущую страницу.
Копируем токен и вставляем в файл конфигурации config.json
:
- если используем один и тот же аккаунт для чат-бота и для баллов канала:
- вставляем токен в bot_token и channel_token
- если аккаунты для чат-бота и баллов канала разные:
- токен, полученный за аккаунт стримера (с которого будет вестись трансляция и у которого мы отметили пункт channel:read:redemptions) вставляем в channel_token
- выходим из своей учетной записи Twitch
- входим в учетную запись, которая будет использоваться как чат-бот
- повторяем шаги из Создаем токен (страницу с генератором токенов нужно будет обновить после перезахода в другой Twitch аккаунт)
- второй токен вставляем в bot_token (должны быть пункты chat:read и chat:edit)
- window_name - название окна для захвата в OBS
- banner - название баннера из папки
banners
, который будет использовать симулятор - chat_bot - секция для настройки чат-бота
- enabled - включение или отключение секции (true или false)
- wish_command - команда, на которую бот должен реагировать
- wish_command_prefix - префикс для команды
- wish_global_timeout - общее ограничение для всех пользователей на команду бота (в секундах)
- wish_timeout - как часто каждый пользователь может использовать команды бота (в секундах)
- broadcaster - для автора канала
- mod - для модераторов
- vip - для зрителей с VIP
- turbo - для зрителей с Twitch Turbo
- subscriber - для подписчиков
- user - все остальные
- send_notify - отправлять ли уведомление в чат когда пользователь снова может использовать wish_command
- wish_count - количество молитв, которое будет делаться за одно использование команды
- self_wish - режим, при котором бот сам использует команду
- self_wish_every - как часто (если включено) бот будет использовать команду
- enable_colors - включить цветные ники
- event_bot - секция для настройки баллов канала
- enabled - включение или отключение секции (true или false)
- default_color - цвет для ников
- rewards - секция настройки наград за баллы канала
- event_name - название награды
- wish_count - сколько молитв делать при использовании
- animations - секция настройки анимаций
- chroma_color - цвет хромакея
- draw_states - какие стадии анимации будут показаны при молитве
- draw_usertext - вывод ника зрителя с текстом и user_background (если включен)
- draw_fall - вывод анимации падения звезды
- draw_wishes - вывод анимации результат молитвы
- start_delay - как долго будет показан ник пользователя сделавшего молитву (в секундах)
- end_delay - как долго будет показан результат молитвы (в секундах) если была сделана всего 1 молитва
- 3 - для 3★
- 4 - для 4★
- 5 - для 5★
- end_delay_multi - как долго будет показан результат молитвы (в секундах) если было сделано больше 1 молитвы
- 3 - для 3★
- 4 - для 4★
- 5 - для 5★
- user_background - секция настройки пользовательских фонов
- enabled - включение или отключение секции (true или false)
- path - название файла в папке background (только имя файла, не полный путь)
- type - тип фона,
static
для JPG или PNG,gif
для GIF (видео файлы.mp4
и другие тоже могут работать)
- font - секция настройки шрифтов и текста
- path - название файла в папке fonts (только имя файла, не полный путь)
- user_uid_size - размер текста для отображения ника пользователя в правом нижнем углу
- wish_name_size - размер текста для сплэш анимации (названия оружий и имена персонажей)
- fps - частота обновления анимаций (все анимации настроены на 30 кадров в секунду)
- sound - секция настройки звука (все файлы должны лежать в папке sound)
- enabled - включение или отключение секции (true или false)
- fall - для анимации падения
- 3 - во время сплэш анимации для 3★
- 4 - во время сплэш анимации для 4★
- 5 - во время сплэш анимации для 5★
- history_file - секция настройки записи истории молитв
- enabled - включение или отключение секции (true или false)
- path - имя файла (не полный путь, вместе с расширением), куда будет записываться история
- 3 - записывать ли выпадение 3★
- 4 - записывать ли выпадение 4★
- 5 - записывать ли выпадение 5★
- language - секция настройки языка симулятора, указывать имя файла (без расширения) из папки
text
- text - язык текста в симуляторе, логов и сообщений об ошибках
- wish_items - язык предметов в симуляторе (должен совпадать с языком в banner баннере)
- messages - язык сообщений в чате
- html_template - шаблон для рендера истории молитв в HTML
- gbot_config - секция с настройками для сервисных команд
- gbot_command - команда, для которой применяются настройки (все команды здесь)
- enabled - включение или отключение команды (true или false)
- timeout - как часто можно использовать команду (в секундах)
- permissions - каким категориям зрителей доступна команда
- broadcaster - для автора канала
- mod - для модераторов
- vip - для зрителей с VIP
- turbo - для зрителей с Twitch Turbo
- subscriber - для подписчиков
- user - все остальные
- gbot_command - команда, для которой применяются настройки (все команды здесь)
- send_dev_stats - включение или отключение отправки анонимной статистики
- test_mode - режим тестирования, Twitch бот не включается, автоматически делаются 100 молитв
Здесь перечислены блоки с текстом, которые симулятор или чат-бот используют во время работы. В каждый блок можно добавлять или удалять строки. В каждом блоке должна быть минимум 1 строка.
- user_splash_text - отображается во время первой стадии анимации под ником зрителя
- chatbot_text - чат-бот использует в ответах зрителям в чате на трансляции
- notify_text - используется для напоминания зрителям, когда их таймаут заканчивается
- channel_points_text - используется для ответа зрителям, которые использовали баллы канала
- status_message - одна строка, текст для сервисной команды gbot_status
- stats_message - одна строка, текст для сервисной команды gbot_stats
В сообщениях бота можно указывать параметры:
- Общие для блоков chatbot_text и channel_points_text
- username - упоминание пользователя, который использовал команду
- wish_count - сколько всего молитв сделал пользователь
- wish_count_w4 - сколько было сделано молитв после последней выпавшей 4★
- wish_count_w5 - сколько было сделано молитв после последней выпавшей 5★
- wishes_in_cmd - сколько будет сделано молитв за использование команды
- que_num - номер в очереди молитв
- Для блока chatbot_text
- user_wish_delay - сколько пользователю придется подождать перед следующим использованием команды (параметр wish_timeout)
- global_wish_delay - как часто весь чат может использовать команду
- Для блока channel_points_text
- reward_cost - стоимость награды в баллах, которую активировал пользователь
- Для блока notify_text
- username - упоминание пользователя, который использовал команду
- command - команда в виде wish_command_prefix + wish_command
- Для блока user_splash_text
- wish_count - сколько всего молитв сделал пользователь
- wishes_in_cmd - сколько будет сделано молитв за использоание команды
- gems_in_cmd - сколько стоят молитвы в примогемах
- Для status_message
- user_mention - зритель, который вызвал команду
- proj_name - название симулятора
- proj_ver - версия симулятора
- proj_url - ссылка на github страницу симулятора
- wcommand - команда молитв для чат бота
- wcommand_c - сколько
wcommand
было использовано - rcommand_c - сколько команд за баллы использовано
- wish_points - сколько баллов канала потрачено зрителями на молитвы
- wish_gems - сколько потратили зрители примогемов (всего молитв * 160)
- wish_queue_size - размер очереди на молитвы
- Для stats_message
- user_mention - зритель, который вызвал команду
- user_wish_all - сколько зритель сделал молитв
- user_wish_epic - сколько было сделано молитв с предыдущего гаранта на 4★
- user_wish_leg - сколько было сделано молитв с предыдущего гаранта на 5★
- user_primo - сколько потратил зритель примогемов (молитвы зрителя * 160)
В симуляторе используется система баннеров похожая на игровую. Настраиваемые баннеры находятся в папке banners
. По умолчанию включен баннер all_in_one.json
, в котором представлены все предметы (оружие, персонажи и скины)
Каждый баннер представляет собой JSON
файл:
- banner_name - имя баннера
- wish_fo_garant - сколько молитв должен сделать пользователь до гаранта 4★
- wish_fo_chance - общий шанс выпадения 4★ (от 0.01 до 99.99)
- wish_fi_garant - сколько молитв должен сделать пользователь до гаранта 5★
- wish_fi_chance - общий шанс выпадения 5★ (от 0.01 до 99.99)
- wish_fi_soft_a - после какой молитвы начнет работать мягкий гарант (должен быть меньше wish_fi_garant)
- wishes - секция с предметами в баннере
Внутри wishes находятся секции 5, 4 и 3, которые обозначают количество звезд у предмета. Внутри каждой из них указываются предметы, доступные для этого баннера:
- char - персонажи и скины
- weapon - оружие
- garant - гарантированные предметы и система 50/50
Во всех секциях должен находиться хотя бы один предмет, если в garant есть хотя бы один предмет, то будет работать система гарантированных предметов.
Список всех доступных предметов для баннеров
Персонажи, 5★
Альбедо
Камисато Аяка
Камисато Аято
Дилюк
Эола
Гань Юй
Ху Тао
Аратаки Итто
Джинн
Каэдэхара Кадзуха
Кэ Цин
Кли
Кокоми
Яэ Мико
Мона
Ци Ци
Райдэн
Шэнь Хэ
Тарталья
Венти
Сяо
Ёимия
Чжун Ли
Элой
Е Лань
Тигнари
Нилу
Сайно
Нахида
Странник
Аль-Хайтам
Бай Чжу
Дэхья
Лини
Нёвиллет
Ризли
Фурина
Навия
Оружие, 5★
Харан гэппаку фуцу
Рассекающий туман
Небесный меч
Меч Сокола
Кромсатель пиков
Клятва свободы
Драгоценный омут
Песнь разбитых сосен
Некованый
Небесное величие
Краснорогий камнеруб
Волчья погибель
Усмиритель бед
Сияющая жатва
Посох Хомы
Покоритель вихря
Нефритовый коршун
Небесная ось
Элегия погибели
Полярная звезда
Небесное крыло
Лук Амоса
Громовой пульс
Аква симулякрум
Охотничья тропа
Память о пыли
Небесный атлас
Молитва святым ветрам
Истина кагура
Вечное лунное сияние
Ключ Хадж-нисут
Посох алых песков
Сновидения тысячи ночей
Воспоминания Тулайтуллы
Первый великий фокус
Маяк тростникового моря
Великолепие лазурного свода
Свет лиственного разреза
Казначейский надзор
Обряд вечного течения
Блеск тихих вод
Обдуманное суждение
Персонажи, 4★
Эмбер
Барбара
Бэй Доу
Беннет
Чун Юнь
Диона
Фишль
Горо
Кэйа
Лиза
Нин Гуан
Ноэлль
Рэйзор
Розария
Кудзё Сара
Саю
Сахароза
Тома
Сян Лин
Син Цю
Синь Янь
Янь Фэй
Юнь Цзинь
Куки Синобу
Сиканоин Хэйдзо
Дори
Коллеи
Кандакия
Лайла
Фарузан
Фремине
Кавех
Линетт
Яо Яо
Кирара
Мика
Шарлотта
Шеврёз
Оружие, 4★
Черногорский длинный меч
Чёрный меч
Церемониальный меч
Стальное жало
Прототип: Злоба
Осквернённое желание
Меч-флейта
Меч Фавония
Меч нисхождения
Меч аристократов
Киноварное веретено
Драконий рык
Вспышка во тьме
Амэнома Кагэути
Легендарный клинок Иссин
Легендарный клинок Иссин
Кагоцурубэ Иссин
Деревянный клинок
Черногорская бритва
Церемониальный двуручный меч
Прототип: Архаичный
Меч-колокол
Меч драконьей кости
Королевский двуручный меч
Кацурагикири Нагамаса
Каменный меч
Заснеженное звёздное серебро
Дождерез
Двуручный меч Фавония
Благодатный владыка вод
Белая тень
Акуомару
Регалия леса
Черногорская пика
Смертельный бой
Режущий волны плавник
Прототип: Звёздный блеск
Пика полумесяца
Крест-копьё Китаин
Королевское копьё
Копьё Фавония
Копьё Драконьего хребта
Каменное копьё
Гроза драконов
«Улов»
Пронзающий луну
Черногорский боевой лук
Церемониальный лук
Хищник
Хамаюми
Составной лук
Ржавый лук
Прототип: Полумесяц
Охотник во тьме
Ода анемонии
Луна Моун
Королевский лук
Зелёный лук
Вальс Нирваны Ночи
Боевой лук Фавония
Бесструнный
Гаснущие сумерки
Приближённый короля
Иссушитель
Черногорский агат
Церемониальные мемуары
Солнечная жемчужина
Прототип: Янтарь
Плод вечной мерзлоты
Песнь странника
Око сознания
Око клятвы
Морской атлас
Королевский гримуар
Кольцо Хакусин
Кодекс Фавония
Истории Додоко
Вино и песни
Плод восполнения
Лунное сияние ксифоса
Аквамарин Махары
Копьё послания ветров
Скитающаяся звезда
Токабо сигурэ
Баллада фьордов
Грандиозный финал глубин
Перевозчик Флёв Сандр
Сверкание чистых вод
Цветок в латах
Клюв ибиса
Справедливая награда
Жертвенный нефрит
Наследник слепящего солнца
Мелодия покоя
Говорящая палица
Тень волны
Волчий клык
Песнь необъятной лазури
Верфь
Переносная мотопила
Бур рудоискателя
Дальномер
Меч Нарциссенкрейца
«Магический супермеч высшего владыки»
Оружие, 3★
Холодное лезвие
Филейный нож
Тёмный железный меч
Предвестник зари
Меч путешественника
Меч небесного всадника
Меч из белого железа
Меч драконьей крови
Металлическая тень
Дубина переговоров
Большой меч небесного всадника
Чёрная кисть
Белая кисть
Алебарда Миллелита
Рогатка
Посыльный
Лук ворона
Клятва стрелка
Изогнутый лук
Эпос о драконоборцах
Руководство по магии
Потусторонняя история
Парный нефрит
Изумрудный шар
Янтарная жемчужина
Скины, 4★ и 5★
Алая ночь
Летний блеск
Сон морского бриза
Флёр орхидеи
Яркая лёгкость
Сон вечной ночи
За вольный дух церкви
Встреча звёзд и луны
Скаут на все сто
Наследие Гуннхильдр
Тень ветра в парусах
Цветущий свет звёзд
Послание весеннего цветения
Перед всеми командами используется префикс из wish_command_prefix
- gbot_stats - выводит статистику молитв в чат
- gbot_status - выводит информацию о симуляторе
- gbot_sound - включает или отключает звук во время молитв
- gbot_pause - включает или отключает обработку молитв. Бот по-прежнему будет реагировать на использование баллов канала или команды чата, но анимации молитв воспроизводится не будут, при этом все молитвы будут находиться в очереди пока обработка не будет снова включена
- gbot_history - сгенерирует историю круток в html для зрителя, который использовал команду, и отправит общедоступную ссылку для ее просмотра
- gbot_history_all - то же, что и
gbot_history
, но для всех зрителей
Проект собирает анонимную статистику. В нее входят время запуска и название канала из файла конфигурации. Никакие личные данные, IP адреса или токены от каналов\ботов не передаются.