# Збірка NotBlood з підключенням до серверів IPv6

Вперше наткнувся на ініціативу запуску цієї гри в Geminispace і оскільки гайдів по типу Халфи:
=> http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:games:half_life_on_xash3d
на цю тему я не побачив (або не там шукав) вирішив зробити такий, тим паче що сервер там - Yggdrasil.

По суті, для цієї гри створено реверс-рушій NBlood:
=> https://github.com/NBlood/NBlood

Але я буду користуватись модом NotBlood, який є його форком з ~2k комітів поверху, на момент допису:
=> https://github.com/clipmove/NotBlood

## Збірка

В мережі є спільна для усіх рушіїв цього типу документація:
=> https://wiki.eduke32.com/wiki/Building_EDuke32_on_Linux

З неї згодяться такі залежності:

``` bash
sudo dnf install g++ nasm mesa-libGL-devel SDL2-devel alsa-lib-devel libvpx-devel gtk2-devel flac flac-devel
```
* `gtk2-devel` потрібен, якщо збірка з `HAVE_GTK2=1` (стандартно) - цей компонент використовується в лаунчері GUI; згодом я його вимкнув, тому даний пакет можна пропустити

На сусідньому ресурсі, є тема:
=> http://[200:8622:7a28:83ed:64b5:9254:8804:daa3]/g/thread/26.html#81

З неї, нам знадобиться наступний патч для підтримки адрес IPv6 (UPD. вже не потрібен):

> Кароче, анон:
> В /NotBlood/source/blood/src/osdcmd.cpp
>
> Ищешь
>
> { "net_address","sets network address used for multiplayer", (void *)zNetAddressBuffer, CVAR_STRING|CVAR_FUNCPTR, 0, 16 },
>
>
> Правишь 16 на 128
>
> { "net_address","sets network address used for multiplayer", (void *)zNetAddressBuffer, CVAR_STRING|CVAR_FUNCPTR, 0, 128 },
>
> В /NotBlood/source/blood/src/network.cpp
>
> в двух местах правишь char ipaddr[32]; на char ipaddr[128];
>
> Компиляешь.
>
> После этого NotBlood воспринимает прописанный в ~/.config/notblood/notblood_cvars.cfg длинный адрес и способен к нему коннектиться, проверено.

На Fedora 43, мені довелось тільки вимкнути HAVE_GTK2 (1 by default)

``` bash
make HAVE_GTK2=0
```
* інакше буде помилка типу `GLib-GObject-CRITICAL .. cannot register existing type 'GdkDisplayManager'`

## Ігрові набори

Тут є пара не офіційних референсів:

=> https://rutracker.org/forum/viewtopic.php?t=5498167
=> https://archive.org/details/blood-gt-interactive-software-1997disc-1

Але я шукатиму для себе білу (або найбільш біляву) версію.

UPD. видача з гугла, сумісність поки не перевірено:

=> https://store.steampowered.com/app/3884520/Blood_Refreshed_Supply/
=> https://www.gog.com/en/game/blood_refreshed_supply
=> https://store.epicgames.com/en-US/p/blood-refreshed-supply-f8bb7c

В залежності від способу отримання, файли вказані в README (github.com/clipmove/NotBlood#installing) копіюються до теки з бінарником `notblood`:

* BLOOD.INI
* BLOOD.RFF
* BLOOD000.DEM, ..., BLOOD003.DEM (optional)
* CP01.MAP, ..., CP09.MAP (optional, Cryptic Passage)
* CPART07.AR_ (optional, Cryptic Passage)
* CPART15.AR_ (optional, Cryptic Passage)
* CPBB01.MAP, ..., CPBB04.MAP (optional, Cryptic Passage)
* CPSL.MAP (optional, Cryptic Passage)
* CRYPTIC.INI (optional, Cryptic Passage)
* CRYPTIC.SMK (optional, Cryptic Passage)
* CRYPTIC.WAV (optional, Cryptic Passage)
* GUI.RFF
* SOUNDS.RFF
* SURFACE.DAT
* TILES000.ART, ..., TILES017.ART
* VOXEL.DAT

Якщо це `.exe`, то розпакувати цей формат можна утилітою `innoextract`:

``` bash
sudo dnf install innoextract
innoextract /path/to/game.exe
```

Ігрові набори як правило розпаковуються до теки `app`, їх можна додатково перевірити антивірусом:

``` bash
clamscan -r app
```

Після чого шукаємо потрібні залежності, наприклад командою:

``` bash
find app -name "VOXEL.DAT"
```
* і т.д. по списку

## Запуск

Гру можна запускати з користувацькими аргументами:
=> https://wiki.eduke32.com/wiki/Command_line_options

Наприклад, може стати в нагоді вибірковий шлях до ігрових наборів:

``` bash
notblood -game_dir=/path/to/data
```

Оскільки адреси Yggdrasil - занадто довгі для ручного вводу, спочатку я вказав аліас в `/etc/hosts`, але це не спрацювало. Згодом, анон підказав рішення для правильного конекту в мультиплеєр 0200::/7

``` bash
notblood -client 201:b8dc:421d:4b4d:add6:af78:f9d6:f18c -port 23513
```

В моїй редакції Flatpak (за посиланням нижче) запуск відбувається так:

``` bash
flatpak run ps.clipmove.NotBlood -client 201:b8dc:421d:4b4d:add6:af78:f9d6:f18c -port 23513
```
* в ній можна вказати з права інші, потрібні вам, аргументи

Всі доступні команди, можна переглянути командою:

``` bash
notblood -help
```

## Сервери

* [201:b8dc:421d:4b4d:add6:af78:f9d6:f18c]:23513
* [201:f044:ca34:9cc9:2946:ad06:6f2d:5c4e]:23513

## Radicle/Git

* rad:z2QnERwRUVeEEG9dDZVNFdzRDawYt - знімок репозиторію рушія
* rad:z3wYG4MbwEyhyoRa72h2mgdR66vCm - мінімальний ігровий набір (для збірки Flatpak)
* rad:z4PJFeN7hLR94wVzFuKXzM5HCDmez - маніфест збірки Flatpak "все в одному"

## Посилання

=> notblood-multiplayer-with-ipv6-support/gameplay.webp Фрагмент геймплею (скріншот)
=> https://www.youtube.com/watch?v=NaPQ5WNNSuU HOW TO PLAY BLOOD MULTIPLAYER IN 2025!

### Дивіться також

=> gemini://bbs.geminispace.org/u/baran/38701 Тред на BBS