Технофанчик: поднимаем Quake III сервер на Raspberry.

Всем привет, друзья!

Вчера был буржуйский праздник Хэллоуин, а с ним и пятница.
Душа требовала какого-то намека на праздник, пока тело решало рабочие задачи, как, вдруг, глаз зацепился за висящую возле стены Raspberry Pi, про которую я писал вот в этом посте.

Внезапная догадка «а не зарубиться ли нам в контру?» вспышкой озарила мозг, но уже на второй минуте Google'ения на эту тему вырисовался ответ — нет. Counter-Strike сильно не Open-Source и пересобрать под нужную архитектуру его пока не выйдет.

«А в кваку?». А вот здесь, оказывается, раздолье.
Итак, на старте — Raspberry Pi первой версии, и несколько человек с Макбуками (естественно, у всех Mac OS).
Через пару часов уже началось вечернее улюлюканье под гром выстрелов.

Quake III на Macbook, Quake III Server на Raspberry, и Железный Человек

Кому интересно, как это сделать, го под кат.

Перейдем сразу к делу.
Будем считать, что машина на Raspberry у вас уже есть.

Что нужно сделать:
1. Собрать Quake III сервер под нужную архитектуру (ARM).
2. Подтянуть необходимые ресурсы для сервера.
3. Сконфигурировать и запустить сервер.
4. Найти и/или собрать клиент Quake III под Mac OS, и запустить его.
5. Доминировать.

Время пошло.

Собираем Quake III на Raspberry
Здесь трудностей почти нет. Заходим на Raspberry и вперёд.

1. Подтягиваем обновления для менеджера пакетов.
[user@pi.local]$sudo apt-get update
[user@pi.local]$sudo apt-get dist-upgrade

2. Подтягиваем всё, что нужно для сборки Quake и его запуска.
[user@pi.local]$sudo apt-get install git gcc build-essential libsdl1.2-dev screen vim

3. Выкачиваем репозиторий с квакой в папку ~/src.
[user@pi.local]$mkdir ~/src
[user@pi.local]$cd ~/src
[user@pi.local]$git clone https://github.com/raspberrypi/quake3.git
[user@pi.local]$cd quake3

4. Немного редактируем скрипт сборки.
[user@pi.local]$vim build.sh

Кто не помнит — напомню, в vim'е для редактирования нужно нажать `i`, чтобы выйти с сохранением, нужно ввести `:wq` и нажать Enter. Без сохранения `:q!`. Есть и другие комбинации, но к этим я привык.

Итак, в строчке 8 пишем:
ARM_LIBS=/opt/vc/lib

В строчке 16:
INCLUDES="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads"

Строчку 19 закоментим, то есть сделаем вот так:
# CROSS_COMPILE=bcm2708-

5. Собираем кваку.
[user@pi.local]$./build.sh

Сборка идет где-то час с небольшим по моим ощущениям (на первой пишечке).
После сборки у вас появится папка под названием release-linux-arm с артефактами сборки в папке build.

6. Сделаем красиво, и перенесем собранный сервер в домашнюю папочку:
[user@pi.local]$mv build/release-linux-arm ~/quake3-server
[user@pi.local]$cd ~/quake3-server

Вообще, мы собрали не только сервер, но вроде бы и клиент, но клиент я не запускал, поэтому ничего про него сказать не могу.

6'. Далее нам исходники не пригодятся, и их можно грохнуть.
[user@pi.local]$rm -rf ~/src/quake3

Подтягиваем нужные ресурсы
Мы забабахали движок для игры, но ресурсов для неё нет, потому что они вроде как до сих пор охраняются копирайтом. Если у вас завалялся лицензионный диск с квакой, то надо скопировать ресурсы оттуда, если нет, то следующие шаги вы делаете на свой страх и риск =)

Я недолго гуглил, и нашел живую ссылку на архив с игрой, собранной под Power PC. В принципе, так как нам оттуда надо только ресурсы, то норм, создаем папку и качаем:

7. Выкачиваем игру с ресурсами.
[user@pi.local]$mkdir ~/quake3-powerpc
[user@pi.local]$cd ~/quake3-powerpc
[user@pi.local]$ wget http://macintoshgarden.org/sites/macintoshgarden.org/files/games/Quake_3.zip

8. Распаковываем архив:
[user@pi.local]$unzip Quake_3.zip -d quake_3

9. Шагаем в папку с ресурсами и перекидываем их к нашему серверу (всего 9 файлов от 0 до 8).
[user@pi.local]$cd quake_3/Quake\ 3/baseq3
[user@pi.local]$mv pak*.pk3 ~/quake3-server/baseq3/

10. Все что нужно мы взяли, поэтому прибираемся за собой.
[user@pi.local]$cd ~
[user@pi.local]$rm -rf quake3-powerpc

Конфигуряем сервер
Для конфигурации сервера нужно создать, как ни парадоксально, конфигурационный файл сервера)

11. Идем и создаём.
[user@pi.local]$cd ~quake3-server/baseq3
[user@pi.local]$vim server.cfg

Файл выглядит вот так:
seta sv_hostname "2GIS v4iOS Quake III Server."
seta sv_maxclients 16
seta g_motd "nPuBeTuK!"
seta g_quadfactor 3
seta g_gametype 0
seta timelimit 15
seta fraglimit 25
seta g_weaponrespawn 3
seta g_inactivity 3000
seta g_forcerespawn 0
seta rconpassword "password"
set d1 "map q3dm6 ; set nextmap vstr d2"
set d2 "map q3dm17 ; set nextmap vstr d3"
set d3 "map q3dm1 ; set nextmap vstr d1"
vstr d1

С этим файлом уже всё будет работать, но вообще о конфигурации сервера можно почитать вот здесь и ещё здесь.

12. Стартуем сервак!
[user@pi.local]$cd ~/quake3-server
[user@pi.local]$sudo ./ioq3ded.arm +set dedicated 2 +exec server.cfg

Мутим клиента для Mac OS (или для другой системы)
Скачать клиента можно вот здесь: http://ioquake3.org/get-it/
Конкретно для Mac OS пруфлинк.

13. Когда скачается, идем в Downloads, подключаем `ioquake3 1.36.dmg`, копируем оттуда папку `ioquake3`, например, на рабочий стол. Там есть все, кроме одного нужного файла с ресурсами. Но этот файл уже есть на нашем сервере.

Открываем консоль на локальной машине.
$cd ~/Desktop/ioquake/baseq3
$scp user@pi.local:~/quake3-server/baseq3/pak0.pk3 ./pak0.pk3

Вводим пароль для пользователя пишечки, и смотрим на процесс скачивания. Думаю, мне не нужно упоминать, что вместо `user` — вы должны ввести реальное имя пользователя, в вместо `pi` — реальное имя хоста.

Доминируем
Сервер у нас крутится, в игре все необходимые ресурсы есть.
Запускаем `ioquake3-1.36` -> Accept -> Multiplayer -> Specify [сервер: pi.local — здесь имя вашего сервера, порт по умолчанию 27960] -> Fight

Это всё.
Всем спасибо.
Спокойной плазмы.

Комментарии (1)

RSS свернуть / развернуть
Вчера был буржуйский праздник Хэллоуин
Так сегодня же. Начинай сначала)

А за статью +
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.