Что такое gcsim и как им пользоваться?

Что такое gcsim и как им пользоваться?

imring

gcsim - это симулятор боя для 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 и поменять характеристику персонажей на свои.


Более подробную информацию можете изучить в документации.

Спасибо за прочтение статьи!

Report Page