Одним из популярных направлений, в котором используют VDS, и о котором нередко интересуются клиенты у нашей поддержки, являются игровые серверы. Чаще всего мы слышим вопросы: «А можно ли?», «А друзья и другие пользователи смогут к нему подключиться?», «А какие параметры подойдут?». И, конечно, VDS-серверы не только можно, но и нужно использовать под подобные задачи. Намного удобнее развернуть игровой сервер на виртуальной машине, которая никак не зависит от вашего ПК и работает 24/7.

Другие статьи серии «Будни техпода»



▍ Создание VDS для размещения игрового сервера


В зависимости от проекта системные требования к серверу могут отличаться. Где-то будет достаточно 2 ядер процессора и 2 гигабайт оперативной памяти, а где-то и 8 гигабайт будет недостаточно. Минимальные требования для проектов из моего примера: 4 CPU, 4 RAM, также рекомендован SSD-диск. Поэтому я буду использовать следующую конфигурацию:


В качестве диска был выбран «NVMe», а в качестве операционной системы «Windows server 2022». Стоимость такой конфигурации составляет 2884 рубля в месяц, но по промокоду HABR15 вы можете получить дополнительную скидку 15% (промокод суммируется с другими скидками).

После заказа сервер установится в течение нескольких минут и отобразится во вкладке «Мои серверы» со всеми данными, которые необходимы для подключения по RDP.


Подключаемся к серверу по RDP и приступаем к дальнейшей настройке.

▍ Установка и настройка SteamCMD


Хоть процесс установки идентичен для всех проектов, настройки у разных игровых серверов отличаются и в первую очередь подстроены под особенности той или иной игры. В этой статье я приведу пример запуска сервера для двух проектов: V Rising и Valheim.

Для начала необходимо скачать и установить приложение «steamcmd». После скачивания архива переходим в корень «диска С», создаём в нём папку с именем «steamcmd» и разархивируем в неё саму программу.


Теперь откроем командную строку, перейдём в созданную папку и запустим установку приложения. Делается это следующими командами:

cd C:\steamcmd
steamcmd



Мы получили доступ к приложению «steamcmd» и можем приступать к установке игрового сервера. Для начала нам необходимо создать папку (я буду использовать имя «v-rising»), в которой будет храниться наш сервер. Делается это командой:

force_install_dir ./имя папки/

Также нам необходимо авторизоваться в учётной записи steam, чтобы иметь возможность скачивать нужные нам приложения. Авторизацию будем производить под логином «anonymous». Вводим команду:

login anonymous


Далее нам необходимо скачать сам игровой сервер. Для установки конкретного приложения нам потребуется его ID. Его мы можем посмотреть на сайте steamdb.info

В поиске на сайте указываем название нужной нам игры (в моём примере это будут игры V Rising и Valheim), в поле «App Type» выбираем «tool» и в списке находим приложение с припиской «dedicated server».


Вводим одну из команд:

app_update 1829350 //для установки V Rising
app_update 896660 //для установки Valheim

Сервер скачается и установится, после чего можно будет закрыть «steamcmd». Выполняем команду:

quit

Со следующего этапа появляются отличия в настройке проектов, но логика у них схожая и разобраться нетрудно. Мы рассмотрим сначала пример с проектом V Rising, а затем с проектом Valheim.

▍ Запуск сервера на примере V Rising


Теперь, перейдя в ранее созданную папку, мы сможем увидеть файлы игрового сервера. В первую очередь нас интересует файл с расширением «bat». Он содержит параметры запуска сервера. В случае с V Rising это файл «start_server_example.bat». Выбираем его правой кнопкой мыши и жмём «Изменить».


«VRisingServer.exe» — файл, который будет запускаться при запуске bat-файла. «serverName» — имя, которое будет отображаться в списке всех серверов, и по которому можно будет найти наш сервер. «saveName» — имя файла, в котором будут храниться сохранения нашего игрового мира. В первую очередь нас интересует имя «serverName». Меняем его по своему усмотрению.


В некоторых проектах (например, Valheim, который рассмотрим далее) в этом файле можно также указать дополнительную информацию, такую как пароль от сервера, номер порта, пароль администратора и т. д., но в случае с V Rising, эта информация редактируется в отдельных файлах. Сохраняем изменения и закрываем файл. Переходим в папку «VRisingServer_Data» — «StreamingAssets» — «Settings» и находим файлы «ServerGameSettings.json» и «ServerHostSettings.json».


