マイクラMODメモ九条へいしの開発ノート
柱 3・サーバー運営

子どもも来る参加型サーバーを守るためにしたこと:街の保護・バックアップ・本番の入れかえ方

城壁と城門に囲まれたラクガキ街の正面と「ラクガキ街 10.10 テストサーバー OPEN!」の文字

この記事でわかること

  • 城壁の内側を守る自作プラグイン MachiGuard でしていること
  • 荒らしの記録と巻き戻しを、既存のプラグインが使えないときにどうしたか
  • 1 時間ごとのバックアップとワールドの端の決め方
  • 不具合の直しを、遊んでいる人のじゃまをせずに本番へ入れる方法

ラクガキ街は、だれでも参加できる「視聴者参加型」のサーバーです。参加型には、知らない人どうしが同じワールドに入るという楽しさがある一方で、荒らし・けんか・事故・データの消失といった心配もついてきます。見てくれている人には子どももいるので、なおさらです。

この記事では、オープンまでに用意したことと、オープンしてから足したことを、「街を守る」「データを守る」「直しを安全に入れる」の 3 つに分けて書きます。どれも特別な道具は使っておらず、ほとんどは自作の保護プラグイン「MachiGuard(街の守り)」と、日々の運用の決まりです。

街を守る:城壁の内側は「安全地帯」にした

城壁に囲まれた街を上から見た様子。中央に噴水と露店、奥にアトリエ館
城壁に囲まれた街の中心部。広場・噴水・露店・段々畑・アトリエ館があり、この内側を守っています。

街は城壁でぐるっと囲んであり、その内側を MachiGuard で守っています。最初に決めたのは次のことです。

城壁の外は、ふつうのマイクラと同じように冒険できます。「街の中は安心して集まれる場所、外は自由に遊べる場所」と分けておくと、ルールを説明するときもかんたんでした。

建物は守りつつ、空き地には自由に建てられるようにした

オープン前は、街そのものを「建築中」として守っていて、管理者以外はブロックを置いたりこわしたりできませんでした。ただ、住民の人といっしょに街を作っていく企画なので、オープンにあわせてルールを変えています。

ハロウィン仕様で大きなかぼちゃになった噴水と、まわりの赤白の露店
広場の噴水(今はハロウィン仕様)。こういう大事な場所には、ブロックを置けないようにしています。

小さな事故の芽もつんでおく

街の植え込みには、はじめスイートベリーの茂みを使っていました。ところがスイートベリーはトゲでダメージを受けます。小さい子がふみこんで体力が減っていくのは、知らないと「なぜかダメージを受ける」こわい体験になります。502 か所あった茂みを、花つきツツジ・ツツジ・ピンクの花びらに置きかえ、街を建て直すときの設計図からも外しました。

ほかにも、夜に空から襲ってくるファントムは湧かない設定にし、ファントムの素材が必要な人のために、釣りの交換所で手に入るようにしました。街の外では、ラクガキのペットは与えるダメージを 6 割に、受けるダメージを少し大きめにしています。描いた絵が強すぎて、ふつうの冒険のつりあいがくずれないようにするためです。

迷子にさせない:帰還の羽とワールドの端

子どもにとってマイクラのワールドは広すぎます。冒険に出て帰り道がわからなくなる、というのはよくあることです。そこで MachiGuard に「街へ帰る羽」を作りました。右クリックして 3 秒動かずに待つと、中央の広場へ戻れます(30 秒に 1 回)。コマンドを知らなくても使えるのがポイントです。

羽は最初、入ったときや生き返ったときに自動で配っていましたが、それで羽が増えてしまう不具合が出たので、今は広場のチェストでもらう形にしています(くわしくは 参加者が来てから見つかった「アイテムが増える」不具合)。

ワールドの広さにも上限を作りました。地上は街を中心に半径 5,000 ブロック、ネザーとエンドも半径 5,000 です。最初は 3,000 で考えていましたが、それだと冒険するには足りないと思い、5,000 にしました。広すぎると、遠くまで行った人のぶんだけワールドのデータが大きくなり、バックアップも重くなります。

荒らしに備える:記録と巻き戻し

