Czego potrzebujesz
- System operacyjny: 64-bitowy Linux lub Windows. Serwer jest dostarczany jako
NuclearOptionServer.x86_64 z plikiem RunServer.sh na Linuksie oraz jako NuclearOptionServer.exe z plikiem RunServer.bat na Windowsie.
- Sprzęt: Shockfront nie publikuje wymagań serwera (strona Steam podaje tylko to, czego potrzebuje sama gra).
- Sieć: UDP 7777 dla gry i UDP 7778 dla zapytań Steam, osiągalne z internetu. Oba porty można zmienić w konfiguracji.
- Konto Steam: niepotrzebne do pobrania serwera. Polecenie instalacji używa
+login anonymous.
- Gra: każdy gracz potrzebuje Nuclear Option na Steam, czyli gry na Windows.
Oprogramowanie serwera jest darmowe. Płacisz za maszynę, prąd i łącze, nie za oprogramowanie.
Opcja 1: hostuj samodzielnie
To działa na zapasowym komputerze, domowym serwerze lub wirtualnej maszynie w chmurze. Kroki SteamCMD pochodzą ze strony SteamCMD firmy Valve, a kroki serwera z poradnika Shockfront.
Linux (Debian lub Ubuntu)
- Zainstaluj bibliotekę potrzebną SteamCMD.
sudo apt-get install lib32gcc-s1
- Utwórz użytkownika
steam. Valve odradza uruchamianie SteamCMD jako root, a przykładowe ścieżki Shockfront zakładają użytkownika o nazwie steam.
sudo useradd -m steam
sudo passwd steam
sudo -iu steam
- Zainstaluj SteamCMD jako ten użytkownik.
mkdir ~/Steam && cd ~/Steam
curl -sqL "https://client-update.steamstatic.com/installer/steamcmd_linux.tar.gz" | tar zxvf -
- Pobierz serwer.
~/Steam/steamcmd.sh +quit
~/Steam/steamcmd.sh +force_install_dir /home/steam/NuclearOptionServer +login anonymous +app_update 3930080 validate +quit
Pierwsza linia pozwala świeżemu SteamCMD zaktualizować się przed właściwym pobieraniem. Nasz skrypt instalacyjny robi to samo, bo app_update wydane w trakcie restartu SteamCMD może się nie udać z komunikatem "Missing configuration" i mimo to wyglądać na zakończone. Sprawdź, czy istnieje /home/steam/NuclearOptionServer/steamapps/appmanifest_3930080.acf. Jeśli nie, uruchom pobieranie ponownie.
- Uruchom serwer raz.
cd ~/NuclearOptionServer
chmod +x NuclearOptionServer.x86_64 RunServer.sh
./RunServer.sh
Pierwsze uruchomienie tworzy DedicatedServerConfig.json z wartościami domyślnymi. Przy domyślnych argumentach uruchomienia logi trafiają do logs/server-<date and time>.log. Ta linia zwykle oznacza, że serwer wystartował poprawnie:
[DedicatedServerManager] Waiting for Players before loading next map
- Zatrzymaj serwer, a potem edytuj
DedicatedServerConfig.json w tym samym folderze. Klucze, które zmienia większość osób:
"ServerName": "My Nuclear Option Server",
"Password": "",
"MaxPlayers": 16,
"Port": { "IsOverride": true, "Value": 7777 },
"QueryPort": { "IsOverride": true, "Value": 7778 }
Puste Password oznacza brak hasła. Wartość Value portu jest używana tylko wtedy, gdy IsOverride ma wartość true. W przeciwnym razie serwer zostaje przy 7777 i 7778.
- Otwórz porty. Zezwól na UDP 7777 i UDP 7778 w zaporze maszyny (z ufw:
sudo ufw allow 7777/udp i sudo ufw allow 7778/udp), a następnie przekieruj oba jako UDP na routerze do tej maszyny.
- Uruchom serwer ponownie poleceniem
./RunServer.sh. Żeby działał po wylogowaniu i był aktualizowany, repozytorium Nuclear-Option-Server-Tools od Shockfront zawiera AutoUpdater z jednostkami systemd, które uruchamiają serwer i sprawdzają w Steam nowe wersje serwera. Najpierw popraw ścieżki w plikach jednostek: zakładają one SteamCMD w /usr/games/steamcmd.
- Sprawdź serwer z zewnątrz. Odpytaj swój publiczny adres IP i port query narzędziem do zapytań serwerów Steam albo poszukaj nazwy serwera na liście serwerów w grze.
Windows
- Pobierz SteamCMD z
https://client-update.steamstatic.com/installer/steamcmd.zip i rozpakuj do folderu takiego jak C:\steamcmd.
- W wierszu poleceń:
cd C:\steamcmd
steamcmd +force_install_dir C:\NuclearOptionServer +login anonymous +app_update 3930080 validate +quit
- W
C:\NuclearOptionServer uruchom RunServer.bat albo wystartuj serwer ręcznie poleceniem NuclearOptionServer.exe -logFile server.log -limitframerate 30.
- Zatrzymaj go i edytuj
DedicatedServerConfig.json tak jak w kroku 6 dla Linuksa. Na Windowsie zapisz MissionDirectory jako pełną ścieżkę z ukośnikami w przód, na przykład "C:/Games/NuclearOption-Missions".
- Zezwól na przychodzący ruch UDP 7777 i 7778 w Zaporze Windows i przekieruj oba porty na routerze.
Inne ustawienia w DedicatedServerConfig.json
Hidden: true ukrywa serwer na publicznej liście serwerów.
ModdedServer: ustaw na true, jeśli używasz modów po stronie serwera, które zmieniają rozgrywkę.
BanListPaths: pliki z identyfikatorami SteamID graczy, którzy nie mogą dołączyć. Domyślnie jest to ban_list.txt obok serwera.
MissionRotation: misje, przez które serwer przechodzi cyklicznie. Każdy wpis ma Key (Group i Name) oraz MaxTime w sekundach. Domyślna rotacja to wbudowane misje Escalation i Terminal Control, po dwie godziny każda.
RotationType: 0 odtwarza rotację po kolei, 1 wybiera losowo z możliwością powtórzeń, 2 tasuje i gra każdą misję, zanim potasuje ponownie.
VoteKick: domyślnie włączone. Gracz wyrzucony głosowaniem może wrócić, gdy zacznie się następna misja. AutoBanThreshold (domyślnie 3) to liczba razy, ile gracz może zostać wyrzucony głosowaniem, zanim dostanie automatyczny, stały ban.
DisableErrorKick: serwer wyrzuca graczy powodujących błędy, chyba że ma tu wartość true.
Własne misje i misje Workshop
- Misje Workshop: dodaj wpis z
"Group": "Workshop" i identyfikatorem elementu Workshop jako Name. Serwer pobiera ją przy starcie do steamapps/workshop/content/2168680/ i dba o jej aktualizację.
- Własne misje: użyj
"Group": "User". Serwer ładuje <MissionDirectory>/<name>/<name>.json, więc nazwa folderu musi dokładnie pasować do nazwy pliku JSON, a MissionDirectory musi być pełną ścieżką.
Zdalne polecenia
W naszych testach serwer nie reagował na polecenia wpisywane w jego konsoli. Shockfront oferuje zamiast tego zdalne polecenia przez TCP: uruchom serwer z -ServerRemoteCommands (port 7779, chyba że podasz inny) i wysyłaj polecenia takie jak send-chat-message lub reload-config we własnym formacie opisanym na ich stronie ServerCommands. To samo repozytorium zawiera też webowy ServerControlPanel.
Opcja 2: hostuj na PlayNHost
Wynajem eliminuje zaporę, przekierowanie portów i rutynę aktualizacji. Porty i plik konfiguracyjny są ustawione za ciebie.
- Wybierz plan. Otwórz stronę hostingu serwerów Nuclear Option i porównaj plany (w chwili pisania WINGMAN, SQUADRON i INTERCEPTOR, na 12, 16 i 20 graczy). Kliknij Utwórz serwer przy WINGMAN lub SQUADRON albo Dostosuj plan przy INTERCEPTOR i dokończ zamówienie. Ceny się zmieniają, więc sprawdź je na tej stronie.
- Poczekaj na instalację. Dostaniesz e-mail "serwer gotowy", a serwer pojawi się na panel.playnhost.com. Na karcie Console panel uznaje serwer za uruchomiony, gdy wypisze
[DedicatedServerManager] Waiting for Players before loading next map.
- Otwórz Ustawienia, a potem Ustawienia gry. Te pola są zapisywane do
DedicatedServerConfig.json przy każdym starcie serwera:
- Nazwa serwera: nazwa na liście serwerów, do 30 znaków.
- Hasło serwera: hasło do dołączania. Każdy nowy serwer dostaje własne losowe hasło zamiast wspólnego domyślnego. Wyczyść to pole, jeśli każdy ma móc dołączyć.
- Maks. graczy: zaczyna od liczby graczy w twoim planie.
- Serwer z modami: ustaw na
true tylko wtedy, gdy używasz modów po stronie serwera, które mogą wpływać na rozgrywkę. To ustawienie samo nie instaluje żadnego moda.
- Port zapytań: drugi port serwera, używany przez listę serwerów. Jest ustawiany przy tworzeniu serwera, więc zostaw go bez zmian.
Automatyczna aktualizacja znajduje się pod Pokaż zaawansowane: jest domyślnie włączona, a serwer sprawdza wtedy w Steam nową wersję przy każdym starcie.
- Restart. Gdy panel pokaże "Zapisano. Serwer musi się zrestartować, zanim zmiany zaczną działać.", kliknij Zrestartuj teraz i poczekaj na linię gotowości.
- Dodaj misje Workshop (opcjonalnie). Otwórz kartę Workshop i dodaj identyfikatory misji w polu Misje Workshop. Panel sprawdza każdy identyfikator w Steam, a serwer pobiera misje przy następnym starcie, więc kliknij Zrestartuj, żeby zastosować. Malowań nie ma tam w ofercie: są kosmetyczne i obsługuje je gra każdego gracza.
- Dołącz. Znajdź nazwę swojego serwera na liście serwerów w grze i wpisz Hasło serwera, chyba że je wyczyściłeś.
Co nasza konfiguracja robi za ciebie
- Porty i ścieżki. Przy każdym starcie panel zapisuje twój port gry i Port zapytań w
Port i QueryPort oraz ustawia MissionDirectory na /home/container/NuclearOption-Missions. Zapisuje też ServerName, Password, MaxPlayers i ModdedServer z Ustawień gry. Ręczne zmiany tych kluczy w pliku są nadpisywane przy następnym starcie, więc zmieniaj je w Ustawieniach gry.
- Rotacja misji. Przed każdym startem nasz skrypt startowy odbudowuje
MissionRotation: najpierw Escalation i Terminal Control, potem każda misja z pola Misje Workshop, po dwie godziny każda. Wbudowane misje zawsze zostają, a ręczne zmiany w MissionRotation nie przetrwają restartu. Innych kluczy, takich jak RotationType, Hidden, VoteKick i BanListPaths, panel nie rusza. Edytuj je albo dodaj, jeśli brakuje, w DedicatedServerConfig.json w zakładce Files. Najpierw zatrzymaj serwer, a potem uruchom go ponownie.
- Console. Karta Console pokazuje log serwera. Wpisywane polecenia nie działały w naszych testach, a nasza linia startowa nie włącza zdalnych poleceń.
- Backupy. Jeśli twój plan obejmuje backupy, zrób jeden w zakładce Backupy, zanim zmienisz konfigurację ręcznie.
Hosting samodzielny czy wynajem: uczciwe porównanie
- Koszt. Samodzielnie: oprogramowanie jest darmowe, a płacisz za sprzęt, prąd i łącze albo za wirtualną maszynę w chmurze. Wynajem: miesięczna opłata zależna od planu. Zobacz aktualne plany.
- Dostępność. Samodzielnie: tak niezawodnie jak twoja maszyna, prąd i domowy internet, a serwer musi być włączony, gdy grają znajomi. Wynajem: działa na sprzęcie hostingodawcy, nie na twoim komputerze.
- Ekspozycja sieciowa. Samodzielnie: gracze łączą się z twoim publicznym adresem IP, a ty dbasz o zaporę i router. Wynajem: twój domowy adres IP nie jest w to zaangażowany.
- Potrzebne umiejętności. Samodzielnie: wiersz poleceń, przekierowanie portów, edycja JSON i rutyna aktualizacji. Jak najbardziej wykonalne i dobry sposób nauki. Wynajem: panel webowy z polami formularza.
- Aktualizacje. Samodzielnie: zatrzymaj, uruchom ponownie polecenie SteamCMD, wystartuj albo skonfiguruj AutoUpdater od Shockfront. Wynajem: Automatyczna aktualizacja instaluje nową wersję przy starcie serwera, więc po patchu kliknij Restart.
Hosting samodzielny pasuje, jeśli jakaś maszyna i tak działa cały dzień, a ty swobodnie czujesz się w sieciach. Wynajem pasuje, jeśli wolisz nie zajmować się sprzętem.
Częste problemy i rozwiązania
Serwer nie pokazuje się na liście serwerów
Przyczyna: port query jest nieosiągalny z zewnątrz albo Hidden ma wartość true.
Rozwiązanie: otwórz i przekieruj UDP 7778 (albo swój QueryPort) oprócz portu gry i przetestuj narzędziem do zapytań serwerów Steam. Poradnik Shockfront wskazuje też własny log gry na komputerze gracza, %USERPROFILE%\AppData\LocalLow\Shockfront\NuclearOption\Player.log: linia zaczynająca się od [Warn] Request Server List, fail index z twoim adresem IP i portem query oznacza, że zapytanie się nie udało.
Nie widzisz własnego serwera z tej samej sieci
Przyczyna: NAT reflection jest wyłączone na twoim routerze. Nie każdy router ma tę opcję.
Rozwiązanie: włącz ją, jeśli router ją ma, albo poproś znajomego spoza twojej sieci o sprawdzenie listy.
Serwer ignoruje twój własny port
Przyczyna: IsOverride nadal ma wartość false, więc serwer używa 7777 i 7778.
Rozwiązanie: ustaw IsOverride na true dla Port i QueryPort, a potem zrestartuj.
Własna misja się nie ładuje
Przyczyna: nazwa folderu i nazwa pliku JSON się różnią albo MissionDirectory nie jest pełną ścieżką.
Rozwiązanie: użyj <MissionDirectory>/test1/test1.json dla misji o nazwie test1. Dla misji Workshop użyj grupy Workshop, żeby serwer pobrał je sam.
Twoje zmiany w pliku konfiguracyjnym znikają (PlayNHost)
Przyczyna: klucz należy do tych, które panel zapisuje przy każdym starcie, albo to MissionRotation, które odbudowuje nasz skrypt startowy.
Rozwiązanie: zmieniaj nazwę, hasło, liczbę graczy i porty w Ustawienia gry, a misje w Misje Workshop.
Gracze widzą ostrzeżenie o wydajności przy twoim serwerze
Przyczyna: MaxPlayers jest wyższe niż 16. Według poradnika Shockfront lista serwerów w takim przypadku ostrzega graczy.
Rozwiązanie: Shockfront pozwala na więcej niż 16, ale prosi, by upewnić się, że sprzęt udźwignie dodatkowe obciążenie. Obniż MaxPlayers do 16, jeśli chcesz pozbyć się ostrzeżenia.
FAQ
Czy mogę hostować serwer Nuclear Option za darmo?
Tak. Serwer dedykowany jest darmowy na Steam i pobiera się z anonimowym logowaniem. Nadal płacisz za maszynę, prąd i internet, a serwer musi działać, dopóki ludzie grają.
Ilu graczy może dołączyć?
Domyślnie 16. Możesz ustawić więcej, ale gracze zobaczą wtedy ostrzeżenie o wydajności na liście serwerów. Nasze plany to 12, 16 i 20 graczy.
Czy muszę mieć grę, żeby uruchomić serwer?
Nie do jego instalacji. Gracze potrzebują gry, żeby dołączyć.
Jakich portów używa serwer Nuclear Option?
UDP 7777 dla gry i UDP 7778 dla zapytań, oba do zmiany w DedicatedServerConfig.json. Zdalne polecenia, jeśli je włączysz, domyślnie używają TCP 7779.
Czy mogę dodać misje ze Steam Workshop?
Tak. Dodaj ich identyfikatory Workshop do MissionRotation w grupie Workshop albo na PlayNHost wklej je w pole Misje Workshop na karcie Workshop. Serwer pobiera je sam.