遊ぶ機械が変わった
家のラズパイでマイクラのサーバーを動かしている。設計はずっと「iPad の統合版でつなぐ」前提で組んできた。
ところが子どもの遊ぶ機械が Nintendo Switch に変わった。決め直すことが2つ出てくる。サーバーのソフトを替える必要があるのか。そして Switch からどうやって入るのか。
先に結論を書くと、1つめは替えなくてよかった。2つめで詰んだ。
クライアントとサーバーの話が混ざっていた
調べはじめて最初に気づいたのは、自分が2つの話を混ぜていたことだった。
Switch のマイクラは統合版しかない。Java版は動かせない。ここから「だからサーバーも統合版専用のソフトにしないといけない」と考えてしまう。実際そう書いてある記事も多い。
でもこれは繋がっていない。あいだに Geyser のような翻訳機を置けば、Java版のサーバーに統合版のクライアントから入れる。クライアントが統合版だという制約は、サーバーのソフトを縛らない。
候補は3つあった。公式の Bedrock サーバーをエミュレータ経由でラズパイに載せる案、有志が続けている軽量サーバーの案、そしていま動いている PaperMC + Geyser を続ける案。
比べて効いたのは速さでもメモリでもなく、バージョン追従だった。Switch は本体がゲームを勝手に更新する。iPad なら「自動更新を切って」と頼む逃げ道が一応あったが、Switch にはそれが実質ない。前2つは1つのバージョンしか受け付けない作りなので、更新のたびに入れなくなる。Geyser は複数の統合版バージョンを同時に受け付ける。
というわけで今のまま続投。ワールドは最初から Java 形式だし、systemd もバックアップも全部そのまま使える。作り直しはゼロだった。
サーバーをどう作っても解決しない問題があった
ここまでは順調だったのだが、調べているうちに作り直しより重い問題が出てきた。
Switch のマイクラには、サーバーのアドレスを打ちこむ画面が無い。
iPad やスマホや Windows の統合版には「サーバー」タブの一番下に「サーバーを追加」がある。ここにアドレスを入れれば自宅サーバーに入れる。前に記事に書いたトンネルの話も、この入口があることが前提だった。
Switch と Xbox と PlayStation には、これが無い。「サーバー」タブに出るのは、マイクラの会社が選んだおすすめサーバーだけだ。
これはサーバー側の問題ではない。 公式の Bedrock サーバーを立てても、軽量サーバーに替えても、同じように入れない。クライアント側の作りの問題なので、こちら側で何を作っても解決しない。
サーバーのソフトを3つ比較して悩んでいたのに、そのどれを選んでも詰む問題が別のレイヤーに刺さっていたわけだ。これに気づいたのが招待の前でよかった。
入口は3つ、まず一番簡単なやつ
入る手段は結局3つに整理できた。
A. 家の中で遊ぶ。 同じ Wi-Fi につないでおくと「フレンド」タブにサーバーが出てくる。DNS も何も触らない。家の中だけ。
B. BedrockConnect を使う。 Switch の DNS 設定を書きかえて、おすすめサーバーの一覧を自分用の一覧に差しかえる。外からでも入れる。
C. B の仕組みを自分のラズパイで動かす。 他人のサーバーを経由しない。一番安全だが一番面倒。
決めたのは「まず A を試す」。これで遊べるなら DNS を触る必要はまったくない。外から遊びたくなったら B を検討する。ただし B は Switch の名前解決を他人のサーバーに預けることになるので、そこは親が判断する。
B で困ることが出てきたら C。ちなみに C をやるときは BedrockConnect と Geyser が同じ UDP 19132 を取り合うので、Geyser を 19133 に逃がす必要がある。これは実際にポートが衝突して気づいた。
手順書が嘘をついていた
この調査でいちばん効いたのは、招待用の手順書を書き直したことだった。
家族向けに「友達を呼ぶときの手順」を書いたファイルがあって、そこにこう書いてあった。
- 一番下の「サーバーを追加」をタップ
Switch では実行できない。そして手順書を読むのは、たいてい友達が家に来ている当日だ。その場で「あれ、その画面が無い」となって、30分溶かして遊べずに終わる。
ドキュメントが古くなるのはよくある話だが、この種の嘘は「読む人が一番困っているとき」にだけ露出するのがたちが悪い。普段は誰も読まないので、間違っていても誰も気づかない。
いまは「招待の前に読む」ページを分けて、そこに「Switch は A から試す」「A で一度は入れることを確認してから人を呼ぶ」と書いてある。
学んだこと
サーバー側の設計を3案も比較していたのに、本当の制約はクライアント側にあった。どの機械で遊ぶかは、サーバーの選択肢ではなく入口の有無を変える。 先に入口を確認しておけば、サーバーの比較表を作る前に答えが出ていた。
BedrockConnect は有志が作った仕組みなので、マイクラ側の作りが変われば使えなくなる。だから手順書は BedrockConnect に依存させず、動かなくなったら A に戻れる形にしてある。見直すきっかけも書いた。Switch 版に「サーバーを追加」が付いたら、この話は丸ごと要らなくなる。
自宅サーバーは、動かすところまでは調べれば書いてある。難しいのは、家族が実際にそこへ辿り着けるかのほうだった。