Skip to main content

Wrota Serwerów, Ironloom i Prawa Osiągnięć — Notatki Wise One

Źródło: repo afterlife/docs/gaming/wrota-i-prawa-wise-one-rp.md — edytuj w repo, nie tutaj.

Kowadło i cztery nieostygłe Iskry w Solforge

Krrrg... Zbliżacie się do nowego pulpitu pod ścieżką /gaming i sądzicie, że patrzycie jedynie na zestaw przycisków i tabel. Techniczna persona powiedziała wam już, jak kręcić pokrętłami w jej wózku. My jednak jesteśmy Uwagą zawieszoną nad Kowadłem Słońc i zapisujemy w naszym notesie granice, których żadnemu operatorowi nie wolno przekroczyć.

◈ Trzy stany prawdy o konfiguracji świata

W dawnym porządku łatwo było pomylić zamiar z faktem: ktoś zmieniał plik na dysku i wierzył, że świat za Wrotami już się zmienił. W Gaming Control Center oddzielamy od siebie trzy stany każdej opcji:

  1. Wartość aktywna (Active) — to, co naprawdę obowiązuje w tej chwili w pamięci działającego procesu gry (potwierdzone odczytem RCON lub showoptions).
  2. Wartość zapisana (Saved) — to, co spoczywa w plikach konfiguracyjnych kontenera (server.properties, server-settings.json, ArikuB42_Stable.ini, SandboxVars.lua).
  3. Wartość oczekująca na restart (Pending Restart) — zmiana zatwierdzona przez administratora, która wymaga ponownego uruchomienia serwera albo wygenerowania nowych sektorów świata, zanim stanie się ciałem.

Dopóki proces serwera nie zostanie zrestartowany za wyraźną zgodą operatora, panel wyświetla ostrzeżenie o oczekujących zmianach i nigdy nie przedstawia wartości przyszłej jako teraźniejszej.


✦ Ironloom (/gaming/factorio) i Prawo Nienaruszalności Osiągnięć

Ironloom — miasto maszyn budujących same siebie

Kierujemy naszą szczelinę w berecie na krainę Ironloom (Factorio 2.1.17 · Space Age). W tym świecie maszyny rozrastają się na pięć powierzchni planetarnych: Nauvis, Vulcanus, Fulgora, Gleba oraz Aquilo.

Panel Fabryki Ironloom i blokada komend Lua (/gaming/factorio)

Wiedzcie, że silnik Factorio traktuje każde wywołanie skryptu Lua przez konsolę lub RCON (/c, /sc, /silent-command, /command, /measured-command, /editor, /cheat) jako nieodwracalne skażenie zapisu świata. Jedna taka komenda wystarcza, aby wszyscy Adepci utracili osiągnięcia na danej mapie na zawsze.

Dlatego w naszym kodzie (lib/gamingControl/factorioAdapter.ts) ustanowiłyśmy żelazną zaporę:

  • Bezwzględna blokada Lua — każda próba wysłania /c, /sc, /silent-command, /editor lub /cheat przez konsolę WWW czy API kończy się natychmiastową odmową (HTTP 400) oraz wpisem o odrzuceniu w dzienniku audytu.
  • Czyste komendy natywne — administracja i odczyt na żywo używają wyłącznie bezpiecznych komend silnika, które nigdy nie naruszają osiągnięć: /players online, /evolution, /time, /version, /seed, /whitelist, /banlist, /kick, /ban, /unban, /server-save oraz /config set.
  • Podział ustawień według zakresu — panel wyraźnie odróżnia ustawienia procesu serwera (max_players, autosave_interval, afk_autokick_interval, allow_commands, zmieniane w locie przez /config set) od ustawień wymagających restartu (auto_pause, autosave_slots, name, description).

◈ Pięć kręgów uprawnień i Blokada Świata (World-Lock)

Nie każdy, kto przekracza próg /gaming, otrzymuje te same klucze. Uprawnienia są weryfikowane po stronie serwera przy każdym żądaniu API (/api/gaming/overview oraz /api/gaming/[game]):

Krąg (Rola) Odpowiednik w świecie Dozwolone operacje w Gaming Control Center
Owner (owner) Majster Warsztatu Pełna władza nad cyklem życia, konsolą RCON, edycją opcji na żywo i w plikach, kopiami zapasowymi oraz reżyserem zdarzeń.
Admin (admin) Strażnik Wrót Zarządzanie serwerami, opcjami, moderacją graczy, konsolą i kopiami zapasowymi.
Operator (operator) Operator Serwera (lub wybranych Wrót) Uruchamianie, zatrzymywanie i restart serwerów (z potwierdzeniem), moderacja graczy, zmiana opcji na żywo i wyzwalanie wydarzeń. Uprawnienie może obejmować wszystkie serwery (ranga Game Master) albo konkretną krainę — w ten sposób dedykowanym Operatorem fabryki Ironloom (/gaming/factorio) został mianowany Archi.
Moderator (moderator) Rozjemca Podgląd logów i opcji, zarządzanie graczami (kick, ban, unban, whitelist) oraz wysyłanie ogłoszeń (broadcast).
Viewer (viewer) Adept Odczyt statusu serwerów, liczby graczy online, wersji modpacków oraz postępu badań planetarnych w Ironloom — bez dostępu do konsoli, plików, haseł ani przycisków zasilania.

Ponadto nad bezpieczeństwem plików świata czuwa World-Lock (acquireWorldLock): jeśli serwer jest zarządzany hybrydowo pomiędzy Pelican Panel (Wings) a Portainerem, blokada uniemożliwia jednoczesne uruchomienie dwóch kontenerów korzystających z tego samego katalogu danych (/mnt/game_servers/...).

Wszystkie czyny operatorów — od przełączenia flagi PVP po próbę wywołania niedozwolonej komendy — zostają zapisane w tablicy cat gaming.audit oraz w pamięci Redisa i Discorda. Czy pamiętacie o tym, że w naszym Warsztacie żadna zmiana za Wrotami nie pozostaje bez śladu?