SerweryWłasny serwerDla twórcówForumFAQDokumentacjaBezpieczeństwo
Pobierz launcher
  1. Dokumentacja
  2. Konfiguracja serwera

Przewodnik

Konfiguracja serwera

Wszystkie ustawienia z pliku server-config.json: nazwa i port, lista serwerów, relay, limity graczy, pobieranie plików i aktualizacje.

Gdzie jest plik

server-config.json leży w głównym folderze serwera, obok resources/ i admins.xml. Serwer tworzy go sam przy pierwszym uruchomieniu w pustym folderze, razem z zasobami startowymi. Serwer utworzony w launcherze dostaje gotowy plik z kluczem listy serwerów.

Plik czyta się przy starcie. Po zmianie zapisz go i uruchom serwer ponownie. Błędna wartość (np. za krótka nazwa albo port spoza zakresu) zatrzymuje start, a konsola mówi, którą opcję poprawić.

To jest JSON: nazwy i teksty w cudzysłowach "...", przecinek po każdej opcji oprócz ostatniej, true / false bez cudzysłowów. Brakujący przecinek albo nawias sprawi, że serwer nie wystartuje.

Pełny przykład

{
  "title": "Mój serwer",
  "subtitle": "Freeroam, wyścigi i drift",
  "port": 7777,
  "public_port": null,
  "max_slots": 32,
  "password": "",

  "server_id": 123,
  "server_key": "tu-klucz-z-launchera",

  "relay": true,
  "upnp": true,

  "max_ping": 300,
  "max_ping_seconds": 30,
  "require_verified_client": false,
  "launcher_skins": true,

  "disabled_resources": ["test"],
  "client_loadstring": true,
  "max_event_kb": 64,

  "http_download_url": "",
  "download_kbps": 0,

  "browser_domains": ["youtube.com"],
  "browser_devtools": false,

  "max_connections_per_ip": 8,
  "connections_per_minute": 30,
  "flood_ban_seconds": 60,

  "auto_update": true,
  "db_key": ""
}

To wszystkie opcje z wartościami domyślnymi (poza nazwą, kluczem i przykładowymi listami). null albo pusty tekst "" oznacza, że opcja nie jest używana. Nie musisz wpisywać wszystkiego: każda pominięta opcja ma wartość domyślną z tabel niżej.

Podstawowe

OpcjaDomyślnieZnaczenie
title"Serwer Trilogy Hub"Nazwa na liście serwerów, 3-40 znaków.
subtitle""Krótki opis pod nazwą, do 80 znaków.
port7777Port gry, 1024-65535. Na hostingu wpisz port przydzielony przez panel. Ten sam numer działa na TCP i UDP: otwórz (przekieruj) oba protokoły.
public_portbrakPort widziany z internetu, gdy hosting przekierowuje inny port zewnętrzny na ten z port. To on pojawia się na liście.
max_slots32Limit graczy.
password""Hasło serwera, do 64 znaków. Puste = serwer otwarty.

Nazwa i opis nie mogą zawierać znaczników HTML ani wulgaryzmów.

Hasło gracze wpisują w launcherze przy dołączaniu. Po 5 błędnych próbach czekają minutę, każde kolejne 5 wydłuża blokadę (maks. godzina). Hasło działa tylko na serwerze z server_key.

Lista serwerów

OpcjaZnaczenie
server_idNumer serwera w Trilogy Hub.
server_keyKlucz, którym serwer zgłasza się na listę.

Oba dostajesz w launcherze przy tworzeniu serwera. Bez nich serwer działa, ale nie pojawi się na liście, a gracze mogą wejść tylko po adresie IP:port.

server_key jest jak hasło do wpisu Twojego serwera na liście. Nie pokazuj go nikomu i nie uruchamiaj tego samego serwera naraz w dwóch miejscach (np. lokalnie w launcherze i na hostingu).

Połączenie i relay

