<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>HowTo Yggdrasil - yggdrasil:games</title>
        <description></description>
        <link>http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/</link>
        <lastBuildDate>Fri, 08 May 2026 03:52:43 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_media/wiki:logo.png</url>
            <title>HowTo Yggdrasil</title>
            <link>http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/</link>
        </image>
        <item>
            <title>Шахматный сервер ChesslaBlab</title>
            <link>http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:games:chesslablab_game_server?rev=1761120799&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;шахматный_сервер_chesslablab&quot;&gt;Шахматный сервер ChesslaBlab&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/chesslablab&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/chesslablab&quot; rel=&quot;ugc nofollow noopener&quot;&gt;ChesslaBlab&lt;/a&gt; - это набор программных инструментов с открытым кодом для организации полноценного шахматного сервера с поддержкой &lt;a href=&quot;https://ru.wikipedia.org/wiki/Stockfish&quot; class=&quot;interwiki iw_wpru&quot; target=&quot;_blank&quot; title=&quot;https://ru.wikipedia.org/wiki/Stockfish&quot; rel=&quot;noopener&quot;&gt;Stockfish&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
В материале рассмотрены тонкости настройки для сети IPv6 и Yggdrasil в частности.
&lt;/p&gt;

&lt;p&gt;
Программный комплекс включает в себя множество компонентов, ниже будет рассмотрен необходимый для игры минимум.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0428\u0430\u0445\u043c\u0430\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 ChesslaBlab&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0448\u0430\u0445\u043c\u0430\u0442\u043d\u044b\u0439_\u0441\u0435\u0440\u0432\u0435\u0440_chesslablab&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-701&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;chess-server&quot;&gt;chess-server&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/chesslablab/chess-server&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/chesslablab/chess-server&quot; rel=&quot;ugc nofollow noopener&quot;&gt;chess-server&lt;/a&gt; написан на языке PHP, поэтому работа с ним не составит трудностей для веб-разработчиков.
&lt;/p&gt;

&lt;p&gt;
Понадобится:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt install git php composer stockfish&lt;/pre&gt;

&lt;p&gt;
для запуска вебсокет-сервера, также лучше создать отдельного пользователя в системе:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;useradd -m chesslablab&lt;/pre&gt;

&lt;p&gt;
устанавливаем последнюю версию из репозитория:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/chesslablab/chess-server.git
cd chess-server
composer install&lt;/pre&gt;

&lt;p&gt;
скопируем файл настройки среды окружения
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp .env.example .env
nano .env&lt;/pre&gt;

