- Dokumentacja
- 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
| Opcja | Domyślnie | Znaczenie |
|---|---|---|
title | "Serwer Trilogy Hub" | Nazwa na liście serwerów, 3-40 znaków. |
subtitle | "" | Krótki opis pod nazwą, do 80 znaków. |
port | 7777 | Port 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_port | brak | Port widziany z internetu, gdy hosting przekierowuje inny port zewnętrzny na ten z port. To on pojawia się na liście. |
max_slots | 32 | Limit 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
| Opcja | Znaczenie |
|---|---|
server_id | Numer serwera w Trilogy Hub. |
server_key | Klucz, 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
| Opcja | Domyślnie | Znaczenie |
|---|---|---|
relay | true | true: 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. |
upnp | true | Serwer sam próbuje otworzyć port na routerze (UPnP), TCP i UDP. Gdy się uda, gracze łączą się bezpośrednio. |
udp | true | Ruch 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. |
admission | włączone w launcherze | Ochrona 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
| Opcja | Domyślnie | Znaczenie |
|---|---|---|
max_ping | 300 | Najwyższy dozwolony ping w ms. 0 wyłącza limit. |
max_ping_seconds | 30 | Przez ile sekund ping może być za wysoki, zanim serwer wyrzuci gracza. |
require_verified_client | false | true wpuszcza tylko graczy z potwierdzonym urządzeniem (zalogowanych w launcherze). |
launcher_skins | true | false: gracze wchodzą jako CJ, bez stroju wybranego w launcherze. |
Zasoby i skrypty
| Opcja | Domyślnie | Znaczenie |
|---|---|---|
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_loadstring | true | false 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_kb | 64 | Największy rozmiar argumentów zdarzenia od gracza (triggerServerEvent) w kilobajtach. Większe zdarzenie serwer odrzuca. |
Pobieranie plików
| Opcja | Domyślnie | Znaczenie |
|---|---|---|
http_download_url | brak | Adres serwera WWW z plikami zasobów. Gracz pobiera <adres>/<zasób>/<plik> z tego serwera zamiast z serwera gry. |
download_kbps | 0 | Limit 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
| Opcja | Domyślnie | Znaczenie |
|---|---|---|
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_devtools | false | true pozwala otwierać narzędzia deweloperskie przeglądarki (toggleBrowserDevTools). |
Ochrona przed zalewem połączeń
| Opcja | Domyślnie | Znaczenie |
|---|---|---|
max_connections_per_ip | 8 | Ile połączeń naraz może mieć jeden adres IP. |
connections_per_minute | 30 | Ile nowych połączeń na minutę przyjmie serwer z jednego adresu IP. |
flood_ban_seconds | 60 | Na 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
| Opcja | Domyślnie | Znaczenie |
|---|---|---|
auto_update | true | Serwer co 15 minut sprawdza nowe wersje i instaluje je, gdy nikt nie gra. Zasobów i konfiguracji nie rusza. false wyłącza aktualizacje. |
db_key | brak | Klucz 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.