Minecraftのtext-filtering-configについて
記事の目次
この記事は RICORA Advent Calendar 2022の4日目の記事です。
背景
1年ぐらい前に、YouTubeのスパムチャットによるチャンネル凍結(Channel BAN)の事例を知りました。それは コメントを配信画面内に流しているチャンネルを狙い、スパムコメントを投稿してチャンネルを凍結させるものでした。
「もしかして、それはゲーム内チャットでも攻撃として通ってしまうんじゃないか?対策はないのか?」と思い、調べたところ、
Minecraftではその手の設定っぽいものを見つけることができました。今回の「text-filtering-config
」です。
しかしながら、技術的解説をしているのは、walshy氏の記事があるのみでした。
この記事では、walshy氏の記事をもとに、いろいろしてみてわかったことをまとめようと思います。
前提
これは公式の情報ではありません。したがって、この記事に書いてある情報が正しいとは限りません。今回の実験で使用したMinecraftのバージョンは、1.19です。したがって、ゲーム本体的には「Minecraft 1.19が動作すること」となります。 実験自体はに、MinecraftでアカウントBANが実装されたころに行いました。(参考:[2])
text-filtering-configとは
text-filtering-configの設定内容
text-filtering-config
は、Minecraft 1.16.4にてしれっと追加された、サーバーの設定項目です。
追加されて以後、使い方が記されていませんでしたが、walshy氏の記事「MC's new secret text filtering!」にて
その詳細を知ることができました。
text-filtering-config
の設定項目は、次の構造のJSONオブジェクトです。
具体的な内容は、次のリスト1です。(ref:1:Walshy氏の記事からの情報を含みます。)
APIエンドポイントに求められるもの
text-filtering-config
が正しく設定されていると、apiServer
に指定されたサーバーあてに、HTTPでリクエストが送られます。
以下に説明を書きます。
POST /v1/chat
/v1/chat
は、最も基本となるエンドポイントです。
チャット(say, me), ささやき(msg, tm, w)、看板の書き込み、本への書き込みに対して 使用されるエンドポイントです。tellrawコマンドと、アイテムの名前変更については使用されていません。 また、サーバーコンソールからのチャット・ささやき送信はフィルターされないようです。
看板は、内容編集を終了するとき、各行毎にエンドポイントを呼び出します。
本への書き込みについては、編集後に本を閉じるたびに、ページごとにエンドポイントを呼び出します。
例:Minecraft (Java) IDがPC9801の人が、testとチャットした。
テストプログラムはPHPで作成したため、ヘッダー情報は略します。テキストエンコードはUTF-8です。
{"rule":1,APIエンドポイントは、リクエストが送られてから2秒未満で反応を返す必要があります。(実験の結果、待ち時間が2秒以上となると無視されました。)
HTTPレスポンスヘッダに、Content-type: application/json;
を含む必要があります。
レスポンスボディは、次のようなJSONです。
{"response": true, "hashed": "test", "hashes":[]}POST /v1/join
何を返すべきか不明。入室通知。未検証。
POST /v1/leave
何を返すべきか不明。退室通知。未検証。
参考文献
- 「MC's new secret text filtering!」 by walshy
- 「Dedicated server text filter does not apply to all text」, (Mojang Studios bug tracking system)
付録
NGワードの集め方
この記事を積極的に、かつ、検索で入り込んできた人にむけて、NGワードの探し方を書いてくことにする。 大人向けだ。というのも、NGワードは結構危ない単語が多い。どうしてNGなのか。使っても問題ない、他の単語は巻き込まないか。 単語を見つけても、考えるべきことは多い。
「Swear words」で検索する
Swear wordsとは、公の場や 子供の前ではふさわしくない単語・表現のこと。「ふさわしくない」どころか、「そもそも使うべきではない悪態」レベルのものもたくさんある。 引っかかる単語はほとんどが英語。
放送禁止用語を調べる
放送禁止用語とは、テレビ局などが、放送しないよう自主規制する対象の言葉。 「諸事情」が特殊な背景のものもあり、「公の放送でなければここまでしなくてもいいのでは?」とおもう単語もあるだろう。 テレビジョン放送局以外にも、インターネット放送やさんのNGワードも参考になる。(ニコニコ生放送の運営NGワードなど)
ゲームのNGワードや、NG推奨ワードを調べてみる
世界中で人気な「ポケットモンスター」には、結構様々なNGワードがある。もちろん「ゲーム中で使ってほしくない単語」の一覧である。 それ以外にも、界隈ごとのNGワードを調べるのはアリ。
インターネットスラングならではの表記
英語では、LEET表記という書き方がある。日本語の場合は「ギャル文字」や「クサチュー語」などが、近い文化かもしれない。 単純に単語を羅列するだけでは、このような特殊な表記法や表記ゆれではスルーされてしまうことがある。
無自覚な荒らし
無自覚な荒らしは質が悪い。自分が無自覚な荒らしになっていないか 自己チェックしない限り気が付けないからである。僕たちは「無自覚な荒らし」をしていないだろうか?君たちは「無自覚な荒らし」をしていないだろうか?
最後に
walshyさんに感謝します。あなたのtext-filtering-configについての記事が、私にとって大きな情報でした。