Что такое gcsim и как им пользоваться?
imringgcsim - это симулятор боя для Genshin Impact, который моделирует набор действий всей команды и рассчитывает общий урон, а также предоставляет дополнительную информацию:
- Распределение урона по персонажам и их навыкам;
- Среднее время персонажа на поле;
- Количество реакций/частиц энергии.
Цель состоит в том, чтобы это был ещё один способ помочь пользователям принимать обоснованные решения относительно их команд, ротации, артефактов и оружия.

gcsim vs sheets
В чём преимущество gcsim относительно электронными таблицами:
- Симуляция. В электронных таблицах зачастую основываются на ожидаемых условиях (например, срабатывание пассивки оружия из Церемониальной серии), в то время как gcsim повторяет ротацию значимое количество раз со случайным исходом (к примеру, в 1 раз сработала пассивка Церемониального меча, во 2 раз - нет). Благодаря этому пользователь может визуализировать влияние на DPS любого источника дисперсии, такие как: генерация частиц энергии, соотношение Крит. урона и Шанса крит. попадания, и т.д.
- Простота. В gcsim вам достаточно ввести характеристику персонажей и их действия в отряде. Это проще, чем вводить вручную все баффы/генерацию частиц/формулы урона, согласитесь?
- Отладка. В gcsim вы можете детально изучить любые действия команды. Посмотреть, получает ли персонаж бафф от другого, ловит ли он частицы энергии и т.д.
gcsim идеален?
Команды моделируются в идеализированном, покадрово-точном скрипте против противников, которые не атакуют и не двигаются. Поэтому, если вы видите команду с 35к DPS, не спешите говорить, что она лучше команды с 34к DPS, поскольку урон в игре зависит не только от характеристик персонажей, а и в умении игрока выполнять ротацию; в противнике, его движениях, сопротивлению к элементам и т.д.
Пишем первый скрипт!
Скрипты gcsim можно запустить через веб-сайт программы или через CLI-приложение. В статье рассмотрим первый вариант, поскольку он более простой и доступный.
Перед написанием рекомендую включить конструктор отрядов (англ. Builder) для импорта персонажей.


Первый шаг - добавить персонажей. Есть 3 способа как это сделать.
1) Вручную
Вы сами вписываете характеристику персонажа/оружия/артефактов. Нажимаете + и вводите имя персонажа

Далее нажимаете на карандаш и перед вами появляется окно для редактирования всех характеристик.


Важно! В статах вы вводите характеристику с артефактов, а не с персонажа. Посмотреть можете в игре в Артефакты -> Описание артефакта.

Пример заполнения:

2) Genshin-Optimizer (любой файл формата GOOD)
Этот вариант проще, поскольку вы можете добавить сразу нескольких персонажей. Заходите в настройки (англ. Settings) и нажимаете "Копировать в буфер обмена" (англ. Clipboard).

Далее переходим на страничку gcsim и выбирайте Tools -> Import from GO.

Вставляйте в текстовое поле и нажмите "Load".

После этого добавляйте персонажа, но уже с дополнительным текстом.

3) Через стенд
Самый простой способ. Сперва добавьте нужных персонажей в игровой стенд и включите опцию "Показывать детали персонажей".

Затем перейдите на страничку gcsim и выберите Tools -> Import from Enka.

Введите свой UID, нажмите "Fetch" и далее добавьте персонажей.

После того, как добавили персонажей, вставьте строки:
options swap_delay=12 debug=true iteration=1000; energy every interval=480,720 amount=1; target lvl=100 resist=0.1 hp=1000000000;
Первая строка отвечает за настройки скрипта (задержка между свапами - 12 кадров; отладка включена; количество раз выполнения - 1000).
Вторая строка отвечает за количество генерации частиц (каждые 8-12 секунд генерируется 1 нейтральная частица энергии).
Третья строка создаёт противника 100 уровня со сопротивлением ко всем элементам 10%. 1 млрд HP выдал для динамической длительности ротации (чтобы вручную не вписывать duration в options).
Далее надо указать, с какого персонажа начнётся ротация. К примеру, это будет Аяка:
active ayaka;
После этого добавьте строки:
for let x = 5; x; x = x - 1 {
# list
}
5 означает количество ротаций, потому что в игре мы можем не убить всех противников за одну ротацию, верно? Вместо комментария # list вписывайте действия команды в формате: character action1, action2, ...;. В character вы пишете имя персонажа на английском, в actionN вписываете действие. На данных момент имеются:
attack- Обычная атака (ЛКМ);charge- Заряженная атака (aimдля лучников,aim[weakspot=1]- атака по слабому месту);dash- Рывок (Shift/ПКМ);walk- Ходьба (W);jump- Прыжок (Пробел);swap- Переключиться на другого персонажа (1/2/3/4). Данное действие прописывать не обязательно, поскольку программа автоматически переключает.skill- Элементальный навык (E.skill[hold=1]- долгое нажатие);burst- Взрыв стихии (Q);low_plunge- Атака в падении (нижний удар)high_plunge- Атака в падении (высокий удар);
Одно действие можно повторить написав action1:N, где N - количество раз.
Например, запись Ayaka D N1EQ N2C:
ayaka dash, attack, skill, burst, attack:2, charge;
После написания скрипта нажимаете на Запустить (англ. Run) и ждите, пока завершится.


После того, как симуляция завершилась, можете посмотреть что вышло.

На странице есть несколько вкладок:

- В Итоге находится результат симуляции;
- В Деталях - тоже самое, что и в Итоге, но в виде текста;
- В Конфигурации находится ваш скрипт;
- В Отладке находится подробный результат выполнения 1 итерации конфигурации;
- В Поделиться вы можете создать ссылку на ваш результат симуляции.
Ссылка на ротацию: https://gcsim.app/v3/viewer/share/ad351c2e-8176-4fc5-a893-c2cc2dbc5d7e
База данных ротаций
Если вы не хотите писать свою ротацию, можете найти готовую в gcsim database и поменять характеристику персонажей на свои.
Более подробную информацию можете изучить в документации.
Спасибо за прочтение статьи!