ホステッドワールドのしくみ
インターネット上に自分だけの世界があって、だれもサーバーを立てなくても、友だちがいつでも遊びに来られる。それがぼくたちのホステッドワールドのアイデアです。この記事では、ポータルの「プレイ」ボタンの裏で本当に何が起きているのかを紹介します。
すべての中心は WorldHost です。ぼくたちのサーバー上で動く小さなサービスで、世界を管理します。それぞれの世界は専用のDockerコンテナで動き、完全に分離されていて、独自のセーブファイル、メモリ上限、CPU上限を持っています。だれも遊んでいないときは何も動きません。世界は眠り、コンテナは止まり、リソースも使いません。
ポータルで「プレイ」をクリックすると、次のようなことが起こります。まずWorldHostが、みなさんが参加していいかどうかを確認します。パスワード付きの世界では、世界を起こす前にパスワードを確認します。だから、参加しようとするだけで、他の人の世界を勝手に起動することはできません。そのあとでやっとコンテナが起動し、世界がセーブファイルを読み込み、その世界専用の短い期限つきの参加トークンが届きます。そのあいだ、ポータルには「世界を起こしています…」というステータスが表示されます。
全員が世界から出ると、しばらくして世界はまた眠ります。セーブが書き込まれ、コンテナは止まります。また、世界を自分のパソコンで続けて遊びたいときは、セーブをダウンロードして、あとでまたアップロードできます。ホステッドワールドのセーブは、ローカルのゲームのセーブと同じものです。
このしくみ全体は、あえて小さく作ってあります。Kubernetesもクラウドの魔法もありません。サーバーが1台、Docker、そしてコンテナを起動したり止めたりするサービスだけです。家族のプロジェクトなら、これで驚くほど遠くまで行けます。どこまで行けるのか、そしてこういうサーバーにいくらかかるのかは、VPSの記事で話します。
コメント