Сыграем в DOOM на серверах

gp9clccuwdpmegsqfrgays5z2ls.jpeg

У меня возникла безумная идея — это сыграть в классический DOOM по сети установленный на VPS под управлением Windows. В целом, это задумывалось как тестирование новых фич, которые мы внедряем: клонирование серверов и разворачивание локальной сети. Да, и на самом деле, это круто сыграть в DOOM прямо на серверах, особенно после просмотра баек от Джона Ромеро было невозможно не поиграть в легенду компьютерных игр.
Давайте посмотрим, что же из этого получилось, с какими проблемами столкнулся и как их решили.

В чём фишка?


У нас появились две интересные возможности: разворачивание локальной сети и создание снапшотов. Если с локальной сетью всё более-менее понятно — это прекрасная альтернатива тому же VPN и разворачивается она сильно проще, то вот что такое снапшот — не все понимают. Да, и буду честен, я тоже не сразу понял. Снапшот позволяет сделать текущий образ сервера и потом на его базе создать другой сервер, даже с другими параметрами, таких как размер диска, памяти, количество ядер. Это очень удобно, особенно если вам необходимо ваш VPS-север перенести из одного дата-центра в другой. Другая возможность, которую мы будем использовать, это однократная настройка рабочего сервера, и потом клонирование его для ваших клиентов.
Понимаю, что всё это выглядит слишком рекламно, но изначально это был боевой тест наших внедрённых фишек. И благодаря ему мы смогли оценить все возникшие проблемы и оперативно их исправить. Поэтому и родилась данная статья.

Разворачиваем мастерсервер


Для этого проекта выбрал сервер со следующими параметрами.

orkxp9g2fqzvgld-jc8rweysrj8.png

Думаю, для наших задач такой конфигурации более чем достаточно. Изначально хотел использовать Windows Server 2003, но Doom наотрез отказался на ней работать, поэтому всё же решил остановиться на 2016.
Спустя несколько минут, после разворачивания сервера и загрузки операционной системы, мы увидим готовую панель, а главное IP адрес нашего сервера.

ay5rfbjdk9ebtmwvfav7vymk0zw.png

В качестве сетевого DOOM я использовал какую-то хитрую сборку Zandronum, DoomSeeker, BrutalDoom, которую мне дали друзья. Но, по сути, вам нужен будет один Zandronum и DoomSeeker для создания сервера, плюс оригинальный .wad-файл, если хотите поиграть на «тех самых картах». Ну или найти подобную сборку на просторах сети. Сразу признаюсь, я не большой знаток модов DOOM, попробовал несколько сборок, поэтому показываю работающий вариант. Возможно, если вы захотите это повторить, у вас должно получиться и с другими сборками. Тот же BrutalDoom намного более весёлый и резвый для игры по сети.
Итак, копируем эту сборку на наш сервер (я рекомендую использовать папку «c:\game\doom»), запускаем zandronum.exe.

dom6mlzr4jaevoegrq2ybw3wac8.png

И выбираем папку, содержащую WAD-файлы, на которых будем играть. Именно они и определят те карты, на которых вы будете играть. У меня они лежат в папке files вместе с игрой.

0cdsqyyugxe_dmf7f9iznexgm4u.png
ieohm-zkjzs8upmnzfjv4z0hfj0.png

Всё готово, чтобы играть. Теперь сделаем копии нашего сервера и добавим их в единую локальную сеть, чтобы смогли поиграть и другие игроки по сети.

Создание копии серверов и объединение в единую локальную сеть


Для того, чтобы сделать копию сервера, нужно выключить сервер, зайти во вкладку «Снапшоты».

uv2qk_3ufyo0_j-wqqsue61ty84.png

И выбрать «Сделать снапшот». Если сервер не выключен, то его предложат выключить в интерактивном режиме, так как снимок сервера для переноса осуществляется в выключенном состоянии (фактически копия диска).

cja1uhjxp1ycqmoesiruf9l32s4.png

В результате будет создан снапшот нашего сервера.

urdydgbr8netwfnza8pmx-w_hde.png

Основной сервер после этого можно запустить, а на базе данного снапшота мы можем создать новые сервера. Для этого идём во вкладку «Заказать»

ighc4xsxvqjtrd_9fb1miuiysy0.png

