Как устроен каталог скриптов для автоматизации Genshin Impact

17 авг 2026
515
421
3
3 недели

Каждый, кто играл в Genshin Impact, знает эту рутину: собрать 168 диковинок для прокачки персонажа, зачистить споты с рудой, пройти ежедневные подземелья. Процесс превращается во вторую работу. Сообщество решает эту проблему по-своему. Проект BetterGI использует компьютерное зрение и эмуляцию ввода для автоматизации рутины, а репозиторий bettergi-scripts-list служит для него чем-то вроде центрального пакетного менеджера.

Мне стало интересно посмотреть, как разработчики организовали хранилище пользовательских скриптов. Когда сотни людей присылают маршруты фарма, боевые ротации и кастомные JS-макросы, проект легко превратить в свалку. Здесь авторы выстроили строгую систему модерации и структуры через обычные Pull Request.

Что внутри репозитория

Репозиторий питает веб-витрину bgi.sh. Пользователи запускают клиент BetterGI, выбирают нужный сценарий из каталога, и приложение подтягивает данные прямо из Git. Никакой сложной серверной базы данных — GitHub выступает в роли единого источника истины.

Каталог разбит на четыре основных направления:

  • repo/combat — скрипты боевых ротаций. Здесь описываются тайминги способностей персонажей, паузы и условия завершения боя в подземельях.
  • repo/pathing — навигационные маршруты. Это JSON-файлы с координатами движения персонажа от телепортов к точкам сбора ресурсов.
  • repo/js — комплексные сценарии автоматизации на JavaScript с распознаванием шаблонов и собственным интерфейсом.
  • repo/tcg — логика для карточного режима «Священный призыв семерых».

Архитектура навигационных скриптов

Самая объемная часть каталога — маршруты сбора ресурсов (pathing). Чтобы тысячи файлов оставались читаемыми, сообщество ввело жесткий стандарт именования:

Реклама
Номер-НазваниеМатериала-Регион-Подобласть-Количество

Пример из репозитория: 01-水晶块-璃月-绝云间-6个 (Кристаллы, Ли Юэ, Заоблачный предел, 6 штук). Номера выдаются не просто так. Маршруты сортируют либо по порядку телепортов для сокращения загрузок, либо по плотности ресурсов, чтобы сначала фармить самые жирные точки.

Интересно решена проблема конфликтов. Допустим, два автора составили маршруты сбора одного и того же цветка, но под разные сетапы персонажей:

repo/pathing/地方特产/
└── НазваниеМатериала/
    ├── С_Нахидой@Автор1
    ├── Без_Нахиды@Автор2
    └── Быстрый_маршрут@Автор3

Если у игрока есть персонаж, собирающий ресурсы дистанционно, он качает один пресет. Если сбор идет стандартным персонажем с двуручным мечом для разбивания руды — другой. Структура каталога изолирует эти варианты по папкам с суффиксом @имя_автора.

Комплексные сценарии на JavaScript

Простые перемещения закрывают не все задачи. Для сложных вещей вроде автоматического фарма артерий земли или прокачки используются JS-скрипты. Типичная структура папки в repo/js:

repo/js/AutoLeyLineOutcrop/
├── Assets/
│   ├── Pathing/              # Файлы маршрутов для передвижения
│   │   └── route.json
│   └── RecognitionObject/    # Картинки-референсы для OpenCV
│       └── target.png
├── main.js                   # Основная логика
├── manifest.json             # Метаданные скрипта
├── settings.json             # Настройки пользователя
└── README.md

Внутри main.js разработчики связывают воедино работу с шаблонами изображений (Template Matching через OpenCV) и симуляцию кликов. Если на экране появляется нужный значок из папки Assets/RecognitionObject, триггерится ветка логики.

Для настройки параметров авторы скриптов могут подключать кастомные HTML-оверлеи. В правилах репозитория к ним есть четкие требования: запрещено тянуть тяжелые SPA-бандлы без исходников, чтобы веб-движок оверлея не отъедал лишнюю оперативку во время игры.

{
  "name": "AutoLeyLineOutcrop",
  "version": "1.0.0",
  "author": "CommunityDev",
  "description": "Автоматический поиск и сбор наград артерий земли"
}

Контрибьюторы и поддержка

Проект поддерживается активным китайским комьюнити. Основная масса правок идет через GitHub PR, где авторы придерживаются строгих правил комментирования и форматирования.

Active Contributors of babalae/bettergi-scripts-list - Last 28 days

Кому проект будет полезен

Если вы пишете ботов для игр или создаете автоматизацию на базе компьютерного зрения, bettergi-scripts-list — отличный пример того, как организовать коллективную базу скриптов:

  • Как сделать GitHub реестром пакетов без написания бэкенда.
  • Как хранить ассеты распознавания изображений вместе с исполняемым кодом.
  • Как выстроить схему именования файлов, исключающую дубли и путаницу между десятками авторов.

Исходники открыты, а документация по форматам сценариев доступна на сайте проекта. Даже если вы далеки от Genshin Impact, архитектурные решения по организации файлов и стандартов контрибьютинга вполне можно забрать в свои утилиты.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.