Легендарный арена-шутер Quake III: Arena возвращается. Культовая игра во многом определившая развитие жанра сетевых соревновательных баталий теперь доступна практически на любом устройстве в браузере. Команда DosZone Team со всей любовью и радостью представляет мультиплеерный web-порт игры, который порадует как фанатов классической игры, так и новых пользователей, объединяя тысячи людей по всему миру.
В 1991 году в разгар противостояния консольных гигантов Nintendo и Sega вышла игра под названием Bare Knuckle: Ikari no Tekken или Streets of Rage. Жанр игр beat 'em up был достаточно популярен в те годы и представлен он был такими играми как Final Fight изданная компанией Capcom для аркадных автоматов, культовой серии игр про приключения Билли и Джимми в Double Dragon Golden Axe и многими другими представителями жанра. Streets of Rage очень многое позаимствовала от Final Fight, но всё же у Улиц Ярости был свой неповторимый стиль. Чем же выделялась на фоне остальных игр серия Streets of Rage?
Игра имела свою необычайно привлекательную и увлекающую атмосферу ночного города с его тёмными улочками и неоновыми вывесками, который заполонили члены бандитской группировки и как в лучших традициях голливудского кино, три бывших копа собирались навести порядок в городе. На начальном этапе разработки игра имела название D-SWAT (Dragon SWAT). Разработчики игры были большими поклонниками асериканских детективных боевиков, таких как "Старски и Хатч" и "Команда А". Что оказало влияние на концепт сюжета игры, ведь изначально предполагалось, что события развернутся в 21 веке где города захвачены организованной преступностью и никто не мог справиться с этой напастью. Интерпол и полиция бессильны и не могли противодействлвать преступникам. Было решено создать особый отряд D-SWAT который бы оказал сопротивление и подарил долгожданный покой жителям городов погрязших в страхе, беззаконии и хаосе. В итоге масштабы чуть поуменьшили и добавили главного антогониста, короля преступного мира - Мистера Х.
Главный дизайнер и режиссёр проекта Нориёши Оба смог создать удобную боевую систему которая опиралась всего на две кнопки - Прыжок и Удар, так же можно было вызвать подмогу, что-то вроде ультимативной способности персонажей. Главные герои были вооружены не только кулаками и своими высокими навыками рукопашного боя, но и могли воспользоваться подручными предметами, которые можно было найти на улицах. Так же герои могли взаимодействовать друг с другом, что помогало разнообразить гейплей при игре на двоих. В игре представлены три персонажа, каждый из которых имел свой стиль боя. К примеру, персонаж Адам умел высоко прыгать и имел более сильные атаки, в то время как Блейз быстро двигалась, но наносила более слабые удары, самым сбалансированным персонажем был Аксель, который очень сильно был похож на героя из Final Fight.
Отличительной чертой стало музыкальное сопровождение игры которое было создано композитором Юзо Коширо. Сауднтреки состояли из смеси техно и хауса которые добавляли атмосферы, помогали погрузится глубже в игру. В одной из поездок в Америку Юзо побывал в Лос-Андделесе и во время проживания в номере своего отлея он смотрел телеканал MTV, которого на тот момент в Японии небыло. И тогда он заметил, что западная танцевальная музыка звучит совсем иначе, в то время в Японии было популярно классическое диско. Соеобразное электронное звучание покорило Юзо.
Примечателен тот факт, что разные названия изначально и задумывались, ROM для всех регионов являлся идентичным. Вы могли взять картридж японского региона, с названием Bare Knuckle: Ikari no Tekken и вставить его в консоль региона европейского и игра меняла название на Streets of Rage, а язык в игре менялся на английский. Данная игра стала эксклюзивом для приставок Sega и в своём роде ответом на Final Fight, которая была портирована на SNES. Игровые журналы тех лет высоко оценили игру. Команда корпевшая над проектом полтора года создала потрясающую игру и достойного конкурента. Разлетевшись по мриу в количестве 2,6 миллионов копий Streets of Rage вошла в четвёрку самых продваемых игр. В противостоянии Sega и Nintendo рождалось множество прекрасных игр, которые укрепляли позиции своих родных консолей, одной из которых и стала Streets of Rage.
В предпраздничный сокращённый день с коллегами решили, а чего бы нам немного не погонять в Quake III Arena. Игруха кроссплатформенная, легко устанавливается и можно прекрасно помеситься.
После такого замеса нам захотелось по вечерам дома, дабы после работы не задерживаться. Поэтому было принято соломоново решение сделать свой сервант для игр и сваять инструкцию для установки Quake III на все используемые домашние системы. Таким образом, и родилась эта статья.
В конце будет милое видео с котиком :)
❯ План работ
Для того чтобы создать свой сервер опишу план предстоящих работ. 1. Найти где создать сервер на Ubuntu 20.04. 2. Включить firewall UFW, предварительно добавив в него исключения для порта 22 (ssh) и 27960 (quake 3 arena). Если вы планируете несколько серверов, то надо добавить исключения и для этих портов (27961, 27962...) 3. Создать двух пользователей: quake с ограниченными правами, для сервера и q3srv с правами sudo для настройки. 4. Настроить ssh: Отключить возможность подключения по ssh от пользователя root. В идеале отключить логин по паролю, оставить только по ключам. Но сие не всегда удобно, поэтому опущу этот момент. 5. Установить ioquake3-server. 6. Скопировать оригинальные ресурсы *.pk3 с компакт-диска или скачать их с интернета 7. Настроить игровой сервер. 8. … 9. Наслаждаться игрой.
❯ Выбор сервера
Выбор, где размещать свой сервер не стоит, конечно же, у timeweb :). Тем более что для нашей древней игрушки подойдёт самый бюджетный сервер. Сервант сто́ит выбирать там, где будет больше всего игроков, иначе будет очень большой пинг. Если игроки в Москве, то сто́ит взять его в Москве.
Если отключить бекапы (они в нашем случае не нужны, сервак можно легко и просто развернуть заново), то, выходит, всего 300 рублей в месяц. После непродолжительного создания самого виртуального сервера у нас будет IP и пароль. После чего можем начать конфигурировать его по ssh.
❯ Конфигурирование игрового сервера
Подключаемся по ssh, благо это можно сделать даже в современном Windows через cmd. Инструкция по настройке очень краткая, в конце статьи я дам ссылки с пояснениями. В принципе это всё можно просто скопировать в bash-скрипт и исполнить на сервере под root.
# настройка firewall # Добавляем правила для SSH (порт 22) и Quake 3 Arena (порт 27960) ufw allow ssh ufw allow 27960
# Включаем firewall UFW ufw enable
# Проверяем статус firewall ufw status
# Создаём пользователя quake с ограниченными правами adduser quake
# Создаём пользователя q3srv adduser q3srv
# Добавляем пользователя q3srv в группу sudo для получения прав администратора usermod -aG sudo q3srv
# Проверяем, что пользователи созданы корректно id quake id q3srv
# Отключаем возможность входа root через SSH sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# Проверяем, что изменение применилось grep "PermitRootLogin" /etc/ssh/sshd_config
# Перезапускаем службу SSH для применения изменений systemctl restart ssh
# Проверяем статус службы SSH systemctl status ssh
apt update && apt install mc tmux ioquake3-server
Сервер настроен, осталось запустить и настроить игровой сервант.
❯ Базовая настройка Quake III сервера
Установить из репозиториев ioquake3-server недостаточно, нужно ещё ему подкинуть ресурсы игры. А именно папку baseq3 с вашего диска, которая содержит файлы pak*.pk3. Ресурсы можно легко найти в интернете, но поскольку это всё же коммерческая часть, я не буду рассказывать, откуда их брать. Будем считать, что у вас есть лицензионный диск (есть же, да? :) ), откуда вы всё перепишете. В общем, содержимое папки baseq3 оригинального quake надо переписать на сервер:
Всё, уже на этом этапе можно запустить сервер и чуток погонять, удобно сервер делать в tmux чтобы консольный процесс оставался доступен и после завершения сессии ssh:
tmux
Дальше просто запускается:
/usr/lib/ioquake3/ioq3ded
И в выпадающей консоли игры уже написать имя карты на которой хочется играть:
map q3dm1
Вот с этого момента уже можно гонять с друзьями, просто подключаясь по ssh и меняя карты. Для того чтобы подключиться к серверу, нужно в консоли клиента написать:
/connect ipsrv:27960
Всё, рассылаете своим друзьям эту команду и можно бежать играть. Сервер легко администрируется через ssh. Команды управления сервером можно легко найти в интернете. Но в какой-то момент хочется сделать у сервера имя, некоторую ротацию карт, добавить возможность добавления/удаления ботов и, главное — дать людям удалённое управление именно игровым сервером. Это всё уже более углублённые настройки, которые тоже легко реализуются.
❯ Продвинутая настройка Quake III сервера
В принципе можно все эти настройки сделать вручную в консоли сервера, но все они потеряются при следующем перезапуске, поэтому лучше всего создать конфиг-файл с именем server.cfg в папке home/quake/.q3a/baseq3, следующего содержания:
set d1 "map q3dm1 ; set nextmap vstr d2" set d2 "map q3dm17 ; set nextmap vstr d3" set d3 "map q3tourney4 ; set nextmap vstr d4" set d4 "map q3tourney5 ; set nextmap vstr d1" vstr d1
rconPassword rconpasswd
Краткое пояснение:
sv_hostname — это имя сервера, которое будет отображаться на публичных серверах quake.
sv_dedicated 1 — выделенный личный сервер, который не регистрируется наверху, если хотите других игроков, то ставьте ноль. Раньше сразу приходило куча народу, сейчас тишина.
g_gametype 0 — тип игры free for all. Цифры задают тип игры, это самый простой и популярный.
fraglimit и timelimit — соответственно, лимит фрагов и времени в минутах.
Большая сложная конструкция — это скрипт ротации карт, логика его работы понятна и так. Если нужно больше карт, просто увеличивается метки d* и прописываете дальше, какая карта должна быть, и в конце надо вернуться на метку d1.
rconPassword — это задание пароля rcon для управления сервером из консоли игры. Более подробно можно на русском почитать тут .
Далее наше сервер запускаем следующей командой:
/usr/lib/ioquake3/ioq3ded +exec server.cfg
В целом там много чего можно накрутить, но не буду переусложнять статью, для базово поиграть вечером этого хватит с лихвой. Для того, чтобы начать управление сервером, после подключения на клиенте надо ввести:
\rconPassword rconpasswd
И потом:
\rcon map q3dm17 // например, для смены карты
Таким образом, игрой может управлять любой, у кого есть rcon-пароль. Напомню, что в quake есть автодополнение по tab.
Quake III отличная игра, которая работает просто на всех платформах. Можно даже на Android или iPhone телефоне, подключив клавиатуру и мышку, сыграть на этом сервере. Но я всё же расскажу, как установить на обычные ПК эту крутую игрушку.
❯ Установка клиентской игры
Так уж получилось, что у всех разные системы, на которых мы собираемся играть. У меня Linux, у кого-то Windows, у кого-то MacOS. И везде оказались свои тонкости и приколы по установке. Поэтому специально подготовил готовую инструкцию для каждого случая. В принципе, забегая вперёд, достаточно будет подготовить единую сборку, которую можно всем рассылать, и она будет вполне корректно везде работать (кроме MacOS). Но, всё же расскажу классический способ установки.
Linux (Ubuntu, Mint)
На мой взгляд, самый простой способ установки, это скачать сборку ioquake прямо с сайта https://ioquake3.org/ . Распаковать её, и закинуть в папку baseq3 файлы pak0.pk3-pak8.pk3.
Можно по аналогии, как выше я рассказывал об установке сервера, установить клиента. В любом случае все конфиги ваши будут храниться в ~/.q3a/. Достаточно запустить игру командой:
./ioquake3.x86_64
И наслаждаться ей. Но, внезапно столкнулся с особенностями ввода мыши в Linux. В нормальном таком замесе, при резком повороте мышь оказывалась где угодно, но совсем не там куда ты её направил. Для этого нужно настроить raw input. Всё проделывал в Linux Mint:
# Отключаем эмуляцию средней кнопки мыши Option "Emulate3Buttons" "false"
EndSection
Последний момент важный. У меня стоит прыжок на правую кнопку мыши, а стрелять на левую. Поэтому если хочется сделать rocket jump, то получается эмуляция третьей кнопки мыши и получается просто zoom.
Всё, у нас теперь чистый ввод, и можно устраивать честный замес, без всяких прослоек, которые ведут курсор в неизвестном направлении.
Windows
C Windows установка самая простая. Также скачиваем с https://ioquake3.org/ сборку для винды, распаковываем её в удобное место и закидываем в папку baseq3 файлы pak0.pk3-pak8.pk3. Всё можно играть. Единственное, что на одной системе столкнулся с тем игра отказывалась запускаться, так как ресурсы лежать не по тому пути. Пришлось папку baseq3 со всеми паками переписать по пути:
C:\Users\%USERNAME%\AppData\Roaming\Quake3\baseq3
Не факт, что у вас такое встретиться. Но если что, вот рецепт.
MacOS
С этой системой пришлось повозиться, как-то дружба с маком у меня не задалась. Но тем не менее смог победить и это. Всё, что описывается ниже, проверялось на Macbooc Air M1. Сначала я пытался также скачать с официального сайта, но так и не смог победить эту надпись:
Поэтому решил применить *nix way на Маке, и он сработал.
Устанавливаем ioquake3 с помощью brew:
brew install ioquake3
После этого, оригинальные паки (всю ту же злополучную папку baseq3 с файлами pak0.pk3-pak8.pk3) нужно переписать в
Долго искал, в какую точно папку это разместить (по инструкции на сайте папка указана другая), с этой всё запускается. И всё работает! Полный экран я так и не понял, как сделать (через настройки игры не выходит), но всё работает и можно играть!
❯ Выводы
Не зря сделал эти все инструкции для друзей, в действительности теперь каждый вечер идёт весёлый замес и можно как раньше отвести душу, постепенно повышая скилы. Иногда смотришь, а товарищ что-то фигово играет, а, оказывается, ему котёнок помогает играть (это реально присланное видео):
Конечно после игры с друзьями захочется накидать уже других модов, таких как cpma или defrag для олдфажников, но всё это делается уже по аналогии и достаточно просто. Самое приятное, что моды можно поставить только на сервант, а клиент уже сам подхватит. Короче говоря, есть почва, где поразвлекаться и вспомнить молодость.
Дамы и господа, это просто пытка какая то. При создании персонажа кидаются Кубы для определения характеристик. Выпадают цифры от 3 до 27. Что то играбельное получается от 17. Примерно. Но обычно выпадает около семи.
У меня уже пальцы болят. Получилось сделать только одного из партии (6 персон) с броском 27. Остальные 5 пациентов не получили даже 20 очков. Весь вечер на это убил. Скорей всего за годы существования этой игры комьюнити нашло способ решения этой проблемы. Может, программа какая, может, в файлах игры ковыряться. Есть ли способ как то повлиять на этот рандом, или просто назначить сколько очков будет выпадать?
Недавно играл в ремастер 1 части. Там тоже рандом при создании персонажа, но нужные цифры, все же, выпадают. А тут такое чувство, что игра просто издевается.
Есть игры которые я делаю браузерными и для себя. Из последнего это как раз Atomic Bomberman. Очень крутой соревновательный аренный экшен. Тут можно и с друзьями устроить баттлрояль за одним компом или одному погонять ботов. Тот редкий случай когда я обожаю игру за музыку, графику и геймплей вместе взятые! А так это обычный классический Bomberman со всеми своими фишками.