DayZ Command Line Launcher
dayz-ctl — это экспериментальный лаунчер (обозреватель серверов и средство запуска) DayZ в Steam Proton для Linux.
На момент реализации этого проекта 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, менее точный и более медленный, но не все записи есть в стандартной БД geoipcurl- утилита для комуникации с различными API по HTTP/Scut, tr, grep, pgrep, pkill, killal, timeout, sed, awk(gawk) - куда же без класических утилит в скриптах- Steam - онлайн-сервис цифрового распространения компьютерных игр
 - SteamCMD - steamcmd Консольный клиент Steam
 - DayZ - и естественно сама игра
 
После чего можете склонировать репозиторий:
git clone [email protected]: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/ubuntugoogle-noto-emoji-color-fonts- centosgoogle-noto-emoji-fonts- fedoranoto-fonts-emoji- archfont-noto-emoji- alpinenoto-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 игры в SteamAPPLICATIONS_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-ctlDAYZ_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— переключатель для включения или отключения использования SteamCMDDAYZ_FILTER_MOD_LIMIT=10— величина фильтра лимита модов по умолчаниюDAYZ_FILTER_PLAYERS_LIMIT=50— величина фильтра лимита игроков по умолчаниюDAYZ_FILTER_PLAYERS_SLOTS=60— величина фильтра лимита слотов для игроков по умолчанию
Полезное
- https://github.com/FeralInteractive/gamemode — может помочь с производительностью игры
 - https://github.com/flightlessmango/MangoHud — вывод информации о использовании ресурсов и позволяет ограничивать частоту кадров
 - https://github.com/DadSchoorse/vkBasalt — улучшение изображения, добавляет четкости картинке
 - https://github.com/crosire/reshade-shaders — дополнительные шейдеры, могут использоватся из vkBasalt
 - https://github.com/StuckInLimbo/OBS-ReplayBuffer-Setup — настройка записи повторов в OBS
 - https://github.com/matanui159/ReplaySorcery — утилита для записи повторов
 
Параметры запуска игры в 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