В первом файле возможно настроить игровые параметры сервера (тип сервера, количество добываемых ресурсов и т. д.), а во втором — параметры хоста (порт сервера, пароль от сервера, количество пользователей и т. д.). Откроем второй файл с помощью любого текстового редактора (например, блокнота). Основная информация, которая тут нас интересует, это номера портов. Их нам необходимо открыть в брандмауэре Windows, чтобы сервер можно было найти и подключиться к нему. По умолчанию это порты 9876, 9877 и 25575, но при желании можно указать другие.


Запоминаем эти порты, при необходимости производим дополнительные настройки и закрываем файл.

▍ Открытие портов в брандмауэре


Теперь нам необходимо настроить брандмауэр и открыть порты, которые были указаны в файле конфигурации хоста. Нажимаем на клавиатуре Win+R (или щёлкните правой кнопкой мыши по меню «Пуск», выберите «Выполнить»), введём firewall.cpl и в открывшемся окне переходим в дополнительные параметры.


Нам необходимо создать правила для входящих и исходящих подключений. Жмём «создать правило».


В пункте «Тип правила» выбираем «Для порта».


Далее выбираем протокол и нужные порты (мы будем открывать и TCP и UDP, поэтому данную процедуру необходимо будет повторить). Выбираем протокол и вводим необходимые порты через запятую.


Далее выбираем «Разрешить подключение».


Соглашаемся со следующим пунктом, указываем название правила и жмём «Готово».


Проделываем те же действия для UDP, а также для исходящих подключений (суммарно мы добавили 4 правила: 2 для исходящих и 2 для входящих подключений). Закрываем окно брандмауэра и переходим к запуску сервера.

▍ Запуск сервера V Rising


Настройки завершили, теперь мы можем запустить сам сервер и затем подключиться к нему. Запуск осуществляется через bat-файл («start_server_example»), который мы редактировали несколько шагов назад. Запускаем его.


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


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

▍ Настройка сервера на примере Valheim


Теперь рассмотрим вариант с настройкой сервера для игры Valheim. По аналогии с V Rising у нас уже есть готовый bat-файл, который содержит в себе настройки для запуска сервера. В некоторых проектах этот файл может отсутствовать, но при необходимости его можно создать вручную. Просто создаём текстовый файл и указываем расширение «bat». Откроем его с помощью текстового редактора, нажав правой кнопкой мыши и выбрав «Изменить».


В этом файле нас интересует самая последняя строка. Как и в V Rising, она содержит имя файла, который будет запускаться (valheim_server), и имя нашего сервера (name). Также тут можно сразу указать порт, который будет использовать наш сервер и пароль от сервера. По умолчанию установлен порт 2456, а рекомендуемые порты для открытия 2456-2458 (но это не значит, что нельзя использовать другие порты).


Редактируем файл по своему усмотрению (меняем порт, пароль и т. д.) и закрываем его. Переходим в брандмауэр, и как в прошлом примере создаём 4 правила (2 для исходящих и 2 для входящих подключения). Указываем порты 2456-2458.


Закрываем брандмауэр и запускаем файл «start_headless_server».


Сервер запущен, и теперь мы можем к нему подключиться. Запускаем игру, переходим на страницу с серверами, выбираем «Присоединиться к игре» и жмём «Добавить сервер». В открывшемся окне вводим IP нашего сервера (в нашем случае это IP нашего VDS-сервера, на котором расположен игровой сервер) и через двоеточие указываем порт, который был прописан в файле запуска (в нашем случае это 2456).


Жмём «Добавить сервер», и он отобразится у нас в списке. Выбираем его и нажимаем «Подключиться». Затем вводим пароль, который мы указывали в файле запуска, и жмём «Enter».


Готово! Мы успешно подключились к серверу и можем начинать игру.

▍ Пара слов в заключение