В разделе, где выбирается «Шаблон сервера», в самом низу будет наш Snapshot, выбираем его.

ddeunlldvrq1iguvcy7cmdkd7ic.png

Обратите внимание, что можно выбрать сервер с другими параметрами. Это очень удобно, если вам необходимо увеличить объём жёсткого диска, ОЗУ и прочего. Разве, что нет возможности сохранить IP-адрес.
В результате, после описанных операций, через некоторое время мы получаем копию нашего сервера. Копия от оригинала отличается только паролём входа, и другими IP и MAC-адресами.

szdd40efvqitnwjzky8y-cs-x0c.png

После создания второго сервера, давайте объединим их единую локальную сеть Для это переходим во вкладку «Сеть» любого сервера.

jviu3y1hmeszkovhxhsmal5xady.png

Там выбираем «Настроить локальные сети».

cee5iucf7u5fu7ka1to4glk-hly.png

Далее можно дать название нашей локальной сети, например Doom, выбираем диапазоны подсети; после чего можно добавляем сервера, которые мы хотим подключить в эту локальную сеть. После нажимаем «Создать локальную сеть».

fse6n9fd0_kri7zhvzszz414kve.png

И окончательно сеть разворачивается после нажатия на кнопку «Развернуть локальную сеть».

03bjkqjkue6witftnbbdkrrqkco.png

Вот тут кроется одна проблема: Windows очень любит обновления, не даёт перезагрузить сервер в момент установки изменений. Так Windows обновляется часто, то достаточно легко можно попасть на момент обновления в момент создания сети. Во время подготовки материала для статьи я так попал дважды. Для создания сети требуется перезагрузка сервера, и если перезагрузить не удалось, то сеть создаться с ошибкой.

6hzvz2cvuuofo-wt_vkkdfjyjne.png


Установка проклятых обновлений в момент создания сети.

Во избежание таких проблем при создании сети, самое правильное данные процедуры проводить на выключенных серверах, ибо всё равно потребуется перезагрузка для разворачивания сети. А у выключенного сервера внезапно обновления ставиться не будет.
После всех описанных процедур у нас будет развёрнута локальная сеть и в панели управления серверами будет такая картина.

rpiqhsd3mzs-bdtxfsnzlxflkxg.png


Сервера в единой сети.

После воспоминаний о проблемах и тонкостях разворачивании OpenVPN, этот вариант создания локальной сети просто чудо-чудное! Лично для меня он оказался наиболее удобным.
Как вы понимаете, таким же точно способом мы создаём ещё несколько серверов, на которых уже смогут играть мои коллеги.

Создаём игровой сервер и играем.


Всё, теперь нам осталось только запустить сервер DOOM и играть. На мастер-сервере запускаем doomseeker.exe.

gyenv2kk17zanzfnmp8spxrzq04.png

Выбираем «Create Server».

lmxkiotfeu-jjlfcixagdtdajh4.png

После чего выбираем для какого движка создаём сервер, какой wad-файл использовать и карту.

z7pon0vqihmpqccc_fnufk7xzmy.png

И жмём «Start server».

wccrvq_nhylf0xayrx6tt5q8fbw.png

После этого на главной машине и на клиентских запускаем zandronum.exe и идём в Multiplayer. Browse servers->internal browse, там выбрать local. Это меню не всегда срабатывает, поэтому в него надо заходить несколько раз.

b4faxv4w8sc6oddgeohnwpid7sa.png

Не забываем выбрать наш сервер. Жмём «join game» и мы в игре!

je-ohnobagonypvk0pphjlqfslk.png
0mllw84wazgi862vkextcv6w7zm.png

Итог


fleylo57cg3e_c5ayh2qvzedu1e.png


Коллеги играют в DOOM на рабочем месте.

Наш коллектив достаточно классно порубился в игру, и теперь у нас есть удалённые рабочие машины с запущенной игрой. Их можно передавать другим коллегам или играть из дома. Это, кстати актуально, для пошаговых стратегий, когда можно таким образом сохранять прогресс.
Но главное, что удалось в игровой форме протестировать внедрение новых фич. Все остались довольны.

oug5kh6sjydt9llengsiebnp40w.png

3piw1j3wd_cgmzq9sefgferaumu.png

© Habrahabr.ru