空き地に自由に建てられるようにすると、心配になるのが荒らしです。ふつうは CoreProtect というプラグインで「だれが・いつ・どこで・何をしたか」を記録し、荒らした人の分だけまとめて元に戻します。ところが、そのときの CoreProtect はまだ 26.3 に対応しておらず、撮影用サーバーで試すと「26.3 には対応していません」と出て動きませんでした。

待っているあいだにオープンしてしまうので、同じことをする小さなしくみを MachiGuard に足しました。

あわせて、Paper にもとからある透視(X-ray)対策をオンにし、正規のアカウントだけが入れる設定と、サバイバルで空を飛ぶとはじく設定も確かめました。専用のチート対策のプラグインは入れていません。統合版の人をまちがえてはじいてしまうことがあるので、小さなサーバーではまず記録と巻き戻しを優先しました。

管理者の権限(OP)を持つのは自分だけにしています。オープン前に建築を手伝ってくれた人たちも、オープンの日に持ち物をリセットして、ほかの住民と同じ立場にしました。

データを守る:1 時間ごとのバックアップ

MachiGuard は、1 時間ごとにワールドとプラグインのデータ(ラクガキ・置物・名簿など)を zip にまとめて保存します。残すのは最新の 48 個、つまり 2 日分です。何かあっても、1 時間前までは戻せます。戻すときはサーバーを止めて、zip の中身を上書きするだけです。

ディスコードのルールには「テストサーバーなので、止まる・もどす・リセットすることがあります」と書いてあります。守りを固めても、テスト中に大きな不具合が見つかって戻すことはありえるので、先に伝えておくほうが住民の人も安心できると考えました。

ラクガキ街の広場に立つキャラクターと「マイクラ 視聴者参加型 へいしちゃんねる」の文字のバナー
チャンネルのバナー。背景はラクガキ街の広場です。

直しを安全に入れる:試してから、だれもいないときに

運営していていちばん気をつかうのは、不具合を直したプラグインを本番に入れるときです。プラグインを入れかえるにはサーバーの再起動が要り、遊んでいる人は 30 秒ほど切れてしまいます。そして、直したつもりのものが別のところをこわすこともあります。

そこで、次の流れを決まりにしました。

  1. 撮影用サーバーで試す。本番のワールドを写した別のサーバーで、直した版を動かします。ここは動画の撮影にも使っているサーバーで、本番と同じ街がそのままあります。本番には、試しのデータを入れません。
  2. 前の版の写しを取る。入れかえる前のプラグインを残しておき、何かあればすぐ戻せるようにします。
  3. だれもいないときに入れかえる。人数を見張る小さなスクリプトを動かし、だれもいない状態が 2 分ほど続いたら、自動でサーバーを止めて入れかえ、起動し直します。
  4. 起動したら確かめる。プラグインがエラーなく起動したか、入れた版が撮影用サーバーで試したものと同じかを確かめます。

実際には、みんなが寝ている深夜に入れかえが進むことが多く、遊んでいる人を途中で切らずにすみます。急いで入れたいときは、ゲームの中で予告してから再起動します。待ち役のスクリプトは、止めたあとも動き続けていないか、毎回プロセスを確かめるようにしています。一度、止めたつもりの待ち役が残っていたことがあったからです。

まとめ:守りは「ルール」と「戻せること」の 2 本立て

やってみて思うこと
  • 街の中と外でルールを分けると、守る範囲もせつめいもはっきりします。
  • 荒らしを完全に防ぐより、「だれが何をしたかわかる」「すぐ戻せる」ことのほうが、小さなサーバーでは大事でした。
  • 本番に入れる前に、同じ街が入った別のサーバーで試せることが、いちばんの安心材料です。撮影用サーバーを作っておいたことが、思わぬところで役に立ちました(撮影のしくみは 撮影レーンを 2 本にして、コマ一覧で破綻チェックする に書いています)。

サーバーの部品の組み方は Java 版と統合版がいっしょに遊べるマイクラサーバーの組み方 にまとめました。

この記事は、九条へいしが自分のサーバー「ラクガキ街」と撮影用サーバーで実際に試したことをもとに書いています。気づいたことや間違いは お問い合わせ から教えてください。