見えない見守り役、そして理由をきちんと伝えるBAN 👁️
少し前、このブログで子どもにやさしい設計について書きました。通報、フィードバック、そして見守る目。正直に言うと、見守る目がいちばん弱い部分でした。通報を受け取ることはできるのに、ワールドで実際に何が起きているのかを見ることは、ほとんどできなかったのです。そこで、ふたつの柱で改善に取り組んできました。見守りのための観察者モードと、対象になったプレイヤーにようやく状況をきちんと伝える、全面的に作り直したBANのしくみです。
観察者モード。通報が来たとき(「だれかがおかしなものを建てている」「だれかが意地悪なことを書いている」)、私たちはそのワールドを邪魔せずに入れるようになりました。しかも本当に見えません。改造したゲームなら簡単に無視できる「描画しないでね」ではありません。サーバーは、観察者がいることをほかのプレイヤーにいっさい伝えません。アバターも、停めた船も、使用中の着陸パッドも、降下のアニメーションも、ペットも、スピーダーも、埋まったプレイヤー枠も、プレイヤー数の変化もありません。そのワールドのみんなにとって、文字どおりだれもいないのです。飛行は壁をすり抜けられます(そうでないと、封鎖された基地には入れません)。生き物は観察者を無視し、撃つこともそもそもできません。
見るということは、見るだけ。観察者は、ワールドのものに触れてはいけません。ただし例外がちょうどひとつ。ブロックを掘ることはできます。それが、不快な建築物をワールドから実際に取り除く唯一の手段で、取り除いたものはひとつ残らず記録されます。チャットでは観察者は発言できず、わざと姿を見せるには別のコマンドが必要です。そして画面には、ずっと「SPECTATOR」のバッジが出ています。ふつうに遊んでいると思いちがいをすることは、絶対にあってはなりません。
なぜここまで厳しくつくったのか。外から見えないけれど、私たちには大切だった決定がふたつあります。ひとつめ。観察者の役割はセーブデータに保存されません。参加のたびに、サーバーの設定から計算し直されます。セーブはダウンロードして、別の場所に再アップロードできます。保存された監督者の役割がいっしょについていくと、私たちの持ち物ではないマシンにまで行ってしまいます。ふたつめ。これはワールドのオプションではありません。ワールドの持ち主が、そのワールドへの見守りをオフにできてはいけないからです。だから、ワールドでもともとデフォルトでオフになっている「管理者チート」の設定とも、結びつけていません。
何がどこで起きたかを見つける。そのために、新しいコマンドがあります。/playersは、だれがオンラインか、そしてこのワールドで遊んだことのある全員を表示します。/buildsは、だれかが建てた場所を表示します。/whereは、プレイヤーのところへ案内します。/gotoは、惑星をまたいでもジャンプできます(古いテレポートは座標を設定するだけで、違う惑星に落としていました🙈)。さらに、管理パネルの概要ページは、ワールドのセーブから直接読み取ります。プレイヤー、構造物、そして「建築ホットスポット」。基地コアなしで、何もないところに置かれた家も、これで見つかります。そして変更されたすべてのセルが、だれが、いつ最後に触ったかを覚えるようになりました。組み込む前に、ストレージの負担を測りました。データベースに行は1行も増えません。保存はもともとセルごとだからです。
プライベートなワールドにも、二重の鍵つきで。最初のバージョンには、ばかげた穴がありました。見えない観察者が入れるのは、公開されたパスワードなしのワールドだけで、それはまさに、いちばん何も起きない場所でした。子どもたちはほとんどいつも、パスワードを友だちの輪の中で回すプライベートなワールドで遊びます。そこで、見守りはそうしたワールドにも届くようになりました。それが裏口にならないように、アクセスは二重にロックされています。秘密のコードを示さないと作れないオペレーターアカウントが必要で、さらにそのための専用のプレイヤー名も必要です。この名前はシステム全体で予約されていて、ほかのだれも登録することも、その名前で遊ぶこともできません。どちらか一方が欠けたら、何も起こりません。
そしてBANです。以前は、これは本当にお粗末でした。BANされたアカウントでも、ふつうにサインインできて、壁が現れるのはワールドに参加するときだけ。理由も日付も、問い合わせる方法もありませんでした。プレイヤーの側から見ると、ゲームがただ壊れていたのです。今は、サインインそのものが状況を伝え、メッセージ受信箱があります。「ワールドが削除されました(理由)」「BANは解除されました」。このメッセージは、何かが起きた瞬間に書かれます。あとになるとその情報はもう存在しません。削除されたワールドは、そう、なくなっているのですから。
追放ではなく、タイムアウト。BANは、今は基本的に一時的なもので、デフォルトは3日間です。期限が切れたタイムアウトは、すべてのチェックポイントで「BANされていない」として扱われるので、「3日間おやすみ」がいつのまにか永久追放になることはありません。それでも、記録は履歴として残ります。理由は、決まったカテゴリ(チャット、荒らし、チート、名前、その他)で、ドイツ語と英語で翻訳されて表示されます。そして人が何かを書き足した場合は、入力されたとおりそのままに表示されます。そして何よりも大切なのは、いつからまた戻ってきていいのか、その日をメッセージで伝えられることです。
ワールドの持ち主は、自分のワールドを管理できるようになりました。ワールドを持っているなら、自分のワールドに同じ手段を使えます。自分専用のBANリストがあり、私たちのものと同じくらい確実に守られます。それはアカウントを覚えていて(名前を変えても無駄です)、さらにゲーム内の名前も覚えています(アーケードのゲストにはアカウントがまったくありません)。選ぶのは、そのワールドに実際に来た人のリストからです。名前を手で入力するのは、まちがった子をブロックしてしまうもとだからです。そしてBANは次の参加にしか効かないので、キックもあります。プレイヤーは、理由つきで、自分の言語で、すぐにメニューに戻されます。メッセージは接続が閉じられる前に送られるので、改造したゲームがそれを無視して遊び続けることはできません。
わざとつくらなかったもの。BANをすり抜ける対策として思いつきやすいのは、端末の識別(「新しいアカウント、同じPC」)です。私たちはそれを見送りました。理由は3つです。USBメモリを挿したり、Windowsが大きな更新をしたりすると識別子が変わること。改造したゲームなら5分で偽装できること。同じイメージで設定された学校のパソコンは、全部同じに見えてしまうこと。さらに法律の問題があります。ドイツの法律では、端末の識別子を読み取るには同意が必要で、16歳未満の子は有効な同意ができません。見守りが、監視になってはいけません。そしてコードに書き込んだルールがもうひとつ。オペレーターのアカウント自体は、BANもキックもできません。そうしないと、内側から見守りを切ることができてしまうからです。
これらはすべてすでにコードに入っていて、次のサーバー更新で公開されます。できるだけ出番がないことを心から願っています。🌟
コメント