プレイヤーを追い出さないサーバーメンテナンス
サーバーを更新しなければならないとき、プレイヤーには実際に何が起こるのでしょうか。簡単な答えは、電源を抜くことでしょう。ぼくたちは、もっと良い答えを作りました。理想は、ほとんど気づかれないことですが、ぼくのお気に入りの機能のひとつです。
お知らせ。サーバーは、動いているすべての世界にメンテナンスのメッセージを送れます。するとゲームの中に、カウントダウン付きのバナーが表示されます。「サーバーを10分後に再起動します」。このメッセージは自分で閉じる必要がありますが、数秒たってからでないと閉じられません。戦いの真っ最中に、うっかりクリックして消してしまわないためです。
おだやかな再起動。カウントダウンが終わると、世界は順番どおりに終了します。ゲームの状態を保存し、プレイヤーには意味不明な「接続が切れました」ではなく、わけを説明するお別れ画面を出し、コンテナを止めます。次に参加したとき、世界は新しいバージョンで目を覚まします。もちろん、セーブはそのまま残っています。
裏の技術:保護された管理用エンドポイントがお知らせを受け取ります。サーバーだけが知っているトークンで守られています。トークンが設定されていなければ、この機能はまるごとオフです。開いたままのお知らせエンドポイントは、いたずらを招くようなものですから。管理者向けには、ゲーム内のチャットコマンドと、管理パネルの世界ごとのボタンもあります。
思わぬ副作用もありました。このしくみができてから、ぼくたちはおちついて更新できるようになり、そのぶん更新の回数も増えました。良いメンテナンスのツールは、メンテナンスだけでなく、プロジェクト全体を良くしてくれます。
コメント