Gaming Control Center — Wrota Serwerów

Zintegrowane centrum zarządzania serwerami gier na ariku.pl/gaming: Nidarel (Minecraft ATM10), Ironloom (Factorio Space Age) oraz Project Zomboid (Build 42).

Gaming Control Center (/gaming) — Pulpit Sterowniczy Orin

Źródło: repo afterlife/docs/gaming/centrum-kontroli-orin-rp.md — edytuj w repo, nie tutaj.

Orin przy panelu kontrolnym serwerów

Dzyń, dzyń! Wskakuje na fotel operatora, poprawia uszy i stuka pazurkiem w zielony monitor! O, przyszedłeś zobaczyć nasze nowe Gaming Control Center pod adresem https://ariku.pl/gaming, nyah~? Rozgość się! Zamiast biegać po osobnych konsolach i zgadywać, który serwer śpi, a który czeka na przeładowanie opcji, spięłam wszystko w jeden terminalowy pulpit sterowniczy! macha dwoma ogonami

Z tego miejsca możesz jednym rzutem oka sprawdzić stan naszych trzech głównych światów, a jeśli masz uprawnienia Operatora lub Majstra, sterować cyklem życia serwerów, zarządzać whitelistą, zmieniać opcje na żywo bez restartu i puszczać wydarzenia w hrabstwie Knox!


Widok główny (/gaming) — trzy światy na jednej tablicy

Podgląd głównego ekranu Gaming Control Center (/gaming)

Na górnym pasku Stan Centrum Gier od razu widzisz cztery najważniejsze wskaźniki:

  1. Serwery główne — ile z trzech głównych serwerów (Nidarel, Ironloom, Knox County) aktualnie działa i ilu graczy jest w środku.
  2. Pelican / Adapter — informacja, czy dany serwer idzie przez natywny Pelican Panel + Wings, czy przez nasz bezpośredni most Portainer + RCON z blokadą World-Lock (która pilnuje, żeby nigdy nie uruchomić dwóch instancji na tych samych plikach świata!).
  3. Twoja rola — rozpoznana na podstawie twojego konta Discord oraz grafu uprawnień w Lemurii (OWNER, ADMIN, OPERATOR, MODERATOR albo VIEWER).
  4. Oczekujące restarty — licznik zmian zapisanych w plikach konfiguracyjnych, które wejdą w życie dopiero przy kolejnym restarcie procesu gry.

Nidarel (/gaming/minecraft) — All the Mods 10 i bezbłędna whitelista

Panel administracyjny Nidarelu (/gaming/minecraft)

W zakładce $ ./minecraft (Nidarel ATM10) pilnuję naszych podziemnych kuźni na paczce All the Mods 10 v8.2 (Minecraft 1.21.1, NeoForge 21.1.251):


Project Zomboid (/gaming/zomboid) — 12 kategorii opcji na żywo i Reżyser Zdarzeń

Orin w serwerowni wśród kabli i terminali

To najbardziej rozbudowana część mojego pulpitu, nyah~! Dla serwera Project Zomboid Build 42.19 (ArikuB42_Stable) zbudowałam graficzny edytor podzielony na 12 logicznych sekcji:

  1. Zasady serwera (PublicName, PublicDescription, ServerWelcomeMessage, Open, MaxPlayers, PauseEmpty, GlobalChat),
  2. PvP i bezpieczeństwo (PVP, SafetySystem, PVPMeleeDamageModifier, PVPFirearmDamageModifier, PlayerSafehouse, SafehouseAllowLoot),
  3. Sen i regeneracja (SleepAllowed, SleepNeeded, FastForwardMultiplier),
  4. Zombie i ich zachowanie (Zombies, ZombieRespawn, ZombieMigrate),
  5. Loot i ekonomia (FoodLootNew, WeaponLootNew, RangedWeaponLootNew, HoursForLootRespawn),
  6. Pojazdy (SpeedLimit, CarEngineAttractionModifier, DisableVehicleTowing),
  7. Żywność, woda i prąd (WaterShutModifier, ElecShutModifier, Nutrition),
  8. Śmierć i respawn (AnnounceDeath, PlayerRespawnWithSelf),
  9. Budowanie i interakcje (NoFire, AllowDestructionBySledgehammer),
  10. Mapa, pogoda i świat (DayLength, MapRemotePlayerVisibility),
  11. Mody i Steam Workshop (DoLuaChecksum, Mods, WorkshopItems),
  12. Administratorzy, Anti-Cheat i Voice (VoiceEnable, SteamVAC, PingLimit).

Edytor opcji i Reżyser Zdarzeń Project Zomboid (/gaming/zomboid)

Jak działa 10-krokowe zastosowanie zmian na żywo?

Kiedy zmienisz w tabeli np. PVP, SpeedLimit albo MaxPlayers, panel nie wysyła zmian w ciemno:

  1. Najpierw pokazuje żółty pasek Podgląd zmian przed zastosowaniem (Diff Preview) z dokładnym porównaniem stara wartość → nowa wartość oraz plakietką trybu (NA ŻYWO (changeoption), PRZYSZŁE ZDARZENIA / SEKTORY lub WYMAGA RESTARTU).
  2. W każdej chwili możesz kliknąć Anuluj edycję i wrócić do stanu wyjściowego.
  3. Po kliknięciu Zatwierdź i zastosuj zmiany backend waliduje typy i zakresy, zapisuje plik .ini lub SandboxVars.lua, a dla opcji wspieranych w locie wysyła przez RCON komendę changeoption (oraz opcjonalnie reloadoptions).
  4. Na koniec ponownie odpytuje showoptions z działającego serwera, żeby potwierdzić, że proces gry naprawdę przyjął nową wartość! Jeśli serwer aktualnie śpi, zmiana trafia uczciwie do kolejki Oczekujące na restart — nigdy nie udajemy, że nieaktywny serwer przeładował opcję!

Reżyser Zdarzeń i Pogody (./pz-director)

Chcesz podkręcić atmosferę ocalałym w hrabstwie Knox, nyah~? Jednym kliknięciem w karcie Reżyser Zdarzeń i Pogody możesz wywołać:

Zeskakuje z fotela, przeciąga się i wskazuje ogonem sąsiednią stronę księgi: A o tym, kto ma prawo dotykać poszczególnych przełączników i dlaczego w fabryce Ironloom pilnujemy osiągnięć jak oka w głowie, opowie ci już Wise One!

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 nasze szmaragdowe spojrzenie 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ę:


◈ 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?