Что понадобится
- Операционная система: 64-разрядная Linux или Windows. Сервер поставляется как
NuclearOptionServer.x86_64 с RunServer.sh на Linux и как NuclearOptionServer.exe с RunServer.bat на Windows.
- Железо: Shockfront не публикует требования к серверу (на странице Steam указано только то, что нужно самой игре).
- Сеть: UDP 7777 для игры и UDP 7778 для запросов Steam, доступные из интернета. Оба порта можно изменить в конфиге.
- Аккаунт Steam: для загрузки сервера не нужен. Команда установки использует
+login anonymous.
- Игра: каждому игроку нужна Nuclear Option в Steam, это игра для Windows.
Само серверное ПО бесплатно. Вы платите за машину, электричество и трафик, а не за программу.
Вариант 1: запустить сервер самому
Подойдёт запасной ПК, домашний сервер или облачная виртуальная машина. Шаги SteamCMD взяты со страницы SteamCMD от Valve, а шаги для сервера из руководства Shockfront.
Linux (Debian или Ubuntu)
- Установите библиотеку, которая нужна SteamCMD.
sudo apt-get install lib32gcc-s1
- Создайте пользователя
steam. Valve не советует запускать SteamCMD от root, а примеры путей у Shockfront рассчитаны на пользователя с именем steam.
sudo useradd -m steam
sudo passwd steam
sudo -iu steam
- Установите SteamCMD под этим пользователем.
mkdir ~/Steam && cd ~/Steam
curl -sqL "https://client-update.steamstatic.com/installer/steamcmd_linux.tar.gz" | tar zxvf -
- Скачайте сервер.
~/Steam/steamcmd.sh +quit
~/Steam/steamcmd.sh +force_install_dir /home/steam/NuclearOptionServer +login anonymous +app_update 3930080 validate +quit
Первая строка даёт свежему SteamCMD обновиться до основной загрузки. Наш скрипт установки делает то же самое, потому что app_update, запущенный во время перезапуска SteamCMD, может завершиться ошибкой «Missing configuration» и при этом выглядеть выполненным. Проверьте, что существует файл /home/steam/NuclearOptionServer/steamapps/appmanifest_3930080.acf. Если его нет, запустите загрузку ещё раз.
- Запустите сервер один раз.
cd ~/NuclearOptionServer
chmod +x NuclearOptionServer.x86_64 RunServer.sh
./RunServer.sh
При первом запуске создаётся DedicatedServerConfig.json со значениями по умолчанию. С аргументами запуска по умолчанию логи пишутся в logs/server-<date and time>.log. Эта строка обычно означает, что сервер запустился правильно:
[DedicatedServerManager] Waiting for Players before loading next map
- Остановите сервер и отредактируйте
DedicatedServerConfig.json в той же папке. Ключи, которые меняют чаще всего:
"ServerName": "My Nuclear Option Server",
"Password": "",
"MaxPlayers": 16,
"Port": { "IsOverride": true, "Value": 7777 },
"QueryPort": { "IsOverride": true, "Value": 7778 }
Пустой Password означает, что пароля нет. Значение порта Value используется, только когда IsOverride равно true. Иначе сервер остаётся на 7777 и 7778.
- Откройте порты. Разрешите UDP 7777 и UDP 7778 в брандмауэре машины (с ufw:
sudo ufw allow 7777/udp и sudo ufw allow 7778/udp), затем пробросьте оба порта как UDP на роутере на эту машину.
- Снова запустите сервер командой
./RunServer.sh. Чтобы он продолжал работать и обновляться после выхода из системы, в репозитории Shockfront Nuclear-Option-Server-Tools есть AutoUpdater с юнитами systemd, которые запускают сервер и проверяют в Steam новые сборки сервера. Сначала поправьте пути в его юнит-файлах: они ожидают SteamCMD в /usr/games/steamcmd.
- Проверьте доступность снаружи. Опросите свой публичный IP и порт запросов с помощью инструмента запросов к серверам Steam или поищите название сервера в списке серверов в игре.
Windows
- Скачайте SteamCMD по адресу
https://client-update.steamstatic.com/installer/steamcmd.zip и распакуйте в папку, например C:\steamcmd.
- В командной строке:
cd C:\steamcmd
steamcmd +force_install_dir C:\NuclearOptionServer +login anonymous +app_update 3930080 validate +quit
- В
C:\NuclearOptionServer запустите RunServer.bat или стартуйте сервер вручную командой NuclearOptionServer.exe -logFile server.log -limitframerate 30.
- Остановите его и отредактируйте
DedicatedServerConfig.json так же, как в шаге 6 для Linux. В Windows записывайте MissionDirectory полным путём с прямыми слэшами, например "C:/Games/NuclearOption-Missions".
- Разрешите входящие UDP 7777 и 7778 в брандмауэре Windows и пробросьте оба порта на роутере.
Другие настройки в DedicatedServerConfig.json
Hidden: значение true скрывает сервер из публичного списка.
ModdedServer: поставьте true, если используете серверные моды, которые меняют игровой процесс.
BanListPaths: файлы с SteamID, которым вход запрещён. По умолчанию это ban_list.txt рядом с сервером.
MissionRotation: миссии, которые сервер проходит по кругу. У каждой записи есть Key (Group и Name) и MaxTime в секундах. Ротация по умолчанию состоит из встроенных Escalation и Terminal Control, по два часа каждая.
RotationType: 0 проигрывает ротацию по порядку, 1 выбирает случайно с повторами, 2 перемешивает и проигрывает каждую миссию, прежде чем перемешать снова.
VoteKick: включён по умолчанию. Игрок, исключённый голосованием, может вернуться, когда начнётся следующая миссия. AutoBanThreshold (по умолчанию 3) задаёт, сколько раз игрока можно исключить голосованием до автоматического постоянного бана.
DisableErrorKick: сервер исключает игроков, вызывающих ошибки, если только это значение не равно true.
Свои миссии и миссии из Workshop
- Миссии из Workshop: добавьте запись с
"Group": "Workshop" и ID элемента Workshop в качестве Name. Сервер скачает её при запуске в steamapps/workshop/content/2168680/ и будет обновлять.
- Ваши собственные миссии: используйте
"Group": "User". Сервер загружает <MissionDirectory>/<name>/<name>.json, поэтому имя папки должно точно совпадать с именем JSON-файла, а MissionDirectory должен быть полным путём.
Удалённые команды
В наших тестах сервер не реагировал на команды, введённые в его консоли. Вместо этого Shockfront предлагает удалённые команды по TCP: запустите сервер с -ServerRemoteCommands (порт 7779, если вы не указали другой) и отправляйте команды, например send-chat-message или reload-config, в особом формате, который описан на их странице ServerCommands. В том же репозитории есть веб-панель ServerControlPanel.
Вариант 2: запустить сервер на PlayNHost
Аренда избавляет от брандмауэра, проброса портов и возни с обновлениями. Порты и файл конфигурации настроены за вас.
- Выберите план. Откройте страницу хостинга серверов Nuclear Option и сравните планы (на момент написания это WINGMAN, SQUADRON и INTERCEPTOR, на 12, 16 и 20 игроков). Нажмите Создать сервер у WINGMAN или SQUADRON либо Настроить план у INTERCEPTOR и оформите заказ. Цены меняются, поэтому смотрите их на этой странице.
- Дождитесь установки. Вам придёт письмо «сервер готов», а сам сервер появится на panel.playnhost.com. На вкладке Console панель считает сервер запущенным, когда он выводит
[DedicatedServerManager] Waiting for Players before loading next map.
- Откройте раздел «Настройки», затем Настройки игры. Эти поля записываются в
DedicatedServerConfig.json при каждом запуске сервера:
- Название сервера: имя в списке серверов, до 30 символов.
- Пароль сервера: пароль для входа. Каждый новый сервер получает собственный случайный пароль вместо общего по умолчанию. Очистите поле, если хотите, чтобы зайти мог любой.
- Макс. игроков: начальное значение равно числу игроков в вашем плане.
- Сервер с модами: ставьте
true только если используете серверные моды, которые могут влиять на игровой процесс. Сама настройка никакие моды не устанавливает.
- Порт запросов: второй порт сервера, который использует список серверов. Он задаётся при создании сервера, поэтому оставьте его как есть.
Автообновление находится под пунктом Показать расширенные: оно включено по умолчанию, и тогда сервер проверяет в Steam наличие новой сборки при каждом запуске.
- Перезапустите. Когда панель покажет «Сохранено. Чтобы изменения вступили в силу, сервер нужно перезапустить.», нажмите Перезапустить сейчас и дождитесь строки о готовности.
- Добавьте миссии Workshop (по желанию). Откройте вкладку Мастерская и добавьте ID миссий в Миссии Мастерской. Панель проверяет каждый ID в Steam, а сервер скачивает миссии при следующем запуске, поэтому нажмите Перезапустить для применения. Раскраски там не предлагаются: они косметические и обрабатываются игрой каждого игрока.
- Подключитесь. Найдите название своего сервера в списке серверов в игре и введите пароль сервера, если только вы его не очистили.
Что наша система делает за вас
- Порты и пути. При каждом запуске панель записывает игровой порт и порт запросов в
Port и QueryPort, а MissionDirectory устанавливает в /home/container/NuclearOption-Missions. Она также записывает ServerName, Password, MaxPlayers и ModdedServer из настроек игры. Ручные правки любого из этих ключей в файле заменяются при следующем запуске, поэтому меняйте их в настройках игры.
- Ротация миссий. Перед каждым запуском наш стартовый скрипт пересобирает
MissionRotation: сначала Escalation и Terminal Control, затем каждая миссия из Миссии Мастерской, по два часа каждая. Встроенные миссии остаются всегда, а ручные правки MissionRotation не переживают перезапуск. Других ключей, например RotationType, Hidden, VoteKick и BanListPaths, панель не касается. Меняйте их, а если их нет, добавляйте в DedicatedServerConfig.json через Files. Сначала остановите сервер, затем запустите его снова.
- Консоль. Вкладка Console показывает лог сервера. Введённые команды в наших тестах не действовали, а наша строка запуска не включает удалённые команды.
- Бэкапы. Если в вашем плане есть бэкапы, сделайте один в разделе Бэкапы перед ручным изменением конфига.
Свой сервер или аренда: честное сравнение
- Стоимость. Свой сервер: программа бесплатна, а вы платите за железо, электричество и трафик либо за облачную виртуальную машину. Аренда: ежемесячная плата по плану. Смотрите актуальные планы.
- Доступность. Свой сервер: надёжен настолько, насколько надёжны ваша машина, электричество и домашний интернет, и он должен работать, пока играют друзья. Аренда: работает на оборудовании хостера, а не на вашем ПК.
- Открытость сети. Свой сервер: игроки подключаются к вашему публичному IP, а брандмауэр и роутер на вас. Аренда: ваш домашний IP не задействован.
- Нужные навыки. Свой сервер: командная строка, проброс портов, правка JSON и привычка обновлять. Вполне по силам и хороший способ поучиться. Аренда: веб-панель с полями формы.
- Обновления. Свой сервер: остановить, снова выполнить команду SteamCMD, запустить или настроить AutoUpdater от Shockfront. Аренда: Автообновление ставит новую сборку при запуске сервера, поэтому после патча нажмите Перезапустить.
Свой сервер подойдёт, если какая-то машина и так работает весь день и вы уверенно чувствуете себя в сетевых настройках. Аренда подойдёт, если вы не хотите заниматься железом.
Частые проблемы и решения
Сервер не показывается в списке серверов
Причина: порт запросов недоступен снаружи или Hidden равно true.
Решение: откройте и пробросьте UDP 7778 (или ваш QueryPort), а также игровой порт и проверьте инструментом запросов к серверам Steam. Руководство Shockfront также указывает на собственный лог игры на ПК игрока, %USERPROFILE%\AppData\LocalLow\Shockfront\NuclearOption\Player.log: строка, начинающаяся с [Warn] Request Server List, fail index и содержащая ваш IP и порт запросов, означает, что запрос не удался.
Вы не видите свой сервер из той же сети
Причина: на роутере выключен NAT reflection. Эта опция есть не на каждом роутере.
Решение: включите её, если она есть на вашем роутере, или попросите друга из другой сети проверить список.
Сервер игнорирует ваш собственный порт
Причина: IsOverride по-прежнему равно false, поэтому сервер использует 7777 и 7778.
Решение: установите IsOverride в true для Port и QueryPort, затем перезапустите.
Своя миссия не загружается
Причина: имя папки и имя JSON-файла различаются, или MissionDirectory не является полным путём.
Решение: используйте <MissionDirectory>/test1/test1.json для миссии с именем test1. Для миссий из Workshop используйте группу Workshop, чтобы сервер скачивал их сам.
Изменения в файле конфигурации пропадают (PlayNHost)
Причина: этот ключ панель записывает при каждом запуске, либо это MissionRotation, который пересобирает наш стартовый скрипт.
Решение: меняйте название, пароль, число игроков и порты в Настройках игры, а миссии в Миссиях Мастерской.
Игроки видят предупреждение о производительности рядом с вашим сервером
Причина: MaxPlayers больше 16. По руководству Shockfront, список серверов в этом случае предупреждает игроков.
Решение: Shockfront разрешает больше 16, но просит убедиться, что ваше железо выдержит дополнительную нагрузку. Снизьте MaxPlayers до 16, если хотите убрать предупреждение.
Вопросы и ответы
Можно ли бесплатно запустить сервер Nuclear Option?
Да. Выделенный сервер бесплатен в Steam и скачивается с анонимным входом. Вы по-прежнему платите за машину, электричество и интернет, и она должна работать, пока люди играют.
Сколько игроков может подключиться?
По умолчанию 16. Можно задать больше, но тогда игроки увидят в списке серверов предупреждение о производительности. Наши планы рассчитаны на 12, 16 и 20 игроков.
Нужно ли владеть игрой, чтобы запустить сервер?
Для установки нет. Для подключения игра нужна игрокам.
Какие порты использует сервер Nuclear Option?
UDP 7777 для игры и UDP 7778 для запросов, оба можно изменить в DedicatedServerConfig.json. Удалённые команды, если вы их включите, по умолчанию используют TCP 7779.
Можно ли добавить миссии из Steam Workshop?
Да. Добавьте их ID из Workshop в MissionRotation в группу Workshop или, на PlayNHost, вставьте их в Миссии Мастерской на вкладке Мастерская. Сервер скачает их сам.