Как мы смогли увидеть, в запуске своего игрового сервера нет ничего сложного, а сделать это можно всего за 10-15 минут. К сожалению, полностью универсальное руководство под все игровые проекты сделать невозможно, т. к. каждый из них имеет свои уникальные настройки, но, надеюсь, описанные в этой статье примеры помогут разобраться и в других проектах.

Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх ????️

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


  1. iuabtw
    00.00.0000 00:00
    +1

    Не думали пресеты сделать для серверов популярных игр?


    1. oldadmin Автор
      00.00.0000 00:00

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


      1. 13werwolf13
        00.00.0000 00:00
        +2

        совсем не обязательно, в пресетах которые делаю я (см пример в соседнем комменте) для обновления достаточно будет перезапустить сервис или всю систему (об этом можно уведомлять пользователя миллионом разных способов), а некоторые особо изощрённые любят держать конкретную версию игрового сервера (например игроки в minecraft у которых от обновления серверной части плагины могут весь мир похерить) и не обновляются годами.

        гораздо сложнее вопрос с поставкой софта. в случае steam можно просто поставлять скрипт который будет тянуть сервер при помощи steamcmd, а тот же minecraft не лежит на пермалинке и единственный способ гарантировать его установку - держать копию на своих серверах (а так же актуализировать её переодически) и тут есть свой подводный камень - вопрос о том а позволяется ли конкретный серверный софт поставлять со своего источника.

        но всё это лирика потому что в большинстве случаев для пользователя нужен не сам игровой сервер а преднастроенная песочница куда он может закинуть пару файлов и одном нажатием кнопки их запустить (читай набор зависимостей заранее предустановленных и вебморда для того чтобы закинуть плагинов и рестартануть демона).

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


  1. 13werwolf13
    00.00.0000 00:00
    +9

    а зачем простите крутить сервера для игр на винде? оверхэд же дичайший?
    если не вдаваться в подробности с добавлением отдельного sysuser'а и воркдира то для запуска того же valheim сервера например на opensuse всё что требуется это установить родным пакетным менеджером steamcmd и добавить один сервисфайл (ну и поставить его на исполнение и автозапуск).

    ну а я настолько ленив что оформил всё это ввиде пакета

    sudo zypper ar --refresh obs://home:Werwolf2517 home:Werwolf2517
    sudo zypper in -y valheim-server
    sudo systemctl daemon-reload
    sudo systemctl enable --now valheim-server.service

    и этого более чем достаточно для того чтобы поиграть с друзьями. ну а если требуется заморочится с паролем, motd и всё такое то есть конфига в /etc. такой дедик прекрасно живёт в lxc контейнере ресурсов которому дано совсем мало (одно ядро старого xeon'а и ЕМНИП всего 512 или 1024 гига памяти. ни разу не упирался в ресурсы, винда же при таких ресурсах наверное даже не стартанёт.

    и кстати, а лицензия на виндосервер от хостера дарится или иди и сам покупай?


    1. dlinyj
      00.00.0000 00:00

      Я так хотел сервант первой hala сделать, а он только виндовый...


      1. 13werwolf13
        00.00.0000 00:00

        хмм, о таком варианте я как-то даже не подумал. давно не попадалось ничего windows only. а что proton в steamcmd ещё не добавили?


        1. dlinyj
          00.00.0000 00:00

          Это было лет 7 назад, сейчас не знаю. Таки Microsoft игру делали...


    1. pit_art
      00.00.0000 00:00
      +1

      Потому что большинство геймеров пугаются при виде линуксовой консоли.


      1. 13werwolf13
        00.00.0000 00:00

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


        1. pit_art
          00.00.0000 00:00

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

          2. консоли в виндах намного меньше, как минимум там есть блокнот для редактирования конфигов, который сильно более привычен школьникам, нежели vi

          3. не все игровые сервера запускаются под линуксами

          Не надо пожалуйста проецировать свой опыт работы с линуксами на школьников-геймеров.


          1. 13werwolf13
            00.00.0000 00:00

            1) не надо ничего писать, их на гитхабе валом

            2) блокнот это здорово, но не покрывает всего с чем приходится ковыряться админу игрового сервера будь он хоть профи в 6ом поколении хоть сбежал с продлёнки

            3) на это мне уже указали выше, признаю об этом не подумал

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


    1. Rinsewind
      00.00.0000 00:00
      +2

      Для того, чтобы продавать услугу в 10 раз дороже конкурентов, очевидно же