Skip to content

Latest commit

 

History

History
377 lines (311 loc) · 19.7 KB

README.ua.md

File metadata and controls

377 lines (311 loc) · 19.7 KB

DayZ Command Line Launcher

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

Цей документ доступний у мовах: ua 🇺🇦, eng 🇬🇧, rus 🇷🇺

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 [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/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 — відображає назву GPU та версію драйвера.
  • fps - показує поточну частоту кадрів.
  • frametimes - показує часовий графік кадру.
  • submissions — показує кількість командних буферів, надісланих на кадр.
  • drawcalls - показує кількість викликів малювання та проходів рендерингу на кадр.
  • pipelines - показує загальну кількість графічних і обчислювальних конвеєрів.
  • descriptors - показує кількість пулів дескрипторів і наборів дескрипторів.
  • memory — показує обсяг виділеної та використаної пам’яті пристрою.
  • gpuload - показує приблизне навантаження GPU. Може бути неточним.
  • version - Показує версію DXVK.
  • api - показує рівень функцій D3D, який використовує програма.
  • cs - Показує статистику робочого потоку.
  • compiler - показує діяльність компілятора шейдера
  • samplers — показує поточну кількість використаних пар семплерів [лише D3D9]
  • scale=x - масштабує HUD за коефіцієнтом x (наприклад, 1,5)

Обмеження частоти кадрів DXVK_FRAME_RATE=0