&lt;p&gt;
для работы с yggdrasil, приводим конфигурацию к следующему виду, где адрес IPv6 заменяем адресом сервера (yggdrasilctl getSelf)
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;JWT_ISS=[xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
JWT_SECRET=super_password

UID=1000
GID=1000

WS_PORT=8085
WS_ADDRESS=[::]&lt;/pre&gt;

&lt;p&gt;
Остальные параметры из файла example можно удалить или закомментировать.
&lt;/p&gt;

&lt;p&gt;
Поскольку сервер будет работать только в сеть Yggdrasil, открываем порт 8085 для диапазона 0200::/7
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ufw allow from 0200::/7 to any port 8085&lt;/pre&gt;

&lt;p&gt;
&lt;em&gt;* порт можно выбрать любой свободный&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
После этого, chess-server можно запустить: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;php cli/ratchet/ws.php&lt;/pre&gt;

&lt;p&gt;
* Запуск сервера поддерживает несколько веб-сокет библиотек, ratchet поддерживает протоколы wss и ws - в случае Yggdrasil, второй не требует наличия SSL сертификата.
&lt;/p&gt;

&lt;p&gt;
Чтобы сервер запускался при старте системы, можно добавить его в systemd:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nano /etc/systemd/system/chesslablab.service&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=chesslablab
After=network.target

[Service]
Type=simple
User=chesslablab
ExecStart=/usr/bin/php /home/chesslablab/chess-server/cli/ratchet/ws.php
StandardOutput=file:/home/chesslablab/chess-server-debug.log
StandardError=file:/home/chesslablab/chess-server-error.log
Restart=on-failure

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
Обновляем реестр systemd, добавляем службу в автозапуск и стартуем сервис:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl daemon-reload
systemctl enable chesslablab
systemctl start chesslablab&lt;/pre&gt;

&lt;p&gt;
В завершение, проверяем наличие работающей службы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;netstat -tulpn | grep LISTEN&lt;/pre&gt;

&lt;p&gt;
если сервер есть в списке на интерфейсе IPv6, можем к нему подключаться любым совместимым клиентом и играть по сети или с компьютером.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;chess-server&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;chess-server&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;702-3863&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;react-chess&quot;&gt;react-chess&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/chesslablab/react-chess&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/chesslablab/react-chess&quot; rel=&quot;ugc nofollow noopener&quot;&gt;react-chess&lt;/a&gt; - это клиентский веб интерфейс, написанный с использованием фреймворка &lt;a href=&quot;https://ru.wikipedia.org/wiki/React&quot; class=&quot;interwiki iw_wpru&quot; target=&quot;_blank&quot; title=&quot;https://ru.wikipedia.org/wiki/React&quot; rel=&quot;noopener&quot;&gt;React.js&lt;/a&gt;
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_round wrap_info plugin_wrap&quot; style=&quot;width: 60%;&quot;&gt;
&lt;p&gt;
Репозиторий данного клиента был переименован:&lt;br/&gt;

&lt;a href=&quot;https://github.com/chesslablab/spablab.git&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/chesslablab/spablab.git&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/chesslablab/spablab.git&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_round wrap_important plugin_wrap&quot; style=&quot;width: 60%;&quot;&gt;
&lt;p&gt;
Репозиторий данного клиента переведен в статус архива. Информация ниже приведена в качестве исторической справки.
&lt;/p&gt;

&lt;p&gt;
Для использования актуального клиента, смотрите раздел &lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:games:chesslablab_game_server#mpablab&quot; class=&quot;wikilink1&quot; title=&quot;yggdrasil:games:chesslablab_game_server&quot; data-wiki-id=&quot;yggdrasil:games:chesslablab_game_server&quot;&gt;mpablab&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Для компиляции приложения потребуется:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt install npm&lt;/pre&gt;

&lt;p&gt;
Устанавливаем последнюю версию клиента из репозитория:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/chesslablab/react-chess.git
cd react-chess
npm install&lt;/pre&gt;

&lt;p&gt;
Копируем пример конфигурации и делаем как указано ниже, заменив значения своими параметрами:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp .env.example .env
nano .env&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;HOST=[yyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy]
HTTPS=false
PORT=9443

REACT_APP_WS_SCHEME=ws
REACT_APP_WS_HOST=[xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
REACT_APP_WS_PORT=8085&lt;/pre&gt;

&lt;p&gt;
&lt;em&gt;* [yyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy] - адрес клиента react-chess, указывать его не обязательно при использовании нижеуказанных примеров nginx &lt;/em&gt;&lt;br/&gt;

&lt;em&gt;* [xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx] - адрес веб-сокета chess-server &lt;/em&gt;&lt;br/&gt;

&lt;em&gt;*8085 - порт веб-сокет сервера&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
В оригинальной инструкции используются примеры виртуальных хостов /etc/hosts, следовать им не нужно, в случае подключения Yggdrasil-only.
&lt;/p&gt;

&lt;p&gt;
Запускаем веб-клиент:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;npm start&lt;/pre&gt;

&lt;p&gt;
автоматически должно открыться окно браузера с веб интерфейсом для игры.
&lt;/p&gt;

&lt;p&gt;
Для production, клиент компилируется командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;npm run build&lt;/pre&gt;

&lt;p&gt;
* При развертывании клиента на &lt;abbr title=&quot;Virtual Private Server&quot;&gt;VPS&lt;/abbr&gt;, целесообразно компилировать приложение локально, и на сервер выгрузить лишь директорию build, без исходников node. 
Это позволит сэкономить порядка 300 Мб дискового пространства на сервере.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;react-chess&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;react-chess&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3864-6716&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;nginx&quot;&gt;Nginx&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Веб-клиент можно настроить различными способами (еще один вариант для локального развертывания указан в официальной документации)
&lt;/p&gt;

&lt;p&gt;
В примерах ниже, директория build будет установлена по адресу:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/var/www/chesslablab/react-chess/build&lt;/pre&gt;

&lt;p&gt;
Выполнение программы будет осуществляться пользователем www-data, поэтому не забываем дать соответствующие права:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chown -R www-data:www-data /var/www/chesslablab/react-chess/build&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nginx&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:17,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;6717-7431&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit9&quot; id=&quot;домен&quot;&gt;Домен&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
На примере используется домен chesslablab.ygg в системе &lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:dns:alfis&quot; class=&quot;wikilink1&quot; title=&quot;yggdrasil:dns:alfis&quot; data-wiki-id=&quot;yggdrasil:dns:alfis&quot;&gt;Alfis DNS&lt;/a&gt;, при этом доступ ограничен только сети Yggdrasil:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nano /etc/nginx/sites-available/chesslablab.ygg.conf&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;server {
	listen [::]:80;

	allow 0200::/7;
	deny  all;

	root /var/www/chesslablab/react-chess/build;

	index index.html;

	server_name chesslablab.ygg chesslablab.ygg.at;

	location / {
		try_files $uri $uri/ =404;
	}
}&lt;/pre&gt;

&lt;p&gt;
Включаем сайт, тестируем и перезагружаем конфигурацию Nginx:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ln -S /etc/nginx/sites-available/chesslablab.ygg.conf /etc/nginx/sites-enabled/chesslablab.ygg.conf
nginx -t
service nginx reload&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043c\u0435\u043d&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043c\u0435\u043d&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:19,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;7432-8220&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit10&quot; id=&quot;адрес_подсети&quot;&gt;Адрес подсети&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Поскольку не все пользователи Yggdrasil используют &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;, важно предоставить возможность прямого доступа по &lt;abbr title=&quot;Internet Protocol&quot;&gt;IP&lt;/abbr&gt;.
&lt;/p&gt;

&lt;p&gt;
Для Chesslablab удобнее всего создать выделенный &lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:subnet_setting&quot; class=&quot;wikilink1&quot; title=&quot;yggdrasil:subnet_setting&quot; data-wiki-id=&quot;yggdrasil:subnet_setting&quot;&gt;адрес подсети&lt;/a&gt; и настроить по аналогии с доменом.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_round wrap_info plugin_wrap&quot; style=&quot;width: 60%;&quot;&gt;
&lt;p&gt;
При использовании команды ifconfig lo inet6 add нужно учитывать, что адрес сбрасывается после перезагрузки системы, этот вопрос решается отдельно.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0434\u0440\u0435\u0441 \u043f\u043e\u0434\u0441\u0435\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0434\u0440\u0435\u0441_\u043f\u043e\u0434\u0441\u0435\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:22,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;8221-8931&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit13&quot; id=&quot;поддиректория&quot;&gt;Поддиректория&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Расположение клиента в подкатегории вида &lt;a href=&quot;http://[0200::/7]/chesslablab/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://[0200::/7]/chesslablab/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://[0200::/7]/chesslablab/&lt;/a&gt; удобно тем, что к сайту удобно обращаться из адресной строки браузера без &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;, поскольку в истории посещений к поддиректории подставляется &lt;abbr title=&quot;Internet Protocol&quot;&gt;IP&lt;/abbr&gt; ресурса.
&lt;/p&gt;

&lt;p&gt;
Чтобы заставить клиент работать в такой конфигурации без модификации кода react-chess, можно использовать следующий вариант:
&lt;/p&gt;

&lt;p&gt;
создаем ссылку в корневом каталоге сервера:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ln -S /var/www/chesslablab/react-chess/build /var/www/html/chesslablab&lt;/pre&gt;

&lt;p&gt;
&lt;em&gt;*при условии, что корневая веб директория Nginx расположена по адресу /var/www/html&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
открываем стандартный файл конфигурации для корня (обычно default):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nano /etc/nginx/sites-available/default&lt;/pre&gt;

&lt;p&gt;
и добавляем новую секцию:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;	location /chesslablab {

		index index.html;
		
		# чтобы не патчить код клиента, делаем замену веб-корня в ответе сервера с помощью sub_filter

		sub_filter_once off;
		sub_filter_types *;
		
  		sub_filter &amp;#039;action=&amp;quot;/&amp;#039; &amp;#039;action=&amp;quot;/chesslablab/&amp;#039;;
  		sub_filter &amp;#039;href=&amp;quot;/&amp;#039; &amp;#039;href=&amp;quot;/chesslablab/&amp;#039;;
  		sub_filter &amp;#039;src=&amp;quot;/&amp;#039; &amp;#039;src=&amp;quot;/chesslablab/&amp;#039;;
  		
		sub_filter &amp;#039;static/media/&amp;#039; &amp;#039;chesslablab/static/media/&amp;#039;;	

		try_files $uri $uri/ =404;
	}&lt;/pre&gt;

&lt;p&gt;
Тестируем и перезагружаем конфигурацию Nginx:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nginx -t
service nginx reload&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:22,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;8932-10752&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;mpablab&quot;&gt;mpablab&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/chesslablab/mpablab&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/chesslablab/mpablab&quot; rel=&quot;ugc nofollow noopener&quot;&gt;mpablab&lt;/a&gt; - многостраничная и наиболее актуальная версия клиента на базе фреймворка &lt;a href=&quot;https://ru.wikipedia.org/wiki/Symfony&quot; class=&quot;interwiki iw_wpru&quot; target=&quot;_blank&quot; title=&quot;https://ru.wikipedia.org/wiki/Symfony&quot; rel=&quot;noopener&quot;&gt;Symfony&lt;/a&gt;.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_round wrap_info plugin_wrap&quot; style=&quot;width: 60%;&quot;&gt;
&lt;p&gt;
На данный момент, репозиторий клиента переехал по адресу &lt;a href=&quot;https://github.com/chesslablab/website&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/chesslablab/website&quot; rel=&quot;ugc nofollow noopener&quot;&gt;website&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Информация ниже актуализирована. 
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
&lt;strong&gt;Установка&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/chesslablab/website.git
cd website
composer update
cp assets/env.example.js assets/env.js
php bin/console importmap:install&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Настройка&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Далее, нужно настроить приложение для Yggdrasil, используем пример клиент-сервера YGGverse:
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_export/code/yggdrasil:games:chesslablab_game_server?codeblock=27&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_js&quot;&gt;assets/env.js&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;const API_SCHEME = &amp;#039;http&amp;#039;;
const API_HOST = &amp;#039;[301:23b4:991a:634d::cbb]&amp;#039;;
const API_PORT = &amp;#039;80&amp;#039;;
const API_VERSION = &amp;#039;v1&amp;#039;;
const API_KEY = &amp;#039;ваш ключ&amp;#039;;

const WEBSOCKET_SCHEME = &amp;#039;ws&amp;#039;;
const WEBSOCKET_HOST = &amp;#039;[201:23b4:991a:634d:8359:4521:5576:15b7]&amp;#039;;
const WEBSOCKET_PORT = &amp;#039;8085&amp;#039;;

export {
  API_SCHEME,
  API_HOST,
  API_PORT,
  API_VERSION,
  API_KEY,
  WEBSOCKET_SCHEME,
  WEBSOCKET_HOST,
  WEBSOCKET_PORT
};&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
После изменений, необходимо обновить кеш настроек, пересобрав наборы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;php bin/console asset-map:compile&lt;/pre&gt;

&lt;p&gt;
Возможно, данные опции следует указывать в корневом файле .env, не проверял, если так, важно также стандартно для Symfony сбросить кеш продакшн:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Nginx&lt;/strong&gt;
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_export/code/yggdrasil:games:chesslablab_game_server?codeblock=30&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;/etc/nginx/sites-available/chesslablab&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;server {
	listen [301:23b4:991a:634d::cbb]:80;

	server_name _;

	root /home/chesslablab/website/public;

	location / {
		try_files $uri /index.php$is_args$args;
	}
	
	location ~ ^/.+\.php(/|$) {

		# php -v
		fastcgi_pass unix:/run/php/php8.2-fpm.sock;

		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param APP_ENV prod;
	}
}&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;pre class=&quot;code&quot;&gt;service nginx reload&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;mpablab&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mpablab&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:26,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;10753-13054&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;ссылки&quot;&gt;Ссылки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Проект на GitHub: &lt;a href=&quot;https://github.com/chesslablab&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/chesslablab&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/chesslablab&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:32,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;13055-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 22 Oct 2025 08:13:19 +0000</pubDate>
        </item>
        <item>
            <title>Half-Life на базе Xash3D</title>
            <link>http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:games:half_life_on_xash3d?rev=1775221664&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;half-life_на_базе_xash3d&quot;&gt;Half-Life на базе Xash3D&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Недавно появился &lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:sites_and_services:other_network_services#half-life&quot; class=&quot;wikilink1&quot; title=&quot;yggdrasil:sites_and_services:other_network_services&quot; data-wiki-id=&quot;yggdrasil:sites_and_services:other_network_services&quot;&gt;внутрисетевой сервер Half-Life&lt;/a&gt; на базе движка Xash3D FWGS.
&lt;/p&gt;

&lt;p&gt;
Стало интересно разобраться в особенностях IPv6 / Yggdrasil и создать этот материал для тех, кто захочет поднять внутрисетевой сервер с нуля и кастомизировать его в дальнейшем.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Half-Life \u043d\u0430 \u0431\u0430\u0437\u0435 Xash3D&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;half-life_\u043d\u0430_\u0431\u0430\u0437\u0435_xash3d&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-549&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;half-life&quot;&gt;Half-Life&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Half-Life - всем известный шутер от первого лица, за 20 лет не утративший свою популярность. 
&lt;/p&gt;

&lt;p&gt;
Технические требования минимальны, игра работает даже на компьютерах без предустановленных видео-драйверов.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Half-Life&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;half-life&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;550-934&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;xash3d_fwgs&quot;&gt;Xash3D FWGS&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/FWGS/xash3d-fwgs&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/xash3d-fwgs&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Xash3D FWGS&lt;/a&gt; - это мульти-платформенный движок с открытым кодом для запуска файлов игры Half-Life 1, с некоторыми доработками оригинального &lt;a href=&quot;https://www.moddb.com/engines/xash3d-engine&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://www.moddb.com/engines/xash3d-engine&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Xash3D&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Файлы самой игры Half-Life нужно приобрести отдельно, затем скопировать в директорию valve с установленным Xash3D FWGS.
&lt;/p&gt;

&lt;p&gt;
Для сборки и запуска необходимо добавить поддержку библиотек архитектуры &lt;code&gt;i386&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dpkg --add-architecture i386
apt update
apt install build-essential gcc-multilib g++-multilib python3 libsdl2-dev:i386 libfontconfig-dev:i386 libfreetype6-dev:i386&lt;/pre&gt;

&lt;p&gt;
При возникновении ошибки запуска в последних версиях
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Host_InitError: Can&amp;#039;t initialize cl_dlls/client.so: vgui.so: cannot open shared object file: No such file or directory&lt;/pre&gt;

&lt;p&gt;
нужно скопировать файл &lt;code&gt;vgui.so&lt;/code&gt; уровнем выше директории valve
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;~/.steam/steam/steamapps/common/Half-Life/&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Xash3D FWGS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xash3d_fwgs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;935-2218&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;xash3d_fwgs_yggverse_edition&quot;&gt;Xash3D FWGS / YGGverse Edition&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/YGGverse/xash3d-fwgs/branches&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/xash3d-fwgs/branches&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Xash3D FWGS YGGverse Edition&lt;/a&gt; основан на ветке master от Xash3D FWGS, целью проекта является создание сборки, ориентированной на сеть Yggdrasil. 
&lt;/p&gt;

&lt;p&gt;
В рамках разработки осуществляются обратно-совместимые контрибуции.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Xash3D FWGS \/ YGGverse Edition&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xash3d_fwgs_yggverse_edition&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2219-2663&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;ветки&quot;&gt;Ветки&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/master&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/master&quot; rel=&quot;ugc nofollow noopener&quot;&gt;master&lt;/a&gt; - зеркало официальной master от Xash3D FWGS для обновлений upstream&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/yggdrasil-only&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/yggdrasil-only&quot; rel=&quot;ugc nofollow noopener&quot;&gt;yggdrasil-only&lt;/a&gt; - предусматривает сборку для подключения исключительно к внутрисетевым серверам Yggdrasil&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/multinet&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/multinet&quot; rel=&quot;ugc nofollow noopener&quot;&gt;multinet&lt;/a&gt; - мульти-сетевая ветка (Интернет + Yggdrasil + &lt;a href=&quot;https://github.com/threefoldtech/mycelium&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/threefoldtech/mycelium&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Mycelium&lt;/a&gt; и др.) - оптимальна для игрового сервера, видимого в списке сетевых игр для клиентов yggdrasil-only&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0435\u0442\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0435\u0442\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2664-3463&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;сборка&quot;&gt;Сборка&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Сборка не отличается от инструкций Xash3D FWGS, достаточно указать адрес репозитория (или использовать нужную ветку для слияния с официальным xash3d-fwgs):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone --recursive https://github.com/YGGverse/xash3d-fwgs.git
cd xash3d-fwgs
git checkout yggdrasil-only
./waf configure -T release
./waf build
./waf install --destdir=/path/to/game&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3464-3957&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;arm&quot;&gt;ARM&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Клиент / сервер могут работать на различных платформах, включая ARM.
На примере armv7, необходимо дополнительно собрать зависимости &lt;a href=&quot;https://github.com/FWGS/hlsdk-portable&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/hlsdk-portable&quot; rel=&quot;ugc nofollow noopener&quot;&gt;hlsdk-portable&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/FWGS/hlsdk-portable.git
cd hlsdk-portable
./waf configure -T release
./waf&lt;/pre&gt;

&lt;p&gt;
После чего скопировать следующие файлы:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; hlsdk-portable/build/cl_dll/client_armv7hf.so &amp;gt; valve/cl_dlls/client_armv7hf.so&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; hlsdk-portable/build/dlls/hl_armv7hf.so &amp;gt; valve/dlls/hl_armv7hf.so&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Потребление ресурсов с одним игроком на процессоре Cortex-A7 и 1GB LPDDR3 SDRAM памяти:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_detail/yggdrasil:games:half-life-arm-server-cortex-a7-1gb-ram.png?id=yggdrasil%3Agames%3Ahalf_life_on_xash3d&quot; class=&quot;media&quot; title=&quot;yggdrasil:games:half-life-arm-server-cortex-a7-1gb-ram.png&quot;&gt;&lt;img src=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_media/yggdrasil:games:half-life-arm-server-cortex-a7-1gb-ram.png?w=580&amp;amp;tok=b9a561&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ARM&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;arm&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3958-4828&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;клиент&quot;&gt;Клиент&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
При использовании сборок &lt;a href=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/yggdrasil-only&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/yggdrasil-only&quot; rel=&quot;ugc nofollow noopener&quot;&gt;yggdrasil-only&lt;/a&gt; или &lt;a href=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/multinet&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/multinet&quot; rel=&quot;ugc nofollow noopener&quot;&gt;multinet&lt;/a&gt; от Xash3D FWGS / YGGverse Edition, в списке «интернет игры» будут по-умолчанию доступны внутрисетевые сервера Yggdrasil (для multinet - Интернет, Yggdrasil, Mycelium и другие).
&lt;/p&gt;

&lt;p&gt;
В остальных случаях, клиент будет работать с IPv6, но по-умолчанию ориентирован на сеть IPv4 и мастер сервер от FWGS - mentality.rip:27010
&lt;/p&gt;

&lt;p&gt;
Можно вручную подключиться к заведомо известному узлу Yggdrasil из консоли с помощью тильды:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;connect [301:f137:d1ac:920e::2019]:27015&lt;/pre&gt;

&lt;p&gt;
С недавних пор, удалось портировать &lt;a href=&quot;#pymaster&quot; title=&quot;yggdrasil:games:half_life_on_xash3d ↵&quot; class=&quot;wikilink1&quot;&gt;pymaster&lt;/a&gt; для работы с IPv6, также имеется &lt;a href=&quot;https://github.com/YGGverse/xash3d-fwgs/commit/afec7161842e928a5627d724e4fd7445fb7c3ee6&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/xash3d-fwgs/commit/afec7161842e928a5627d724e4fd7445fb7c3ee6&quot; rel=&quot;ugc nofollow noopener&quot;&gt;патч для xash3d-fwgs&lt;/a&gt;, позволяющий принимать IPv6 адреса от мастера.
&lt;/p&gt;

&lt;p&gt;
Чтобы удалить IPv4 сервера из списка, открываем консоль и пишем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;clearmasters&lt;/pre&gt;

&lt;p&gt;
затем добавляем внутрисетевой мастер сервер или несколько по очереди:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;addmaster [300:dee4:d3c0:953b::2019]:27010&lt;/pre&gt;

&lt;p&gt;
проверяем
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;listmasters&lt;/pre&gt;

&lt;p&gt;
Данные настройки сохраняются после перезагрузки в файле /valve/xashcomm.lst, также можно добавить сервера вручную, по одному на строку.
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;* тильда работает только в режиме игры, вызов консоли также доступен из главного меню при запуске Xash3D с флагом -dev.&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043b\u0438\u0435\u043d\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043b\u0438\u0435\u043d\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4829-6925&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;лаунчер&quot;&gt;Лаунчер&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Для удобного запуска клиента, можно добавить его в меню приложений:
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_export/code/yggdrasil:games:half_life_on_xash3d?codeblock=9&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_desktop&quot;&gt;~/.local/share/half-life.desktop&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;[Desktop Entry]
Encoding=UTF-8
Name=Half-Life
Exec=/path/to/xash3d
Comment=Half-Life on Xash3D
Terminal=false
Icon=/path/to/hl.png
Type=Application
StartupNotify=false
Categories=Games&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Затем активировать:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xdg-desktop-menu install ~/.local/share/half-life.desktop&lt;/pre&gt;

&lt;p&gt;
Для разных сборок Xash3D, удобно использовать &lt;a href=&quot;https://github.com/YGGverse/hl-customs&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/hl-customs&quot; rel=&quot;ugc nofollow noopener&quot;&gt;тематические иконки&lt;/a&gt;, например для сборки Yggdrasil:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_detail/yggdrasil:half_life_on_xash3d:hl-icon-ipv6.png?id=yggdrasil%3Agames%3Ahalf_life_on_xash3d&quot; class=&quot;media&quot; title=&quot;yggdrasil:half_life_on_xash3d:hl-icon-ipv6.png&quot;&gt;&lt;img src=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_media/yggdrasil:half_life_on_xash3d:hl-icon-ipv6.png?w=128&amp;amp;tok=48155d&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;128&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_detail/yggdrasil:half_life_on_xash3d:hl-icon-yggdrasil.png?id=yggdrasil%3Agames%3Ahalf_life_on_xash3d&quot; class=&quot;media&quot; title=&quot;yggdrasil:half_life_on_xash3d:hl-icon-yggdrasil.png&quot;&gt;&lt;img src=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_media/yggdrasil:half_life_on_xash3d:hl-icon-yggdrasil.png?w=128&amp;amp;tok=d2e71e&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;128&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041b\u0430\u0443\u043d\u0447\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043b\u0430\u0443\u043d\u0447\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;6926-7752&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;сервер&quot;&gt;Сервер&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
При наличии установленного клиента с файлами игры, запуск сервера в сети Yggdrasil/IPv6 осуществляется командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xash3d -dedicated -port6 27015 -ip6 xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx -noip +maxplayers 8 +map crossfire&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; важно указывать канонический адрес узла -ip6 явно (вместо [::]) т.к. при наличии адреса подсети или дополнительной сети вроде &lt;a href=&quot;https://github.com/threefoldtech/mycelium&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/threefoldtech/mycelium&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Mycelium&lt;/a&gt;, возможно автоматическое автоопределение сетевого адреса сокета и как следствие - периодические ошибки подключения клиента и обнаружения в списке мастер сервера; для реализации мульти-сетевой маршрутизации, смотрите:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:nginx_proxying#udp&quot; class=&quot;wikilink1&quot; title=&quot;yggdrasil:nginx_proxying&quot; data-wiki-id=&quot;yggdrasil:nginx_proxying&quot;&gt;Мульти-сетевой прокси UDP средствами Nginx&lt;/a&gt; - важно указать локальный адрес сервера (proxy_pass) как IPv6, чтобы сервер «умел» отправлять запросы на мастер IPv6&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; [::1] - в этом случае, будет произведена отправка статуса на мастера всех сетей (Интернет, Yggdrasil, Mycelium и т.д.) со случайного IPv6 адреса &lt;strong&gt;соответствующей сети&lt;/strong&gt; (или адреса подсети, если такой имеется)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; [xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx] - отправка статуса на мастер будет произведена с канонического IPv6 &lt;strong&gt;текущей сети&lt;/strong&gt;, но мастера других сетей (Интернет, Mycelium и т.д.) вероятно, будут игнорироваться&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/FWGS/xash3d-fwgs/issues/2279&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/xash3d-fwgs/issues/2279&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Вопрос реализации сетевого мульти-стека на GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;-noip&lt;/code&gt; отключает режим IPv4, если у сервера есть «белый &lt;abbr title=&quot;Internet Protocol&quot;&gt;IP&lt;/abbr&gt;» - можно разрешить подключение игроков из Clearnet: &lt;code&gt;-ip xx.xx.xx.xx&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; не забываем открыть порт 27015 (указать можно любой, но клиенты будут вынуждены указывать вместо «connect host» нестандартный порт «connect host:port»)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Дополнительные настройки можно указать в файлах
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; /valve/server.cfg - базовые настройки, такие как имя сервера (hostname)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; /valve/skill.cfg - спецификация сервера&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; /valve/listip.cfg - настройки ограничения доступа&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; /valve/banned.cfg&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Чтобы сервер был доступен в списке мастер сервера, важно указать:
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_export/code/yggdrasil:games:half_life_on_xash3d?codeblock=12&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_cfg&quot;&gt;server.cfg&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;sv_lan 0
public 1&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;em&gt;* стандартный мастер сервер mentality.rip фильтрует по -game valve&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0435\u0440\u0432\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0435\u0440\u0432\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;7753-11033&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;systemd&quot;&gt;systemd&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Конфигурация:
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_export/code/yggdrasil:games:half_life_on_xash3d?codeblock=13&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_service&quot;&gt;/etc/systemd/system/half-life-server.service&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;[Unit]
Description=Half-Life Server
After=network.target

[Service]
Type=simple
User=halflife
ExecStart=/home/halflife/xash3d -dedicated -port6 27015 -ip6 xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx -noip +maxplayers 8 +map crossfire
StandardOutput=file:/home/halflife/server-debug.log
StandardError=file:/home/halflife/server-error.log
Restart=on-failure

[Install]
WantedBy=multi-user.target&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Автозапуск:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl daemon-reload
systemctl enable half-life-server
systemctl start half-life-server
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;systemd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;systemd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;11034-11663&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;fastdl&quot;&gt;FastDL&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
FastDL - сокр. «быстрая загрузка», способ передачи дополнительных ресурсов игры клиенту сервером.
&lt;/p&gt;

&lt;p&gt;
Обычно, реестр организуется средствами сервера nginx таким образом, чтобы файловая структура соответствовала структуре в директории &lt;code&gt;valve&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/maps
/models
/sound
/materials&lt;/pre&gt;

&lt;p&gt;
В файле &lt;code&gt;server.cfg&lt;/code&gt; указывается &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; к данным директориям:
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_export/code/yggdrasil:games:half_life_on_xash3d?codeblock=16&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_cfg&quot;&gt;server.cfg&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;sv_downloadurl &amp;quot;http://xx.xx.xx.xx/fastdl/half-life/&amp;quot;
sv_allowdownload 1&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
где &lt;code&gt;/fastdl/half-life/&lt;/code&gt; - путь к структуре файлов на сервере.
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;* на данный момент поддержки IPv6 для &lt;code&gt;sv_downloadurl&lt;/code&gt; &lt;a href=&quot;https://github.com/FWGS/xash3d-fwgs/issues/1559&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/xash3d-fwgs/issues/1559&quot; rel=&quot;ugc nofollow noopener&quot;&gt;нет&lt;/a&gt;&lt;/em&gt;&lt;br/&gt;

&lt;em&gt;* в рамках форка &lt;a href=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/sv-downloadurl-ipv6&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/xash3d-fwgs/tree/sv-downloadurl-ipv6&quot; rel=&quot;ugc nofollow noopener&quot;&gt;sv-downloadurl-ipv6&lt;/a&gt; добавлена поддержка новой опции для server.cfg - sv_downloadurl_ipv6=«[IPv6]:port/path» позволяющая секурно загружать модели при подключении Yggdrasil&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;FastDL&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fastdl&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:15,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;11664-12954&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;resgen&quot;&gt;RESGen&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Утилита используется для создания файла дополнительных зависимостей в формате &lt;code&gt;.res&lt;/code&gt; для загрузки клиентом из сервера при инициализации карты.
&lt;/p&gt;

&lt;p&gt;
Может быть полезна, если требуется отправить клиенту дополнительные модели игроков, при этом не создавая форки локаций.
&lt;/p&gt;

&lt;p&gt;
Есть &lt;a href=&quot;https://github.com/kriswema/resgen&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/kriswema/resgen&quot; rel=&quot;ugc nofollow noopener&quot;&gt;исходники&lt;/a&gt; и рабочая &lt;a href=&quot;https://github.com/kriswema/resgen/releases&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/kriswema/resgen/releases&quot; rel=&quot;ugc nofollow noopener&quot;&gt;сборка для Linux&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Принцип работы&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Извлекаем зависимости карты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Linux.64-bit /valve/maps/crossfire.bsp&lt;/pre&gt;

&lt;p&gt;
В этой же директории будет создан одноименный файл с расширением &lt;code&gt;.res&lt;/code&gt;, который можно открыть текстовым редактором и добавить нужную зависимость:
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_export/code/yggdrasil:games:half_life_on_xash3d?codeblock=18&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_res&quot;&gt;crossfire.res&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;// crossfire.res - created with RESGen v2.0.3.
// RESGen is made by Jeroen &amp;quot;ShadowLord&amp;quot; Bogers,
// with serveral improvements and additions by Zero3Cool.
// For more info go to http://resgen.hltools.com

// .res entries (9):
halflife.wad
sound/ambience/jetflyby1.wav
sound/ambience/siren.wav
sound/debris/beamstart11.wav
sound/weapons/electro5.wav
sound/weapons/mortarhit.wav
sound/weapons/sbarrel1.wav
sprites/muzzleflash1.spr
sprites/steam1.spr
models/player/... // добавляем в конец файла логический путь к новому файлу (на примере модели FastDL)&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Файл &lt;code&gt;.res&lt;/code&gt; должен находится в той же директории что и файл карты - &lt;code&gt;/valve/maps&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Перезагружаем сервер и переподключаем клиент - кастомнный скин должен быть автоматически загружен клиентом и добавлен в директорию &lt;code&gt;/valve/downloaded/models/player/…&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RESGen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;resgen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:17,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;12955-15093&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;мастер&quot;&gt;Мастер&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Мастер-сервер нужен для удобного поиска игровых серверов через интерфейс игры, иначе нужно каждый раз вводить адрес/порт сервера вручную.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0430\u0441\u0442\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0430\u0441\u0442\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:19,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;15094-15375&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;pymaster&quot;&gt;pymaster&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_round wrap_info plugin_wrap&quot; style=&quot;width: 60%;&quot;&gt;
&lt;p&gt;
Официальный pymaster считается устаревшим, но силами сообщества в отдельных форках есть активность. Разработчики официальной версии обещают версию на Rust, но дата публикации не известна.
&lt;/p&gt;

&lt;p&gt;
Для работы с Yggdrasil, рекомендуется &lt;a href=&quot;https://github.com/YGGverse/pymaster/tree/v2&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/pymaster/tree/v2&quot; rel=&quot;ugc nofollow noopener&quot;&gt;версия от YGGverse&lt;/a&gt;, включающая в себя поддержку IPv6 и обновления протокола Xash3D. 
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
&lt;a href=&quot;https://github.com/FWGS/pymaster&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/pymaster&quot; rel=&quot;ugc nofollow noopener&quot;&gt;pymaster&lt;/a&gt; - это Python реализация мастер-сервера &lt;a href=&quot;https://github.com/ezhangle/hlmaster&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/ezhangle/hlmaster&quot; rel=&quot;ugc nofollow noopener&quot;&gt;HLMaster&lt;/a&gt;, в рамках проекта FWGS. 
&lt;/p&gt;

&lt;p&gt;
Для запуска необходимо открыть порт 27010 и выполнить команду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pymaster.py -i :: -p 27010&lt;/pre&gt;

&lt;p&gt;
&lt;em&gt;* в репозитории также есть &lt;a href=&quot;https://github.com/FWGS/pymaster/blob/master/etc/systemd/system/pymaster.service&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/pymaster/blob/master/etc/systemd/system/pymaster.service&quot; rel=&quot;ugc nofollow noopener&quot;&gt;пример конфигурации systemd&lt;/a&gt; &lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Чтобы pymaster начал отдавать игровые сервера клиентам, обе стороны должны быть скомпилированы или настроены на данный мастер-сервер. 
&lt;/p&gt;

&lt;p&gt;
В Xash3D исходники находятся в файле engine/common/netchan.h строки MASTERSERVER_ADR или в файле конфигурации /valve/xashcomm.lst&lt;br/&gt;

При использовании клиента с графическим интерфейсом, можно динамически указывать мастер сервер в консоли, командами listmasters/clearmasters/addmaster адрес:порт&lt;br/&gt;

Обновление типичных конфигураций valve - steamcomm.lst и valvecomm.lst игнорируется при запуске в оболочке Xash3D.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;pymaster&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pymaster&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:19,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;15376-17430&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;xash3d-master&quot;&gt;xash3d-master&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://git.mentality.rip/numas13/xash3d-master&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://git.mentality.rip/numas13/xash3d-master&quot; rel=&quot;ugc nofollow noopener&quot;&gt;xash3d-master&lt;/a&gt; (&lt;a href=&quot;https://github.com/FWGS/xash3d-master&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/xash3d-master&quot; rel=&quot;ugc nofollow noopener&quot;&gt;GitHub&lt;/a&gt;) - недавний релиз мастер сервера для Xash3D, написанного на языке Rust
&lt;/p&gt;

&lt;p&gt;
В &lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:sites_and_services:other_network_services#radicle&quot; class=&quot;wikilink1&quot; title=&quot;yggdrasil:sites_and_services:other_network_services&quot; data-wiki-id=&quot;yggdrasil:sites_and_services:other_network_services&quot;&gt;локальной сети Radicle&lt;/a&gt; есть неофициальное зеркало:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rad:zsqrKxdka3xJmXSuy3GsF17AVzDh&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt; Установка &lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/FWGS/xash3d-master.git &amp;amp;&amp;amp; cd xash3d-master
cargo build --release
sudo install target/release/xash3d-master /usr/local/bin/xash3d-master&lt;/pre&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_export/code/yggdrasil:games:half_life_on_xash3d?codeblock=22&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_service&quot;&gt;/etc/systemd/system/xash3d-master.service&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;[Unit]
After=network.target

[Service]
Type=simple
User=xash3d-master
Group=xash3d-master
# пример файла конфигурации: `xash3d-master --print-default-config`
ExecStart=/usr/local/bin/xash3d-master -c /path/to/config.toml
StandardOutput=file:///path/to/debug.log
StandardError=file:///path/to/error.log
# Restart=on-failure

[Install]
WantedBy=multi-user.target&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; перед запуском сервиса - открыть UDP порт 27010&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;xash3d-master&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xash3d-master&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:20,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;17431-18629&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;xashms&quot;&gt;XashMS&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/SNMetamorph/XashMS&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/SNMetamorph/XashMS&quot; rel=&quot;ugc nofollow noopener&quot;&gt;XashMS&lt;/a&gt; - асинхронный сервер для Xash3D с поддержкой IPv6 на языке C++
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;XashMS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xashms&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:23,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;18630-18798&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;боты&quot;&gt;Боты&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Чтобы оживить сервер и сделать ожидание игроков интереснее, в игру можно добавить ботов с помощью &lt;a href=&quot;https://github.com/FWGS/xash3d-fwgs/issues/1556#issuecomment-1876014868&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/xash3d-fwgs/issues/1556#issuecomment-1876014868&quot; rel=&quot;ugc nofollow noopener&quot;&gt;сторонних плагинов&lt;/a&gt;. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u043e\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u043e\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:23,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;18799-19115&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit21&quot; id=&quot;bot_number_10&quot;&gt;Bot Number 10&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Самый простой способ - установка последней версии &lt;a href=&quot;http://hpb-bot.bots-united.com/downloads.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://hpb-bot.bots-united.com/downloads.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Bot Number 10&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Загружаем архив для &lt;a href=&quot;http://hpb-bot.bots-united.com/releases/bot10_linux.tgz&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://hpb-bot.bots-united.com/releases/bot10_linux.tgz&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Linux&lt;/a&gt; и распаковываем содержимое в корневую директорию с бинарником xash3d таким образом, чтобы директория &lt;code&gt;bot&lt;/code&gt; была рядом с &lt;code&gt;valve&lt;/code&gt;.
Поскольку плагин являет собой расширение, он не перезаписывает файлы игры, и запускать сервер необходимо указав новый путь к директории игры:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xash3d -game bot&lt;/pre&gt;

&lt;p&gt;
Важно учитывать, что при запуске из нестандартной директории, сервер будет отфильтрован большинством мастер серверов, в виду фильтрации по valve.&lt;br/&gt;

Чтобы решить эту проблему, можно:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; сменить пути DLL в файле gameinfo.txt&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; скопировать содержимое директории bot в valve и перезапустить сервер без флага -game bot&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Также, чтобы сервер удалял ботов при подключении игроков, важно указать явно минимальное 
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_export/code/yggdrasil:games:half_life_on_xash3d?codeblock=24&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_cfg&quot;&gt;bot.cfg&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;min_bots 1 # не ставить в 0, интерпретируется как false
max_bots 4&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
После запуска, настроенные в &lt;code&gt;bot.cfg&lt;/code&gt; персонажи будут добавлены в игру. Плагин является частью проекта &lt;a href=&quot;https://github.com/FWGS/hlsdk-portable/commits/bot10&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/hlsdk-portable/commits/bot10&quot; rel=&quot;ugc nofollow noopener&quot;&gt;hlsdk-portable&lt;/a&gt;, при возникновении проблем, возможно потребуется собрать файл &lt;code&gt;/valve/dlls/hl.so&lt;/code&gt; и заменить им оригинальный, хотя в случае с последней версией Steam - все работает без дополнительных действий.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Bot Number 10&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bot_number_10&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:23,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;19116-21342&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit22&quot; id=&quot;сборка_из_исходников&quot;&gt;Сборка из исходников&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
На сайте есть &lt;a href=&quot;http://hpb-bot.bots-united.com/releases/bot10src.zip&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://hpb-bot.bots-united.com/releases/bot10src.zip&quot; rel=&quot;ugc nofollow noopener&quot;&gt;архив с исходниками&lt;/a&gt;, но последнюю версию можно собрать из репозитория с файлами SDK:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone --recursive https://github.com/FWGS/hlsdk-portable.git
git checkout bot10
cmake -B build -S .
cmake --build build&lt;/pre&gt;

&lt;p&gt;
После компиляции ветки, будет доступен только файл bot.so - остальные файлы нужно собирать отдельно.&lt;br/&gt;

Если для остальных файлов не нужна особая сборка, можно переименовать bot.so в bot_i486.so и смержить с официальным архивом для Linux, пока что это работает.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0430_\u0438\u0437_\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:25,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;21343-22214&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit23&quot; id=&quot;bot_number_10_by_yggverse&quot;&gt;Bot Number 10 by YGGverse&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Открытая модификация Bot Number 10 для сервера YGGverse
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;1.0.0&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; добавлена возможность установки min_bots=0 (PR #423)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; респавн ботов с конфигурации bot.conf (PR #422)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; поддержка дополнительных скинов&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;сборка&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone --recursive https://github.com/YGGverse/hlsdk-portable.git
git checkout bot10-yggverse
cmake -B build -S .
cmake --build build&lt;/pre&gt;

&lt;p&gt;
Есть &lt;a href=&quot;https://github.com/YGGverse/hlsdk-portable/releases&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/hlsdk-portable/releases&quot; rel=&quot;ugc nofollow noopener&quot;&gt;бинарные релизы&lt;/a&gt; для более ранних систем.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Bot Number 10 by YGGverse&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bot_number_10_by_yggverse&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:26,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;22215-22889&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit24&quot; id=&quot;графити&quot;&gt;Графити&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В сетевой игре можно использовать графити, с помощью кнопки T. Изображение выбирается в настройках клиента, раздел «Multiplayer» - «Customize».
&lt;/p&gt;

&lt;p&gt;
Чтобы создать свой логотип, изображение должно быть размером 64х64 пикселя, в палитре Grayscale и формате .BMP
&lt;/p&gt;

&lt;p&gt;
Ниже рассмотрен пример обработки изображения PNG из коллекции &lt;a href=&quot;https://raw.githubusercontent.com/YGGverse/hl-customs/main/icons/ipv6/128x128.png&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://raw.githubusercontent.com/YGGverse/hl-customs/main/icons/ipv6/128x128.png&quot; rel=&quot;ugc nofollow noopener&quot;&gt;hl-customs&lt;/a&gt; в редакторе GIMP:
&lt;/p&gt;

&lt;p&gt;
1. Image → Scale Image → 64&amp;times;64 / Quanlity: Linear&lt;br/&gt;

2. Layer → Transparency → Remove Alpha Channel&lt;br/&gt;

3. Colors → Components → Decompose&lt;br/&gt;

4. Colors → Invert (черный цвет считается прозрачным)&lt;br/&gt;

5. File → Export As.. → сохраняем по адресу /valve/logos/filename.bmp&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Результат на данном примере будет иметь следующий &lt;a href=&quot;https://raw.githubusercontent.com/YGGverse/hl-customs/main/icons/ipv6/valve/logos/ipv6.bmp&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://raw.githubusercontent.com/YGGverse/hl-customs/main/icons/ipv6/valve/logos/ipv6.bmp&quot; rel=&quot;ugc nofollow noopener&quot;&gt;вид&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Следует заметить, что создание Ч/Б графики обусловлено возможностью выбора цвета в интерфейсе игры.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_detail/yggdrasil:half_life_on_xash3d:hl-ipv6-wall-graffiti.png?id=yggdrasil%3Agames%3Ahalf_life_on_xash3d&quot; class=&quot;media&quot; title=&quot;yggdrasil:half_life_on_xash3d:hl-ipv6-wall-graffiti.png&quot;&gt;&lt;img src=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_media/yggdrasil:half_life_on_xash3d:hl-ipv6-wall-graffiti.png?w=400&amp;amp;tok=22fe14&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;HL IPv6 Graffiti&quot; alt=&quot;HL IPv6 Graffiti&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0413\u0440\u0430\u0444\u0438\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0433\u0440\u0430\u0444\u0438\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:27,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;22890-24379&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit25&quot; id=&quot;игровые_сервера&quot;&gt;Игровые сервера&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0433\u0440\u043e\u0432\u044b\u0435_\u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:27,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;24380-24422&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit26&quot; id=&quot;skunky&quot;&gt;Skunky&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; [301:f137:d1ac:920e::2019]:27015 - 9 ботов, только Yggdrasil&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Skunky&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;skunky&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:27,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;24423-24517&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit27&quot; id=&quot;ps&quot;&gt;P.S.&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Сервер &lt;strong&gt;может быть&lt;/strong&gt; выключен, обратитесь к &lt;a href=&quot;https://mastodon.social/@yggverse&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://mastodon.social/@yggverse&quot; rel=&quot;ugc nofollow noopener&quot;&gt; администратору&lt;/a&gt; для запуска
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; [202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:27015 - Yggdrasil &amp;amp; Mycelium&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;P.S.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ps&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:27,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;24518-24779&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit28&quot; id=&quot;yggverse&quot;&gt;YGGverse&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Имеется &lt;a href=&quot;https://github.com/YGGverse/half-life-server&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/half-life-server&quot; rel=&quot;ugc nofollow noopener&quot;&gt;открытая конфигурация&lt;/a&gt; сервера, можно вносить свои предложения или использовать для организации нового сервера.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;YGGverse&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;yggverse&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:27,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;24780-25070&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit29&quot; id=&quot;мастер_сервера&quot;&gt;Мастер сервера&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; [300:dee4:d3c0:953b::2019]:27010 - by &lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/user:skunky&quot; class=&quot;wikilink1&quot; title=&quot;user:skunky&quot; data-wiki-id=&quot;user:skunky&quot;&gt;lost+skunk&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; [202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:27010 by &lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/user:ps&quot; class=&quot;wikilink1&quot; title=&quot;user:ps&quot; data-wiki-id=&quot;user:ps&quot;&gt;ps&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0430\u0441\u0442\u0435\u0440 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0430\u0441\u0442\u0435\u0440_\u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:27,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;25071-25250&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit30&quot; id=&quot;игровые_наборы&quot;&gt;Игровые наборы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Снимок Steam ID 70 в сети &lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:sites_and_services:other_network_services#radicle&quot; class=&quot;wikilink1&quot; title=&quot;yggdrasil:sites_and_services:other_network_services&quot; data-wiki-id=&quot;yggdrasil:sites_and_services:other_network_services&quot;&gt;Radicle&lt;/a&gt;, с историей официальных обновлений (от 2025г.)
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rad:z3LRRg2os4mihf6n12P6m2Ukr4BfW&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://app.radicle.xyz/nodes/iris.radicle.xyz/rad%3Az3LRRg2os4mihf6n12P6m2Ukr4BfW&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://app.radicle.xyz/nodes/iris.radicle.xyz/rad%3Az3LRRg2os4mihf6n12P6m2Ukr4BfW&quot; rel=&quot;ugc nofollow noopener&quot;&gt;iris&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u043d\u0430\u0431\u043e\u0440\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0433\u0440\u043e\u0432\u044b\u0435_\u043d\u0430\u0431\u043e\u0440\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:27,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;25251-25628&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit31&quot; id=&quot;сборки&quot;&gt;Сборки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Манифест автоматической сборки Flatpak, используя игровой набор rad:z3LRRg2os4mihf6n12P6m2Ukr4BfW
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rad:zQwuiSABZkACpAYgn5mJvf7y4QNm&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ветка radicle-bundle, &lt;a href=&quot;http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]/d/173&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]/d/173&quot; rel=&quot;ugc nofollow noopener&quot;&gt;инструкция&lt;/a&gt; (Ukr)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:28,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;25629-25975&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit32&quot; id=&quot;статистика&quot;&gt;Статистика&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:27080/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:27080/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;HLState&lt;/a&gt; - сканер локальных мастер-серверов &lt;a href=&quot;https://github.com/YGGverse/HLState&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/HLState&quot; rel=&quot;ugc nofollow noopener&quot;&gt;с открытым кодом&lt;/a&gt; для поиска и мониторинга статистики игровых серверов Xash3D/FWGS&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:29,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;25976-26326&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit33&quot; id=&quot;ссылки&quot;&gt;Ссылки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/FWGS/xash3d-fwgs&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/xash3d-fwgs&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Xash3D FWGS&lt;/a&gt; / &lt;a href=&quot;https://github.com/YGGverse/xash3d-fwgs/branches&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/xash3d-fwgs/branches&quot; rel=&quot;ugc nofollow noopener&quot;&gt;YGGverse Edition&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://store.steampowered.com/app/70/HalfLife/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://store.steampowered.com/app/70/HalfLife/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Half-Life в Steam&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://www.svencoop.com/manual/server-config.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://www.svencoop.com/manual/server-config.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Параметры конфигурации сервера&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://github.com/FWGS/pymaster&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/pymaster&quot; rel=&quot;ugc nofollow noopener&quot;&gt;официальный pymaster&lt;/a&gt; | &lt;a href=&quot;https://github.com/xdettlaff/pymaster&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/xdettlaff/pymaster&quot; rel=&quot;ugc nofollow noopener&quot;&gt;более чистая версия от @xdettlaff&lt;/a&gt; | &lt;a href=&quot;https://github.com/YGGverse/pymaster/tree/v2&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/pymaster/tree/v2&quot; rel=&quot;ugc nofollow noopener&quot;&gt;адаптация от YGGverse на базе @xdettlaff&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://git.mentality.rip/numas13/xash3d-master&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://git.mentality.rip/numas13/xash3d-master&quot; rel=&quot;ugc nofollow noopener&quot;&gt;xash3d-master на rust&lt;/a&gt; | &lt;a href=&quot;http://[316:c51a:62a3:8b9::4]/YGGverse/xash3d-master&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://[316:c51a:62a3:8b9::4]/YGGverse/xash3d-master&quot; rel=&quot;ugc nofollow noopener&quot;&gt;зеркало Yggdrasil&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol:ru&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol:ru&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Информация о мастер-сервере&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://developer.valvesoftware.com/wiki/Server_queries&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://developer.valvesoftware.com/wiki/Server_queries&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Серверные запросы с множеством полезных ссылок&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://hpb-bot.bots-united.com/index.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://hpb-bot.bots-united.com/index.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Боты, совместимые с Xash3D&lt;/a&gt; | &lt;a href=&quot;https://github.com/YGGverse/hlsdk-portable/tree/bot10-yggverse&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/hlsdk-portable/tree/bot10-yggverse&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Bot Number 10 by YGGverse&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://github.com/YGGverse/hl-php&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/hl-php&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Библиотека PHP 8 для веб разработчиков&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://gamebanana.com/mods/cats/7734&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://gamebanana.com/mods/cats/7734&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Каталог скинов&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/YGGverse/hl-customs/main/icons/yggdrasil/valve/logos/yggdrasil.bmp&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://raw.githubusercontent.com/YGGverse/hl-customs/main/icons/yggdrasil/valve/logos/yggdrasil.bmp&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Графити Yggdrasil&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/YGGverse/hl-customs/main/icons/ipv6/valve/logos/ipv6.bmp&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://raw.githubusercontent.com/YGGverse/hl-customs/main/icons/ipv6/valve/logos/ipv6.bmp&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Графити IPv6&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]/d/169-rozvidka-bojem-xash3d-fwgs-half-life-v-haiku-os&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]/d/169-rozvidka-bojem-xash3d-fwgs-half-life-v-haiku-os&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Сборка Xash3D/FWGS Half-Life на Haiku OS (Ukr)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://github.com/YGGverse/xash3d-master/tree/ip6-only/query&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/YGGverse/xash3d-master/tree/ip6-only/query&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Утилита для сканирования серверов Xash3D/FWGS (IPv6)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/supported-mod-list.md&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/supported-mod-list.md&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Все поддерживаемые движком игры &lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:29,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;26327-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 03 Apr 2026 13:07:44 +0000</pubDate>
        </item>
        <item>
            <title>NotBlood</title>
            <link>http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:games:notblood?rev=1772761080&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;notblood&quot;&gt;NotBlood&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
С недавних пор (&lt;a href=&quot;https://github.com/clipmove/NotBlood/commit/06779d55e8342f06763b4c78300bae6a941f9cc6&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/clipmove/NotBlood/commit/06779d55e8342f06763b4c78300bae6a941f9cc6&quot; rel=&quot;ugc nofollow noopener&quot;&gt; 1 &lt;/a&gt;, &lt;a href=&quot;https://github.com/clipmove/NotBlood/commit/4c6e319cddf262e8ccea7e51f223a63019290b49&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/clipmove/NotBlood/commit/4c6e319cddf262e8ccea7e51f223a63019290b49&quot; rel=&quot;ugc nofollow noopener&quot;&gt; 2 &lt;/a&gt;) пользователи Yggdrasil могут играть по сети NotBlood редакции движка &lt;a href=&quot;https://github.com/clipmove/NotBlood&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/clipmove/NotBlood&quot; rel=&quot;ugc nofollow noopener&quot;&gt; clipmove &lt;/a&gt;, используя стек IPv6.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;NotBlood&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;notblood&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-446&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;скриншоты&quot;&gt;Скриншоты&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_detail/yggdrasil:games:notblood.webp?id=yggdrasil%3Agames%3Anotblood&quot; class=&quot;media&quot; title=&quot;yggdrasil:games:notblood.webp&quot;&gt;&lt;img src=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_media/yggdrasil:games:notblood.webp?w=640&amp;amp;tok=e3624a&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;447-519&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;установка&quot;&gt;Установка&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Зависимости:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo dnf install g++ nasm mesa-libGL-devel SDL2-devel alsa-lib-devel libvpx-devel gtk2-devel flac flac-devel&lt;/pre&gt;

&lt;p&gt;
Сборка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/clipmove/NotBlood.git
cd NotBlood
make HAVE_GTK2=0&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wiki.eduke32.com/wiki/Building_EDuke32_on_Linux&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://wiki.eduke32.com/wiki/Building_EDuke32_on_Linux&quot; rel=&quot;ugc nofollow noopener&quot;&gt; другие опции сборки &lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
В корне будет создан бинарник &lt;strong&gt;notblood&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;520-987&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;игровые_наборы&quot;&gt;Игровые наборы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для запуска игры, потребуются игровые наборы: в частности файлы, которые располагаются в общей с &lt;strong&gt;notblood&lt;/strong&gt; директории:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; BLOOD.INI&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; BLOOD.RFF&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; BLOOD000.DEM, …, BLOOD003.DEM (optional)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CP01.MAP, …, CP09.MAP (optional, Cryptic Passage)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CPART07.AR_ (optional, Cryptic Passage)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CPART15.AR_ (optional, Cryptic Passage)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CPBB01.MAP, …, CPBB04.MAP (optional, Cryptic Passage)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CPSL.MAP (optional, Cryptic Passage)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CRYPTIC.INI (optional, Cryptic Passage)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CRYPTIC.SMK (optional, Cryptic Passage)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CRYPTIC.WAV (optional, Cryptic Passage)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;.RFF&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SOUNDS.RFF&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SURFACE.DAT&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TILES000.ART, …, TILES017.ART&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; VOXEL.DAT&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
При наличии игры в формате .exe извлечь файлы можно утилитой &lt;strong&gt;innoextract&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo dnf install innoextract
innoextract /path/to/game.exe&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u043d\u0430\u0431\u043e\u0440\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0433\u0440\u043e\u0432\u044b\u0435_\u043d\u0430\u0431\u043e\u0440\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;988-1989&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;запуск&quot;&gt;Запуск&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Запуск игры осуществляется файлом &lt;strong&gt;notblood&lt;/strong&gt;. Если игровые наборы расположены отдельно, указать путь к директории можно аргументом -game_dir:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;notblood -game_dir=/path/to/data&lt;/pre&gt;

&lt;p&gt;
Все доступные &lt;a href=&quot;https://wiki.eduke32.com/wiki/Command_line_options&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://wiki.eduke32.com/wiki/Command_line_options&quot; rel=&quot;ugc nofollow noopener&quot;&gt; опции запуска &lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;notblood -help&lt;/pre&gt;

&lt;p&gt;
Подключение к игровому серверу:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;notblood -client 201:b8dc:421d:4b4d:add6:af78:f9d6:f18c -port 23513&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; указание псевдонима /etc/hosts - не работает!&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043f\u0443\u0441\u043a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043f\u0443\u0441\u043a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1990-2679&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;flatpak&quot;&gt;Flatpak&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В сети Radicle (Git) имеется готовый манифест для сборки all-in-one, в котором также «локально» прозеркалированы все зависимости:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rad:z4PJFeN7hLR94wVzFuKXzM5HCDmez&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;rad:z2QnERwRUVeEEG9dDZVNFdzRDawYt&lt;/code&gt; - снимок репозитория движка (коммит на момент написания: &lt;code&gt;4c6e319cddf262e8ccea7e51f223a63019290b49&lt;/code&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;rad:z3wYG4MbwEyhyoRa72h2mgdR66vCm&lt;/code&gt; - игровой набор (на базе &lt;code&gt;btih:F80B76DC92368FCD163E1AAFA97181DA97CBC9F5&lt;/code&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
На его примере, можно легко создать собственную сборку для любой платформы:
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/_export/code/yggdrasil:games:notblood?codeblock=7&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_yml&quot;&gt;ps.clipmove.NotBlood.yml&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;app-id: ps.clipmove.NotBlood
runtime: org.freedesktop.Platform
runtime-version: &amp;amp;runtime-version &amp;#039;24.08&amp;#039;
sdk: org.freedesktop.Sdk
command: run.sh
separate-locales: false
sdk-extensions:
  - org.freedesktop.Sdk.Compat.i386
  - org.freedesktop.Sdk.Extension.toolchain-i386

finish-args:
  - --allow=devel
  - --allow=multiarch
  - --device=all
  - --persist=.config
  - --share=ipc
  - --share=network
  - --socket=pulseaudio
  - --socket=wayland
  - --socket=x11

add-extensions:
  org.freedesktop.Platform.Compat.i386:
    directory: lib/i386-linux-gnu
    version: *runtime-version

  org.freedesktop.Platform.Compat.i386.Debug:
    directory: lib/debug/lib/i386-linux-gnu
    version: *runtime-version
    no-autodownload: true

x-compat-i386-opts: &amp;amp;compat-i386-opts
  prepend-pkg-config-path: /app/lib32/pkgconfig:/usr/lib/i386-linux-gnu/pkgconfig
  ldflags: -L/app/lib32
  prepend-path: /usr/lib/sdk/toolchain-i386/bin
  env:
    CC: i686-unknown-linux-gnu-gcc
    CXX: i686-unknown-linux-gnu-g++
    CFLAGS: &amp;quot;-O2 -g&amp;quot;
    CXXFLAGS: &amp;quot;-O2 -g&amp;quot;
  libdir: /app/lib32
  no-debuginfo: true

modules:
  - name: bundle-setup
    buildsystem: simple
    build-commands:
      - |
        mkdir -p /app/bin
        mkdir -p /app/data
        mkdir -p /app/share/applications
        mkdir -p /app/share/icons/hicolor/16x16/apps
        mkdir -p /app/share/icons/hicolor/32x32/apps
        mkdir -p /app/share/icons/hicolor/48x48/apps
        mkdir -p /app/share/icons/hicolor/64x64/apps
        mkdir -p /app/share/icons/hicolor/128x128/apps
        mkdir -p /app/share/icons/hicolor/192x192/apps
        mkdir -p /app/share/icons/hicolor/256x256/apps
        install -m 0644 ./ps.clipmove.NotBlood.desktop /app/share/applications
        install -m 0755 ./run.sh /app/bin

    cleanup:
      - ./.git
      - ./.gitignore
      - ./*.desktop
      - ./*.md
      - ./*.sh
      - ./*.yml
    sources:
      - type: dir
        path: ./
  - name: asset
    buildsystem: simple
    build-commands:
      - |
        install -m 0644 ./*.AR_ /app/data
        install -m 0644 ./*.ART /app/data
        install -m 0644 ./*.DAT /app/data
        install -m 0644 ./*.DEM /app/data
        install -m 0644 ./*.INI /app/data
        install -m 0644 ./*.MAP /app/data
        install -m 0644 ./*.RFF /app/data
        install -m 0644 ./*.SMK /app/data
        install -m 0644 ./*.WAV /app/data
        install -m 0644 ./logo/notblood/16.png /app/share/icons/hicolor/16x16/apps/ps.clipmove.NotBlood.png
        install -m 0644 ./logo/notblood/32.png /app/share/icons/hicolor/32x32/apps/ps.clipmove.NotBlood.png
        install -m 0644 ./logo/notblood/48.png /app/share/icons/hicolor/48x48/apps/ps.clipmove.NotBlood.png
        install -m 0644 ./logo/notblood/64.png /app/share/icons/hicolor/64x64/apps/ps.clipmove.NotBlood.png
        install -m 0644 ./logo/notblood/128.png /app/share/icons/hicolor/128x128/apps/ps.clipmove.NotBlood.png
        install -m 0644 ./logo/notblood/192.png /app/share/icons/hicolor/192x192/apps/ps.clipmove.NotBlood.png
        install -m 0644 ./logo/notblood/256.png /app/share/icons/hicolor/256x256/apps/ps.clipmove.NotBlood.png
    cleanup:
      - ./*.AR_
      - ./*.ART
      - ./*.DAT
      - ./*.DEM
      - ./*.INI
      - ./*.MAP
      - ./*.RFF
      - ./*.SMK
      - ./*.WAV
      - ./.git
      - ./.gitignore
      - ./.ico
      - ./*.md
      - ./logo
    sources:
      - type: git
        url: rad://z3wYG4MbwEyhyoRa72h2mgdR66vCm
        branch: master
  - name: engine
    buildsystem: simple
    build-options: *compat-i386-opts
    build-commands:
      - |
        sed -i &amp;#039;s/-D_FORTIFY_SOURCE=[0-9]//g&amp;#039; Common.mak
        make HAVE_GTK2=0
        install -m 0755 ./notblood /app/bin
    cleanup:
      - ./_clang-format
      - ./.appveyor.yml
      - ./.git
      - ./.github
      - ./.gitignore
      - ./.vscode
      - ./*.log
      - ./*.mak
      - ./*.md
      - ./*.pk3
      - ./GNUmakefile
      - ./obj
      - ./package
      - ./platform
      - ./source
    sources:
      - type: git
        url: rad://z2QnERwRUVeEEG9dDZVNFdzRDawYt
        branch: master&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; в манифесте можно указать альтернативные источники данных (rad:) или использовать для клонирования классический Веб-прокси git, например &lt;a href=&quot;https://app.radicle.xyz/nodes/iris.radicle.xyz/rad%3Az4PJFeN7hLR94wVzFuKXzM5HCDmez&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://app.radicle.xyz/nodes/iris.radicle.xyz/rad%3Az4PJFeN7hLR94wVzFuKXzM5HCDmez&quot; rel=&quot;ugc nofollow noopener&quot;&gt; iris&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Для сборки Flatpak, потребуются следующие зависимости:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo dnf install flatpak flatpak-builder&lt;/pre&gt;

&lt;p&gt;
Пример сборки с установкой в простарстве –user:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;flatpak-builder --force-clean build \
                --install-deps-from=flathub \
                --install \
                --repo=repo \
                --user \
                ps.clipmove.NotBlood.yml&lt;/pre&gt;

&lt;p&gt;
Для создания файла .flatpak:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;flatpak build-bundle repo NotBlood.flatpak ps.clipmove.NotBlood&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; см. файл NotBlood.flatpak (~28 Мб)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
В отличии от системной версии, файлы игрового профиля будут доступны по адресу:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;~/.var/app/ps.clipmove.NotBlood&lt;/pre&gt;

&lt;p&gt;
В случае ошибки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Can&amp;#039;t find 32-bit runtime extension. Try running &amp;#039;flatpak install org.freedesktop.Platform.Compat.i386//25.08&amp;#039;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;flatpak install --user flathub org.freedesktop.Platform.Compat.i386&lt;/pre&gt;

&lt;p&gt;
Для запуска сетевой игры в CLI:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;flatpak run ps.clipmove.NotBlood -client 200:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx -port 23513&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; в данной редакции поддерживаются дополнительные аргумены DEBUG (слева) и опции запуска (справа)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Flatpak&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;flatpak&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2680-9339&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;игровые_сервера&quot;&gt;Игровые сервера&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; [201:b8dc:421d:4b4d:add6:af78:f9d6:f18c]:23513&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; [201:f044:ca34:9cc9:2946:ad06:6f2d:5c4e]:23513&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0433\u0440\u043e\u0432\u044b\u0435_\u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:15,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;9340-9485&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;ссылки&quot;&gt;Ссылки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=NaPQ5WNNSuU&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://www.youtube.com/watch?v=NaPQ5WNNSuU&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Видео с примером установки в Windows &lt;/a&gt; (&lt;a href=&quot;http://[201:1592:3bff:105:b35f:c25b:4d3:c056]/uploads/86/f7/86f7c64eb54f7dc6839da0ff8232232649fe7533.webm&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://[201:1592:3bff:105:b35f:c25b:4d3:c056]/uploads/86/f7/86f7c64eb54f7dc6839da0ff8232232649fe7533.webm&quot; rel=&quot;ugc nofollow noopener&quot;&gt; ygg &lt;/a&gt;) &lt;br/&gt;

&lt;a href=&quot;http://[200:8622:7a28:83ed:64b5:9254:8804:daa3]/g/thread/26.html#81&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://[200:8622:7a28:83ed:64b5:9254:8804:daa3]/g/thread/26.html#81&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Тема на OctoChan &lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]/d/182-zbirka-notblood-z-pidkliucenniam-do-serveriv-ipv6&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]/d/182-zbirka-notblood-z-pidkliucenniam-do-serveriv-ipv6&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Тема на UANA &lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:15,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;9486-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 06 Mar 2026 01:38:00 +0000</pubDate>
        </item>
    </channel>
</rss>
