Запускаем сервер Half-Life на Linux c хедкрабами и ботами!

Привет вам, красноглазые братья и сестры! 

В этой "маленькой" статье я расскажу как поднять свой сервер легендарной игры Half-Life на Linux. Для тех, кто в танке:

Запускаем сервер Half-Life на Linux c хедкрабами и ботами! Linux, Half-life, Монтировка, Инструкция, Valve, Длиннопост

Если верить Steam :

Боевик, приключения и удостоенная наград технология создания потрясающе реалистичного мира, в котором игрок должен думать, чтобы выживать — всё это обладатель звания «Игра года» от более чем 50 изданий, дебютная игра от Valve — Half-Life.

Ладно, закончим с прелюдией, приступим к делу.


-----------------------------------------------

Глава 0. Подготовительная.

-----------------------------------------------

По умолчанию предполагается, что:

- каталог с играми - /mnt/video/games

- компьюер соответ. минимальным требованиям игры. Для клиента это (согласно Steam):

> OS: Linux

> Процессор: Dual-core from Intel or AMD at 2.8 GHz

> Память: 1GB

> Видеокарта: nVidia GeForce 8600/9600GT, ATI/AMD Radeaon HD2600/3600

> Граф. драйвер: nVidia 310, AMD 12.11, OpenGL 2.1

> Место на ЖД: 4GB Hard Drive Space

> Звуковая карта: OpenAL Compatible Sound Card

Имхо, требования завышены.

- широкополосный доступ в интернет


Тестовая система выглядит так:

OS: ArchLinux x86_64 c ядром 4.5.4-1-ARCH

Процессор: Intel Pentium 4 3.00GHz

Память: 3.2 Gb

Видеокарта: Ati Radeon HD 4670 c откраытым драйвером версии 1.7.7.0

Место на ЖД: подсчитаем в конце статьи.


--------------------------------------------------------------

Глава 1. Прибытие в Чёрную Консоль.

--------------------------------------------------------------

Для начала создадим папку, в которую будем устанавливать сервер. Напоминаю, у меня папка с играми /mnt/video/games/, у вас своя.

mkdir /mnt/video/games/hlds && cd /mnt/video/games/hlds

Теперь обновим пакеты и установим необходимые библиотеки для 64-битных ОС.

Для debian-производных систем (танкистам - Ubuntu и Mint относятся к ним): 

sudo apt-get update

sudo apt-get install lib32gcc1

Для ArchLinux (предварительно раскомментируйте multilib репозиторий. Подробнее читайте в wiki ArchLinux)

pacman -Syy lib32-gcc-libs


-------------------------------------------------------------------------------------------

Глава 2. Аномальные материалы или косяки SteamCMD

--------------------------------------------------------------------------------------------

Установим SteamCMD. Чтобы подчистить потом мусор, давайте создадим отдельную папку.

mkdir steamcmd && cd steamcmd

Начнем магию. Качаем, распаковываем. Внимание! Ссылку пикабу выводит в сокращенном виде, поэтому копируйте внимательно (правой кнопкой мыши -> Копировать ссылку)

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_li...

tar -xf steamcmd_linux.tar.gz

Запускаем и ждем приглашения Steam:

./steamcmd.sh

Запускаем сервер Half-Life на Linux c хедкрабами и ботами! Linux, Half-life, Монтировка, Инструкция, Valve, Длиннопост

Теперь надо ввести логин. Можно ввести свой steam-аккаунт, но оно нам надо? Анонимно!

login anonymous

Укажем каталог для установки сервера. В данном случае выбран родительский каталог

force_install_dir ../

Запускаем сервер Half-Life на Linux c хедкрабами и ботами! Linux, Half-life, Монтировка, Инструкция, Valve, Длиннопост

И самое интересное. Непосредственно, скачавание и установка сервера. Интересно тут то, что закачка постоянно обрывается, независисо от вашего интернет-подключения. Выводится ошибка:

Error! App '90' state is 0x402 after update job.

В этом случае повторяйте команду заново, пока она не докачает до конца и не скажет, что все OK. Например, когда я писал эту статью, команду пришлось запустить 50 раз. 50 РАЗ, КАРЛ!!!

app_update 90 -beta beta validate

Все ОК будет, когда появится надпись:

Success! App '90' fully installed.

Сервер установлен. Выходим из SteamCMD

quit

----------------------------------------------------------------

Глава 3. Непредвиденные последствия

----------------------------------------------------------------

Уже сейчас вы можете запустить сервер и, если у вас есть Steam-версия Half-life, подключиться и играть. Но мы ведь старые пираты. Йо-хо-хо, и бутылка рома! Просто так мы подключится не сможем, получим ошибку.

Нам нужен dproto.

Double Protocol (dproto) - плагин для Metamod'а, решающий проблему мультипротокола и эмулирующий SteamID для NoSteam-клиентов.

Читаем внимательно.

плагин для Metamod'а,

Ага, значит нам еще нужен Metamod. Это некая прослойка между плагинами и игрой.

Я решил собрать metamod, dproto и ботов в один архив и залить его на облако, чтобы не мучались со скачиванием и с версиями. Мы в папке /mnt/video/games/hlds/steamcmd/, если вы помните. Перейдем на папку выше.

cd ..

И удалим папку steamcmd. Она нам больше не нужна.

rm -r steamcmd

Качаем архив и распаковываем. Сокращенные ссылки пикабу не пропускает, а длинную обрезает, поэтому скачайте папку с мыльного облака и положите в папку с сервером. У меня это /mnt/video/games/hlds/. Распакуем

tar -xf valve.tar.xz

Теперь у нас есть папка addons и конфиг для dproto. Переместим её в нужное место. А ненужный уже архив удалим.

