Konserwacja serwera bez wyrzucania graczy
Co właściwie dzieje się z graczami, gdy musimy zaktualizować serwer? Prosta odpowiedź brzmiałaby: wyciągnąć wtyczkę. Zbudowaliśmy lepszą — i to jedna z moich ulubionych funkcji, choć idealnie powinno się jej prawie nie zauważać.
Zapowiedź. Serwer może wysłać komunikat o konserwacji do każdego działającego świata. W grze pojawia się wtedy baner z odliczaniem: „Restart serwera za 10 minut.” Komunikat trzeba aktywnie zamknąć — ale dopiero po kilku sekundach, żeby nikt nie kliknął go przypadkiem w ferworze walki.
Łagodny restart. Gdy odliczanie dobiegnie końca, świat wyłącza się w uporządkowany sposób: zapisuje stan gry, odsyła graczy z ekranem pożegnalnym z wyjaśnieniem (zamiast tajemniczego „utracono połączenie”), zatrzymuje kontener. Przy następnym dołączeniu świat budzi się już w nowej wersji — zapis oczywiście nadal jest.
Technika za tym: Zabezpieczony punkt administracyjny przyjmuje zapowiedzi — chroniony tokenem, który zna tylko serwer. Jeśli nie skonfigurowano tokena, funkcja jest całkowicie wyłączona; otwarty punkt zapowiedzi byłby zaproszeniem do psikusów. Dla administratorów są dodatkowo komendy czatu prosto w grze i przycisk dla każdego świata w panelu administratora.
Nieoczekiwany efekt uboczny: odkąd ten system istnieje, robimy aktualizacje spokojniej — a przez to częściej. Dobre narzędzia do konserwacji nie tylko poprawiają konserwację, ale cały projekt.
Komentarze