dayz-ctl — this is an experimental launcher (server explorer and launcher) DayZ on Steam Proton for Linux.
This document is available in languages: eng ??, rus ??, ua ??
At the time of this project, Bohemia Interactive was still unable to make a working launcher for the game that could correctly install modifications and connect to game servers. That is why this project was born.
Key Features:
Special thanks to dayz-linux-cli-launcher for the idea and dayzsalauncher for the API.
Launcher Demo
Main menu |
Server browser |
Server filters |
Filter by map |
Applied selected filters |
Favorites browser |
History browser |
Fuzzy search |
Offline mode |
Mods for offline |
Server mods |
Mods info |
Config menu |
Launch options |
About menu |
DayZ News |
There are two modes of operation of the launcher with and without using SteamCMD to manage mods in manual mode.
You can combine both approaches, for example, subscribe to those modifications that you will definitely need in the future by clicking on the link, and check for updates or force update mods using the launcher. Also, you can not subscribe to the "doubtful 50 mods" of the next server and easily remove them with one action from the launcher, while maintaining all the mods for which you have a subscription.
For ease of installation, there is a small script that will do everything for you (at least try to do it)
Execute this:
curl -sSfLA dayz-ctl bit.ly/3Vf2zz3 | bash
For the launcher to work, you need to make sure that you have all the dependencies installed:
ping
(iputils-ping
) - find out the ping to the server (where ICMP is
enabled)geoiplookup
(geoip-bin
) - find out the country where the server is
locatedwhois
- fallback for geoiplookup, less accurate and slower, but not all
entries are in the standard geoip databasecurl
- utility for communicating with various APIs over HTTP/Scut, tr, grep, pgrep, pkill, killal, timeout, sed, awk
(gawk
) - where
without classic utilities in scriptsThen you can clone the repository:
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
Or download the script file itself:
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
Emojis can be used to properly display elements, you may need to install them, for example, you can use the Noto font from Google.
Below is a list with the package name for different distributions:
fonts-noto-color-emoji
- debian/ubuntugoogle-noto-emoji-color-fonts
- centosgoogle-noto-emoji-fonts
- fedoranoto-fonts-emoji
- archfont-noto-emoji
- alpinenoto-coloremoji-fonts
- suseOr if you don't like emoji or can't use them for some reason, you can apply a patch to replace them with strings:
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)"
It is better to remove all DayZ launch options in Steam and manage them from the launcher or vice versa. Since the keys can be duplicated and this can cause confusion, or in the worst case, cut off some of the keys, because the argument string has a length limit, and on servers with a large number of mods, a very long launch parameter is also used.
Those. leave the launch options empty, or specify only the set of auxiliary utilities and variables you need, for example:
MANGOHUD=1 ENABLE_VKBASALT=1 gamemoderun %command%
You can enter multiple search terms separated by spaces. e.g. ^namalsk DE !PVE !RP
token | match type | description |
---|---|---|
sbtrkt |
fuzzy match | Items that match sbtrkt
|
wild |
exact-match (quoted) | Items that include wild
|
^music |
prefix-exact-match | Items that start with music
|
.mp3$ |
suffix-exact-match | Items that end with .mp3
|
!fire |
inverse-exact-match | Items that do not include fire
|
!^music |
inverse-prefix-exact-match | Items that do not start with music
|
!.mp3$ |
inverse-suffix-exact-match | Items that do not end with .mp3
|
A term with a single bar character acts as an OR operator
PVE | RP
You can fine-tune how the launcher works with the help of environment
variables that you can pass to the environment as usual or write to the
configuration file $HOME/.local/share/dayz-ctl/dayz-ctl.conf
(by default)
List of available variables:
DAYZ_CTL_VERSION
— application versionDAYZ_CTL_NAME
=dayz-ctl
— application nameDAYZ_GAME_ID
=221100
— Steam game IDAPPLICATIONS_DIR
=$HOME/.local/share/applications
— directory for
storing application shortcutsDAYZ_CTL_DIR
=$HOME/.local/share/dayz-ctl
— launcher working
directoryDAYZ_CTL_BIN_DIR
=$HOME/.local/share/dayz-ctl/bin
— directory for
storing additional executable filesDAYZ_REQUEST_TIMEOUT
=10
— standard timeout for HTTP requests in
secondsDAYZ_CONFIG_FILE
=$DAYZ_CTL_DIR/$DAYZ_CTL_NAME.conf
— dayz-ctl
configuration fileDAYZ_SERVER_DB
=$DAYZ_CTL_DIR/servers.json
— server database fileDAYZ_SERVER_DB_TTL
=300
— TTL for server database in secondsDAYZ_SERVER_REQUEST_TIMEOUT
=30
— timeout for getting a list of
servers in secondsDAYZ_NEWS_DB
=$DAYZ_CTL_DIR/news.json
— news base fileDAYZ_NEWS_DB_TTL
=3600
— TTL for the news database in secondsDAYZ_MODS_DB
=$DAYZ_CTL_DIR/mods.json
— modification database fileDAYZ_PROFILE
=$DAYZ_CTL_DIR/profile.json
— user profile fileDAYZ_HISTORY_SIZE
=10
- server explorer history sizeDAYZ_FZF_HISTORY
=$DAYZ_CTL_DIR/.$DAYZ_CTL_NAME-history
— history
file for fuzzy searchDAYZ_USERAGENT
="$DAYZ_CTL_NAME $DAYZ_CTL_VERSION"
— User-Agent
used for HTTP requestsDAYZ_API
=https://dayzsalauncher.com/api/v1
— API
address for getting a list of serversDAYZ_STEAMCMD_ENABLED
=true
- switch to enable or disable the use
of SteamCMDDAYZ_FILTER_MOD_LIMIT
=10
- default mod limit filter valueDAYZ_FILTER_PLAYERS_LIMIT
=50
- default player limit filter valueDAYZ_FILTER_PLAYERS_SLOTS
=60
— default slot limit filter value for
playersSteam launch options with MangoHud, vkBasalt and gamemode enabled:
MANGOHUD=1 ENABLE_VKBASALT=1 gamemoderun %command%
Also, without resorting to third-party utilities, you can display an overlay with information about resources and limit FPS using standard DXVK tools, for example:
DXVK_HUD=fps DXVK_FRAME_RATE=60 gamemoderun %command%
Meaning of DXVK_HUD=fps
... DXVK_HUD=full
:
devinfo
- Displays the name of the GPU and the driver version.fps
- Shows the current frame rate.frametimes
- Shows a frame time graph.submissions
- Shows the number of command buffers submitted per frame.drawcalls
- Shows the number of draw calls and render passes per frame.pipelines
- Shows the total number of graphics and compute pipelines.descriptors
- Shows the number of descriptor pools and descriptor sets.memory
- Shows the amount of device memory allocated and used.gpuload
- Shows estimated GPU load. May be inaccurate.version
- Shows DXVK version.api
- Shows the D3D feature level used by the application.cs
- Shows worker thread statistics.compiler
— Shows shader compiler activitysamplers
- Shows the current number of sampler pairs used [D3D9 Only]scale=x
— Scales the HUD by a factor of x (e.g. 1.5)Frame rate limit DXVK_FRAME_RATE=0