mv addons valve/

mv dproto.cfg valve/

rm valve.tar.xz

Отредактируем файл liblist.gam в папке valve.

nano valve/liblist.gam

Заменяем строку

gamedll_linux "dlls/hl.so"

на эту

для 64-битных:

gamedll_linux "addons/metamod/dlls/metamod_amd64.so"

для 32-битных:

gamedll_linux "addons/metamod/dlls/metamod_i386.so"

Как это сделать, думаю, пояснять не надо.

Запускаем сервер Half-Life на Linux c хедкрабами и ботами! Linux, Half-life, Монтировка, Инструкция, Valve, Длиннопост

-------------------------------------------------

Глава 4. Серверный комплект

-------------------------------------------------


Теперь у нас есть сервер и мы даже можем его запустить.

./hlds_run -game valve +maxplayers 8 +map crossfire +exec server.cfg

здесь:

-game valve - запустить халфу;

+maxplayers 8 - количество игроков';

+map crossfire - карта;

+exec server.cfg - выполнить команды, прописанные в server.cfg. Это файл находится в каталоге valve и туда можно, например, прописать разделение на две команды "mp_teamplay 1" (без кавычек).

Ботов мало? Боты тупые? Нет проблем! Редактируем файл valve/addons/jk_botti/jk_botti.cfg

min_bots 4

max_bots 4

botskill 2

Тут все просто и понятно.

Казалось бы, можно уже закончить статью, но как же клиент?


---------------------------------------------------------------------------------

Глава 5. Мы встретили пиратскую версию Халфы.

---------------------------------------------------------------------------------

... и прошли мимо. Мы ведь не качаем пиратские игры, правда? Для интересующихся, первая ссылка по запросу "half-life linux" в гугле. Скачиваем, распаковываем, запускаем, играем. (Скачивание не показано)

mkdir /mnt/video/games/half-life && cd /mnt/video/games/half-life

В эту же папку кидаем архив с игрой.

tar -xf Half-Life.tar.gz

./hl.sh

Порубиться с ботами или с другими игроками? Не вопрос. Запусти в одной консоли сервер. В другой клиент. В клиенте нажми тильду "~" и введи команду на соединение:

connect 127.0.0.1

Вместо 127.0.0.1 можно набрать адрес какого-нибудь другоего сервера.

Ну теперь уж точно все? Ан нет.


------------------------------------------------------

Глава 6. Отводные псевдонимы.

------------------------------------------------------

Набирать такие команды долго, я считаю. Если вы согласны со мной, то предлагаю добавить в ~/.bashrc пару псевдонимов. Папки, разумеется, ставьте свои!

echo "alias starthlds='cd /mnt/video/games/hlds; ./hlds_run -game valve +maxplayers 4 +map crossfire +exec server.cfg'" >>~/.bashrc


echo "alias starthlclient='cd /mnt/video/games/half-life; ./hl.sh'" >>~/.bashrc

И перечитаем файл.

source ~/.bashrc

Что это дало? А то, что теперь для запуска сервера достаточно набрать starthlds, а для запуска клиента starthlclient.

Ну вот теперь все?! Достал уже!

Нет, еще штрих. Необязательный.


--------------------------------------------------------------------

Глава 7. Подача разделенных терминалов

--------------------------------------------------------------------

Мой основной эмулятор терминала terminator. Мне нравится, что можно вертикально разбить окно: слева запустить сервер, справа запустить клиент. Удобно? Удобно. Быстро? Нет. Надо исправлять. Для начала создадим отдельный шаблон для запуска игр. Не буду утомлять, просто приведу ссылку на свой файл ~/.config/terminator/config - тык.

Если копируете, заменяйте папки на свои! В файле записан layout с названием hlds. Запустив терминал с этим layout-ом, мы получим вертикальное разбиение окна c одновременным запуском сервера/клиента.

terminator -l hlds --new-tab

Опять много писать ... Лига лени негодует. А давайте прописшем псевдоним, как в шестой главе.

echo "alias hl='terminator -l ramahg --new-tab'" >>~/.bashrc

Снова перечитает файл.

source ~/.bashrc

И все, теперь для запуска игры (сервера и клиента) нужно набрать всего лишь:

hl

Команда запустит отдельный экземляр эмулятора терминала, разделит окно вертикально, слева запустит сервер, справа клиент... Правда вы этого уже не увидите. Почему? Красная монтировка не может ждать!


Спасибо за внимание.

Запускаем сервер Half-Life на Linux c хедкрабами и ботами! Linux, Half-life, Монтировка, Инструкция, Valve, Длиннопост

ps. ах да, чуть не забыл! В начале же я обещал привести объем занимаемое места на жд. Исправляемся.

сервер = 776,6 МиБ

клиент = 906,8 МиБ

Можно их, конечно соединить (мне так кажется), но пока

и так сойдет(с).

GNU/Linux

1K постов15.5K подписчиков

Добавить пост

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

3
Автор поста оценил этот комментарий

Выгдядит как план на окончание сессии, спасибо)

А вообще помню докручивал к HL ботов модели Parabot, которые на действиях игрока обучаются. Надо будет отыскать архивчик.

А ещё надо как-то пробросить псевдолокаль по интернету и зарубиться с друзьями как в старые добрые...

раскрыть ветку
10
Автор поста оценил этот комментарий

Этому место на Хабре однако же.

раскрыть ветку
2
Автор поста оценил этот комментарий

Было бы клево сделать такой же пост, только по серверу Counter-Strike.

раскрыть ветку
2
Автор поста оценил этот комментарий

Если кто сделает, отпишитесь. А то как-то лень это все делать, но задумка хороша.

раскрыть ветку
1
Автор поста оценил этот комментарий

также всё это можно установить через steam