From: Dr.Pixel <dkcs@void.ru.>
Date: Mon, 6 Dec 2005 14:31:37 +0000 (UTC)
Subject: Игровые сервера под Linux.
Вступление.
Многие люди до сих пор считают, что Linux & Games ? вещи не совместимые.
Сейчас попробую рассеять миф, от том, что MS Windows ? основная игровая
платформа. В этой статье я расскажу о практике установки игровых
серверов на Linux. Сразу следует оговоритсья, что игровой сервер и игра ?
это две разные вещи. Сервер позволяет игрокам взаимодействовать между
собой, отвечает за поддержку протокола связи между игроками aka
клиентами.
Во что играют.
Думаю заядлым игрокам не стоит объяснять во что сейчас играют больше
всего и какие игровые сервера самые популярные у сетевых игроков. Но
если Вы не играете в игры, я попробую вкраце перечислить самые
популярные на сегодняшний день игровые сервера: Counter-Strike, Quake,
Diablo, Battlefield, Wolfenstein, etc... Если установить сервера этих
игр в локальной сети или Internet, то ваш сервер не останется
незамеченным :)!
Железо.
Конфигурация железа полностью зависит от нагрузки на сервер. Если на
Вашем сервере online будет играть не более 10 человек, то я уверен, что
Вам хватит компютера со следующей конфигурацией железа: процессор
300-500 Мгц, память 128 Мб. Ели же Вы планируете поднимать средний
игровой сервер (online ? до 1000), то я бы посоветовал иметь процессор с
тактовой частотой не менее 1000 Мгц и оперативную память >= 512 Мб. Ну
уж если Вы захотели поднять игровой сервер с "online: >1000", то обычным
"настольным" железом не обойтись.
P.S. Чем мощьнее железо и чем "шире" канал связи с Internet, то больше
игроков "потянется" к Вам играть. Игроки любят быстрые сервера...
Приготовления.
Перед установкой сервера игры на компютер необходимо сделать некоторые
приготовления ? создать каталог, где будут храниться сервера всх Ваших
игр (e.g.: /home/gamez). Также не будет лишним создать пользователей,
под которыми Вы будете запускать сервера. Отдельного пользователя для
каждой игры следует создавать для обеспечения безопасности сервера,
тоесть если Хакер (или не Хакер) проник в систему через "дыру" в игровом
сервере у него будут права того пользователя, под которым запущен сервер
игры, можно представить что будет с сервером если игра будет запущена
под рутом :(. Проникновение ? не единственная причина, по которой
следует создавать отдельных пользователей.
В некоторых случаях в результате сбоев ситемы могут повредиться очень
важные системные конфигурации, разделение прав пользователей не даст
повредить конфигурации в случае сбоя игрового сервера.
Установка.
Counter Strike:
На мой взгляд самая популярная сетевая игра. Напомню, Counter Strike
(csds) не является отдельным игровым сервером, а является ?надстройкой?
над Half-Life (hlds). Архив с hlds и csds можно взять на fileplanet.com
или 3dgamers.com (все примерно весит 220 Мб).
Сначала следует ставить основу ? hlds. Это делается следующим образом:
1. Копируем скаченый дистрибутив hlds в папку, где будут храниться файлы
сервера игра (e.g.: /home/gamez/hl).
2. Распаковываем архив: tar -xzvf hlds.tar.gz (имя архива не обязательно
hlds :)). В результате должна появиться папка hlds_l.
3. Распаковавыем архив csds в каталог hlds_l. В результате появится
папка cstrike в папке hlds_l.
Итак, основные приготовления сделаны!
Немного о полезном:
/hlds_l/cstrike/server.cfg - главный файл конфигураций сервера.
/hlds_l/cstrike/motd.txt - сообщение, выводимое на экран подключившимся к серверу.
/hlds_l/cstrike/mapcycle.txt - конфигурация для карт.
/hlds_l/cstarike/maps/ - каталог с картами.
Теперь для запуска игрового сервера Counter Strike необходимо создать
скрипт со следующим содержанием, для этого воспользуемся программой cat:
Последняя строка скрипта говорит о том, что играть будем в Counter
Strike (-game cstrike) на Вашем сервере (+ip ТВОЙ_IP) с максимальным
колическтвом игроков ? 8 (+maxplayers 8) на карте de_aztec (+map
de_aztec).
Для корректного исполнения скрипта необходимо установить права на
выполнение (chmod +x cstrike).
Нужно не забыть, что все выше проделанные действия необходимо
проделывать из под пользователя, созданного для этой игры. Осталось
запустить сервер (./cstrike). Если запуск прошел без ошибок, то я могу
Вас поздравить ? Вы запустили свой первый игровой сервер (или не первый :)).
Quake3 Arena:
На мой взгяд хороший игровой сервер не может не иметь в своем арсенале
установленный сервер Q3. Найти дистрибутив сервера Q3 просто. В сети
полно мест, где его можно скачать (eg: 3dgamers.com).
Сервер Q3 поставляется не в виде исходных кодов, а в виде бинарника,
поэтому проблем с установкой возникнуть не должно. Перед началом
установки необходимо создать директорию, где будет лежать сервер и
вложенную директорию baseq3 (команда: makdir -p /home/gamez/q3/baseq3).
Далее необходимо распаковать скаченный дистрибутив с сервером в папку,
которую мы создали (команда: tar -xzvf q3.tar.gz). После чего надо с
диска с этой игрой переместить все файлы с расширением *.pk3 в корень
сервера игры (/home/gamez/q3). После этого необходимо запустить файл
сервера (команда: sh filename). После запуска в директории с севером
игры появятся некоторые файлы. Главный "конфиг" игры будет лежать в
папке /baseq3.
Основные параметры в "конфиге":
set g_gametype 0 ? устанавливает доступ к серверу (0 ? доступен всем).
set fraglimit 0 ? количество фрагов для одной игры.
set timelimit 0 ? время игры в минутах.
set sv_maxclients 0 ? максимально количество игроков.
set rconpassword "passwd" ? админский пароль на rcon.
set bot_enable 1 ? боты (1 ? вкл. 0 ? выкл.).
set "Administarator" "admin_name" ? имя администратора сервера.
set "Email" "admin@server.gov"- адрес e-mail администратора.
set "URL" "http://server.gov" ? адрес сайта.
Etc... :)
Если "конфиги" подправилены, то самое время запускать сервер, для этого
можно воспользоваться командой:
./q3ded +set dedicated 1 +set +exec config.cfg
Постоянно при запуске сервера не удобно вбивать длинную команду, поэтому
для упрощения жизни админу можно создать скрипт запуска сервера игры Q3.
Как и в случае с Counter Strike воспользуемся программой cat:
После написания скрипта установим права: chmod +x q3. После всех выше
перечисленных приготовлений можно запускать сервер:
./q3
Если ошибок не возникло, то я Вас поздравляю ? сервер запущен. А если
всетаки ошибки имеют место, то я бы посоветовал еще разок открыть
конфиги и просмотреть все. Чаще всего ошибки при запуске сервера кроются
именно в ошибках конфига.
Совет.
Как Вы заметили сервер работает до тех пор, пока открыт терминал, из
которого он запущен и при его закрытии сервер прекращяет свою работу.
Это связано с тем, что терминал убивает все процессы, запущенные из него
при его закрытии. Это не удобно. Один из способов исправления этой
ситуации ? это добавление амперсанда (&) в конец команды запуска
сервера. Таким образом процесс переходит в фоновый режим. В этом тоже
есть один огромный минус ? теряешь доступ к консоли управления сервером.
Но есть выход и из этой ситуации ? использование экранного менеджера с
эмуляцией терминала. Один из таких экранных менеджеров ? это screen. Он
позволяет сохранять процессы, запущенные в нем. Это очень удобно при
администрировании сервера удаленно. Скачать screen можно с
http://gnu.org. Там же есть и документация к нему.
Пользоваться screen'ом довольно просто. Вот пример запуска сервера q3 в screen:
screen -d -m -A -S Quake q3
-d, -m - запуск сессии в detatch режиме (для стартовых скриптов).
-A - подгоняет размер окна под размер текущего терминала.
-S Quake - устанавливает имя для данной сессии.
q3 - собственно команда (в нашем случае скрипт).
Команда screen -r Quake - восстанавливает сессию Quake в screen.
Команда screen -list - покажет все сессии, запущенные под screen.
Заключение.
Основные игры поставлены. Думаю с установкой и настройкой других Вы
сможешете разобратсья :). Еще могу посоветовать "покопать" сеть в
поисках админских модов для серверов игр, их слава Богу в сети полно.
Если возникнут вопросы то я с радостью отвечу Вам на них (мой e-mail:
dkcs@void.ru).
Удачи в нелегком труде Системного Администратора!...
~~~~~~~~~~~~~~~~~~~~~~~~
author - Dr.Pixel
e-mail - <dkcs@void.ru.>
web - http://dkcs.void.ru