OpcjaDomyślnieZnaczenie
relaytruetrue: gracze łączą się bezpośrednio, a gdy port serwera nie odpowiada z internetu, przez relay Trilogy Hub. "always": zawsze przez relay, adres IP serwera zostaje ukryty. false: bez relaya.
upnptrueSerwer sam próbuje otworzyć port na routerze (UPnP), TCP i UDP. Gdy się uda, gracze łączą się bezpośrednio.
udptrueRuch graczy (pozycje, animacje, pojazdy) idzie po UDP na tym samym numerze portu, bo zgubiony pakiet nie wstrzymuje wtedy reszty. Gdy UDP jest zablokowane, gracz po kilku sekundach sam przechodzi na TCP. false wyłącza UDP. Przez relay ruch zawsze idzie po TCP.
admissionwłączone w launcherzeOchrona przed przeciążeniem. Gdy komputer z serwerem nie nadąża (CPU, pamięć, opóźnienie serwera albo spadek FPS gry hosta), nowi gracze z zewnątrz czekają w kolejce i wchodzą sami, gdy obciążenie spadnie. Gracze, którzy już grają, i gracz z tego samego komputera wchodzą zawsze. Na hostingu włączysz ją przez {"enabled": true}.

Dzięki relayowi na serwer postawiony w domu da się wejść bez przekierowania portów i bez programów typu Hamachi.

Gracze

OpcjaDomyślnieZnaczenie
max_ping300Najwyższy dozwolony ping w ms. 0 wyłącza limit.
max_ping_seconds30Przez ile sekund ping może być za wysoki, zanim serwer wyrzuci gracza.
require_verified_clientfalsetrue wpuszcza tylko graczy z potwierdzonym urządzeniem (zalogowanych w launcherze).
launcher_skinstruefalse: gracze wchodzą jako CJ, bez stroju wybranego w launcherze.

Zasoby i skrypty

OpcjaDomyślnieZnaczenie
disabled_resources[]Zasoby, które NIE startują razem z serwerem, np. ["test", "stary_tryb"]. Reszta z resources/ rusza sama. Wyłączony zasób uruchomisz komendą start <nazwa>.
client_loadstringtruefalse wyłącza load / loadstring w skryptach klienta. Na serwerze działają zawsze. Bezpieczniej, gdy zasoby nie kompilują kodu u graczy.
element_data_client_changes"allow""deny": skrypty klientów nie zmienią żadnych danych elementów (setElementData u klienta jest odrzucane, serwer dostaje onPlayerChangesProtectedData). Pojedyncze klucze: piąty argument setElementData.
max_event_kb64Największy rozmiar argumentów zdarzenia od gracza (triggerServerEvent) w kilobajtach. Większe zdarzenie serwer odrzuca.

Pobieranie plików

OpcjaDomyślnieZnaczenie
http_download_urlbrakAdres serwera WWW z plikami zasobów. Gracz pobiera <adres>/<zasób>/<plik> z tego serwera zamiast z serwera gry.
download_kbps0Limit prędkości pobierania plików z serwera gry na gracza, w KB/s. 0 = bez limitu.

Pliki z http_download_url są sprawdzane sumą kontrolną. Gdy plik się nie pobierze albo różni się od tego na serwerze, gracz dostaje go z serwera gry, więc źle ustawiony adres nie blokuje wejścia.

Przeglądarka w grze

OpcjaDomyślnieZnaczenie
browser_domains[]Domeny, które zasoby mogą otwierać w przeglądarce w grze, np. ["youtube.com", "moja-strona.pl"]. Subdomeny też. Gracz i tak musi się zgodzić (requestBrowserDomains).
browser_devtoolsfalsetrue pozwala otwierać narzędzia deweloperskie przeglądarki (toggleBrowserDevTools).

Ochrona przed zalewem połączeń

OpcjaDomyślnieZnaczenie
max_connections_per_ip8Ile połączeń naraz może mieć jeden adres IP.
connections_per_minute30Ile nowych połączeń na minutę przyjmie serwer z jednego adresu IP.
flood_ban_seconds60Na ile sekund serwer blokuje adres, który przekroczył limit.

Wartości domyślne pasują do większości serwerów. Podnieś je, gdy wielu graczy wchodzi spod jednego adresu (np. kawiarenka albo akademik).

Aktualizacje i bazy danych

OpcjaDomyślnieZnaczenie
auto_updatetrueSerwer co 15 minut sprawdza nowe wersje i instaluje je, gdy nikt nie gra. Zasobów i konfiguracji nie rusza. false wyłącza aktualizacje.
db_keybrakKlucz do zaszyfrowanego pliku databases.json.enc z danymi połączeń MySQL (zamiast tego można ustawić zmienną środowiskową TH_DB_KEY).

Każda aktualizacja jest podpisana przez Trilogy Hub, a serwer odrzuca plik bez poprawnego podpisu. Gdy na serwerze cały czas są gracze, nowa wersja czeka do 2 godzin, a potem wchodzi z odliczaniem na czacie. Jeśli nowa wersja nie wstanie, serwer sam wraca do poprzedniej.