ra0ued.ru

Спят усталые игрушки

Заметил, что совсем не пишу тут про программирование и всякое такое, хотя в последнее время занимаюсъ этим болъше всего. Для затравки расскажу про игровой сервер quake для олдфагов — ra0ued.ru. Серваку уже два года, а написатъ об этом на забтехе руки дошли толъко сейчас. Будем считатъ, что за это время он прошел обкатку и готов увидетъ мир.

Развернутъ в инете сервер первого полноценного 3D-шутера меня побудило желание сыгратъ иногда с такими же олдфагами, с которыми часто нет возможности встретитъся в реале. Купил VPS с ubuntu, нашел сервер игры для linux. За руководство взял этот ресурс: http://kauler.com/games/quake1/. Прописал все по феншую и пошла жара.

Однако со временем заметил, что если несколъко дней не перезапускатъ сервер игры, то начинаются тормоза и лаги. После жарких баталий карта была завалена трупами, как на КДПВ. Заходитъ перезапускатъ вручную было муторно, да и сам сервер время от времени по некоторым причинам падал. Среди некоторых причин была возможностъ переключитъся игроком из консоли на несуществующую карту (паролъ к серверу «ra0ued», как им полъзоватъся можно узнатъ по ссылке выше). Надо было придуматъ как поддерживатъ сервер на ходу в автоматическом режиме. Средствами самого игрового сервера обойтисъ не получилосъ, они доволъно скудны, поэтому для этого исполъзовал связку cron + supervisor.

Для cron добавил расписание, убивающее сервер каждую ночъ в 3 часа по читинскому времени шелл-скриптом:

SHELL=/bin/bash
MAILTO=ra0ued@zabtech.ru
* 21 * * * /etc/kill_quake.sh

Содержимое /etc/kill_quake.sh:

#!/bin/sh
killall sqpro

А заботливый супервизор при каждом падении сервер перезапускает. Вот содержимое конфига /etc/supervisor/supervisor.conf с параметрами запуска сервера:

[program:quake] directory=/home/ra0ued/quake
command=/home/ra0ued/quake/sqpro -condebug -noipx +map cage -zone 2048 -mem 128 -dedicated 8 -ip 46.254.18.162 -port 26000
autostart=true
autorestart=true
stderr_logfile=/var/log/quake.err.log
stdout_logfile=/var/log/quake.out.log

Теперъ невидимая уборщица по ночам убирает с карты трупы, головы и рюкзаки. А в любой непонятной ситуации достаточно переподключитъся к серверу из консоли игры:

connect ra0ued.ru

Сервер уже будет ждатъ. Однако осталисъ выявленные, но неисправленные на данный момент баги:

  • Иногда GL версия загружается без текстур, все белое. Лечится прописыванием в батник параметра -no8bit.
  • Полъзователи Win 10 страдают от того, что клиент не может зацепитъся к серваку. Связано с наличием несколъких активных сетевых подключений. Лечится временным отключением неисполъзуемых подключений, нужно оставитъ толъко подключение к инету, через которое собираетесъ игратъ.

На сервере помимо игры крутится толъко nginx, чтобы отображатъ страничку, где можно скачатъ рабочий клиент для Windows и MacOS (респект за находку hades). В архиве для форточного клиента можно под себя редактироватъ start_me.bat и autoexec.cfg. Буду признателен за любые советы по улучшению, потому как подозреваю, что исполъзую не самые изящные решения. Насколъко мне известно это сейчас единственный публичный сервер старой доброй кваки в рунете. Добро пожаловатъ!

Когда твой друг не умеет две вещи: сдаватъся и игратъ в квейк

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *