Обслуговування сервера без викидання гравців
Що насправді відбувається з гравцями, коли нам треба оновити сервер? Проста відповідь була б: висмикнути вилку. Ми зробили кращу відповідь — і це одна з моїх улюблених функцій, хоча в ідеалі її майже не помічаєш.
Оголошення. Сервер може надіслати повідомлення про обслуговування в кожен запущений світ. У грі з’являється банер зі зворотним відліком: «Перезапуск сервера за 10 хвилин». Повідомлення треба закрити вручну — але лише за кілька секунд, щоб ніхто випадково не змахнув його в запалі бою.
Плавний перезапуск. Коли відлік добігає кінця, світ вимикається впорядковано: зберігається стан гри, гравці бачать пояснювальний екран прощання (а не загадкове «з’єднання втрачено»), контейнер зупиняється. Під час наступного приєднання світ прокидається вже з новою версією — збереження, звісно, нікуди не ділося.
Техніка за цим: захищена адмінська кінцева точка приймає оголошення — під захистом токена, який знає лише сервер. Якщо токен не налаштовано, функція повністю вимкнена; відкрита кінцева точка для оголошень була б запрошенням до пустощів. Для адміністраторів є також чат-команди прямо в грі та кнопка для кожного світу в адмінпанелі.
Несподіваний побічний ефект: відколи ця система існує, ми оновлюємося спокійніше — а отже, частіше. Хороші інструменти обслуговування не лише покращують обслуговування, вони покращують увесь проєкт.
Коментарі