Skip to content

Latest commit

 

History

History
382 lines (316 loc) · 20.2 KB

README.ru.md

File metadata and controls

382 lines (316 loc) · 20.2 KB

DayZ Command Line Launcher

dayz-ctl — это экспериментальный лаунчер (обозреватель серверов и средство запуска) DayZ в Steam Proton для Linux.

Этот документ доступен на языках: rus 🇷🇺, eng 🇬🇧, ua 🇺🇦

logo

На момент реализации этого проекта Bohemia Interactive всё еще не смогла сделать рабочий лаунчер для игры, который мог бы корректно устанавливать модификации и подключатся к игровым серверам. По этой причине появился этот проект.

Основные особенности:

  • Обозреватель серверов с информацией о каждом сервере
  • Нечеткий поиск в обозревателе серверов на базе fzf
  • Автоматическая установка модов (как опция)
  • Широкий набор фильтров для поиска серверов (карта, время суток, модификации, количество игроков, от первого лица, пароль и т.п.)
  • Дополнительная информация в виде страны расположения (используя geoip базу) и ping для каждого сервера
  • Список избранного, история последних 10 игр и создание ярлыков быстрого запуска для подключения к серверам
  • Оффлайн режим DayZCommunityOfflineMode с автоматической установкой, обновлением и возможностью выбора модификаций
  • Меню конфигурации с параметрами запуска игры, настройками лаунчера, управлением и статистикой по модам
  • Предоставляет ссылку с подробной информацией о сервере на battlemetrics

Отдельное спасибо dayz-linux-cli-launcher за идею и dayzsalauncher за API.

Предварительный просмотр

Демонстрация лаунчера Демонстрация лаунчера

Больше скриншотов 👈

Главное меню

Браузер серверов

Фильтрация серверов

Фильтрация по карте

Применение фильтра

Браузер избранного

Браузер истории

Нечеткий поиск

Оффлайн режим

Моды для оффлайн

Моды сервера

Информация о модах

Меню конфигурации

Параметры запуска

Информация

Новости DayZ

Особенности использования SteamCMD

Имеется два режима работы лаунчера с использованием SteamCMD для управления модами и без него в ручном режиме.

Вы можете комбинировать оба подхода, к примеру подписываться на те модификации которые вам точно нужны будут в будущем переходя по ссылке, а наличие обновлений проверять или принудительно обновлять моды при помощи лаунчера. Также вы можете не подписываться на "сомнительные 50 модов" очередного сервера и с легкостью удалить их одним действием из лаунчера, при этом сохранив все моды на которые имеется подписка.

Используя SteamCMD

  • 🟢 Всё происходит автоматически
  • 🟢 Автоматическая проверка наличия обновлений модов прямо сейчас (принудительно)
  • 🟡 Не создается подписки на моды, они просто скачиваются
  • 🟡 Требует закрытия клиента Steam для загрузки модов
  • 🔴 Иногда нужно повторно авторизоваться в Steam

Не используя SteamCMD

  • 🟢 Привычное поведение если вы уже использовали другие решения, к примеру dayz-linux-cli-launcher
  • 🟡 Игра сама не запустится после скачивания модов
  • 🟡 Steam бывает задерживает проверку обновлений и скачивает их только после перезапуска или подписки/отписки от мода
  • 🔴 Подписываться на моды нужно самому руками

Установка

При помощи установщика

Для удобства установки имеется небольшой скрипт который сделает всё за вас (по крайней мере попытается сделать)

Выполните это:

curl -sSfLA dayz-ctl bit.ly/3Vf2zz3 | bash

Ручная установка

Для работы лаунчера вам необходимо убедится что у вас установлены все зависимости:

  • jq - утилита для обработки JSON
  • fzf - утилита для нечеткого поиска
  • gum - утилита для создания диалогов и стилизации вывода
  • ping (iputils-ping) - узнаем пинг до сервера (где включен ICMP)
  • geoiplookup (geoip-bin) - узнаем страну размещения сервера
  • whois - запасной вариант для geoiplookup, менее точный и более медленный, но не все записи есть в стандартной БД geoip
  • curl - утилита для комуникации с различными API по HTTP/S
  • cut, tr, grep, pgrep, pkill, killal, timeout, sed, awk (gawk) - куда же без класических утилит в скриптах
  • Steam - онлайн-сервис цифрового распространения компьютерных игр
  • SteamCMD - steamcmd Консольный клиент Steam
  • DayZ - и естественно сама игра

После чего можете склонировать репозиторий:

git clone git@github.com:WoozyMasta/dayz-ctl.git
# or
git clone https://github.com/WoozyMasta/dayz-ctl.git
# and run
cd dayz-ctl
./dayz-ctl

Или скачать сам файл скрипта:

curl -sSfL -o ~/.local/bin/dayz-ctl \
  https://raw.githubusercontent.com/WoozyMasta/dayz-ctl/master/dayz-ctl
chmod +x ~/.local/bin/dayz-ctl
# and run
dayz-ctl

Emoji

Для нормального отображения элеменотов используются emoji, возможно дополнительно вам понадобится установить их, к примеру вы можете использовать Noto шрифт от Google.

Ниже приведен список с названием пакета для разных дистрибутивов.

  • fonts-noto-color-emoji - debian/ubuntu
  • google-noto-emoji-color-fonts - centos
  • google-noto-emoji-fonts - fedora
  • noto-fonts-emoji - arch
  • font-noto-emoji - alpine
  • noto-coloremoji-fonts - suse

Или же если вам не нравятся emoji или вы не можете использовать их по какой то причине, вы можете применить патч для замены их на строки:

sed -e 's/▫️/•/g' -e 's/🟩/✕/g' -e 's/⬛/ /g' -e 's/🕒/time/g' -e 's/❔/?/g' \
  -e 's/🟢/ok/g' -e 's/🔴/no/g' -e 's/🌙/night/g' -e 's/☀️/day/g' \
  -e 's/🔒/yes/g' -e 's/🔓/no/g' -e 's/✅/ok/g' -e 's/❌/no/g' \
  -i "$(which dayz-ctl)"

Проверялось в дистрибутивах

  • 🟢 Debian bookworm
  • 🟢 Debian bullseye
  • 🟢 Debian buster
  • 🟢 Ubuntu 18.04
  • 🟢 Ubuntu 20.04 💯
  • 🟢 Ubuntu 22.04 💯
  • 🟢 Fedora latest
  • 🟡 Centos 7 (small bugs)
  • 🟡 Centos stream9 (small bugs)
  • 🟢 Alpine latest
  • 🟢 Alpine edge
  • 🟢 Archlinux
  • 🟡 Opensuse leap (small bugs)

Прочее

Steam

Лучше убирать все параметры запуска DayZ в Steam и управлять ими из лаунчера или наоборот. Так как ключи могут дублироваться и это может вызвать путаницу, или в худшем случае обрежет часть ключей, ведь у строки аргументов есть лимит длинны, а на серверах с большим количеством модов используется и так очень длинный параметр запуска.

Т.е. оставьте параметры запуска пустыми, или укажите только нужный вам набор вспомогательных утилит и переменных, к примеру:

MANGOHUD=1 ENABLE_VKBASALT=1 gamemoderun %command%

Синтаксис поиска

Вы можете ввести несколько условий поиска, разделенных пробелами. например ^namalsk DE !PVE !RP

Ключ Тип соответствия Описание
sbtrkt нечеткое совпадение Элементы, соответствующие sbtrkt
'wild точное совпадение (в кавычках) Элементы, включающие wild
^music точное совпадение префикса Элементы, начинающиеся с music
.mp3$ суффикс-точное совпадение Элементы, оканчивающиеся на .mp3
!fire обратное точное совпадение Предметы, не содержащие слова fire
!^music точное соответствие обратного префикса Элементы, которые не начинаются с music
!.mp3$ точное соответствие обратного суффикса Элементы, которые не заканчиваются на .mp3

Термин с одним символом черты действует как оператор ИЛИ

PVE | RP

Переменные окружения

Вы можете более тонко управлять работой лаунчера при помощи переменных окружения которые вы можете передавать в окружение как обычно так и записать в файл конфигурации $HOME/.local/share/dayz-ctl/dayz-ctl.conf (по умолчанию)

Список доступных переменных:

  • DAYZ_CTL_VERSION — версия приложения
  • DAYZ_CTL_NAME=dayz-ctl — название приложения
  • DAYZ_GAME_ID=221100 — ID игры в Steam
  • APPLICATIONS_DIR=$HOME/.local/share/applications — каталог для хранения ярлыков приложений
  • DAYZ_CTL_DIR=$HOME/.local/share/dayz-ctl — рабочий каталог лаунчера
  • DAYZ_CTL_BIN_DIR=$HOME/.local/share/dayz-ctl/bin — каталог хранения дополнительных исполняемых файлов
  • DAYZ_REQUEST_TIMEOUT=10 — стандартный таймаут для HTTP запросов в секундах
  • DAYZ_CONFIG_FILE=$DAYZ_CTL_DIR/$DAYZ_CTL_NAME.conf — конфигурационный файл dayz-ctl
  • DAYZ_SERVER_DB=$DAYZ_CTL_DIR/servers.json — файл базы серверов
  • DAYZ_SERVER_DB_TTL=300 — TTL для базы серверов в секундах
  • DAYZ_SERVER_REQUEST_TIMEOUT=30 — таймаут получения списка серверов в секундах
  • DAYZ_NEWS_DB=$DAYZ_CTL_DIR/news.json — файл базы новостей
  • DAYZ_NEWS_DB_TTL=3600 — TTL для базы новостей в секундах
  • DAYZ_MODS_DB=$DAYZ_CTL_DIR/mods.json — файл базы модификаций
  • DAYZ_PROFILE=$DAYZ_CTL_DIR/profile.json — файл профиля пользователя
  • DAYZ_HISTORY_SIZE=10 — размер истории для обозревателя серверов
  • DAYZ_FZF_HISTORY=$DAYZ_CTL_DIR/.$DAYZ_CTL_NAME-history — файл истории для нечеткого поиска
  • DAYZ_USERAGENT="$DAYZ_CTL_NAME $DAYZ_CTL_VERSION" — User-Agent используемый при HTTP запросах
  • DAYZ_API=https://dayzsalauncher.com/api/v1 — адрес API для получения списка серверов
  • DAYZ_STEAMCMD_ENABLED=true — переключатель для включения или отключения использования SteamCMD
  • DAYZ_FILTER_MOD_LIMIT=10 — величина фильтра лимита модов по умолчанию
  • DAYZ_FILTER_PLAYERS_LIMIT=50 — величина фильтра лимита игроков по умолчанию
  • DAYZ_FILTER_PLAYERS_SLOTS=60 — величина фильтра лимита слотов для игроков по умолчанию

Полезное

Параметры запуска игры в Steam c включенным MangoHud, vkBasalt и gamemode:

MANGOHUD=1 ENABLE_VKBASALT=1 gamemoderun %command%

Также не прибегая к сторонним утилитам вы можете вывести оверлей с информацией о ресурсах и ограничить FPS штатными средствами DXVK, к примеру:

DXVK_HUD=fps DXVK_FRAME_RATE=60 gamemoderun %command%

Значение DXVK_HUD=fps ... DXVK_HUD=full:

  • devinfo — отображает название графического процессора и версию драйвера.
  • fps — показывает текущую частоту кадров.
  • frametimes — показывает график времени кадра.
  • submissions — показывает количество командных буферов, отправленных на кадр.
  • drawcalls — показывает количество вызовов отрисовки и проходов рендеринга на кадр.
  • pipelines — показывает общее количество графических и вычислительных конвейеров.
  • descriptors — показывает количество пулов дескрипторов и наборов дескрипторов.
  • memory — показывает объем выделенной и используемой памяти устройства.
  • gpuload — показывает предполагаемую загрузку графического процессора. Может быть неточным.
  • version — показывает версию DXVK.
  • api — показывает уровень функций D3D, используемый приложением.
  • cs — показывает статистику рабочего потока.
  • compiler — показывает активность компилятора шейдера.
  • samplers — показывает текущее количество используемых пар сэмплеров [только для D3D9]
  • scale=x — Масштабирует HUD в х раз (например, в 1,5)

Ограничение частоты кадров DXVK_FRAME_RATE=0