Minecraftマルチサーバーの基礎
はじめに
インターネットを利用している方であれば、「Minecraft」というゲームをまったく知らない!という人も減ってきたのではないでしょうか。MinecraftはスウェーデンのストックホルムにあるMojang AB社が開発し、現在では主にMicrosoftが販売を行っている世界的に人気の高いゲームです。プレイできるプラットフォームはPCを始めとして、メジャーなゲーム機の殆どに展開しています。
本連載では、このMinecraftを題材に、主としてPC版におけるマルチプレイ用サーバーの構築と運営についてのノウハウを紹介していきたいと思います。
なぜ、いまPC版のマルチサーバーなのか?
近年様々なゲーム機でMinecraftに触れられる機会が多くなってきましたが、今でもMinecraftのアップデートはPC向けをメインとして開発されています。そのため、PC以外のプラットフォームでしか遊んだことがない人達が、今後新規要素を求めてPC版に興味を示すことは想像に難くありません。また、最近はMinecraftの利用規約やガイドライン(図1)についての和訳が公式から提供されるなど、Minecraftユーザーが様々な活動をしやすい環境が整ってきています。
例えば、開発元であるMojangの認める範囲であれば自由にMinecraftに関する手作り製品を販売したり、サーバー運営においては課金システムを構築して有料でプレイヤーにコンテンツを提供したりすることも可能になりました。
このような状況の変化を踏まえると、今後はMinecraftを主軸にした様々なサービス提供方法が考えられます。本連載では、本気でMinecraftのマルチサーバーを構築・運営してみたい人向けに、参入の足掛かりとなるような情報提供を心掛けていきたいと思います。
今までのマルチサーバーについてのおさらい
Minecraftのマルチサーバーは開発初期段階のベータ版やアルファ版よりも前の「クラシック版」と呼ばれるバージョン(2009年頃)から存在しており、とても長い歴史を持っています。また、マルチサーバー用のソフトウェアは公式からクライアントソフトウェアのアップデートと同時にリリースされており、基本的に誰でも自由に最新版のMinecraftサーバーを構築して他のプレイヤーに遊びに来てもらえるようになっています。
さらに、その手順も多く公開されているため、マルチサーバーを構築すること自体はあまり難しいことではないのですが、いざ多くの人にサービスを提供するとなると、荒らし対策をはじめとして参加プレイヤーに思った通りの遊び方をして貰うために非常に多くのカスタマイズを要するのが現状です。
そういったサーバー運営者のサポートとなるよう、非公式に有志が開発したマルチサーバー向けのMODが存在しており、現時点では運営に役立つMODや機能追加を行えるプラグインの導入が必須といえる状況になっています。現在では図2のような公式サーバーの機能を包括したMODサーバーを使用するのが一般的です。
ただし、最近は公式のサーバーソフトウェア単体でもできる事が多くなってきたため、そういった内容も含めて紹介していく予定です。
マルチサーバーでどんなことができるのか?
現時点で存在するメジャーな公開サーバーのWebサイトを見ていただくとイメージが湧きやすいかと思いますが、ここでいくつか例を紹介しましょう。なお、ここで紹介するのは筆者が思いついたものをざっくりと区分けしたもので、マルチサーバーごとに様々なコンセプトがあり、決まった定義があるわけではありません。
バニラサーバー(図3)
公式サーバーもこの部類になるため一番代表的なものと考えられます。必要最低限以上の機能追加は行なわず、「Minecraft本来の遊び方を不特定多数の人と楽しみたい人」のために構築されたサーバーです。サバイバルサーバー/クリエイティブサーバーなどの区分けもありますが、クラフトや採掘が楽しめるサバイバルサーバーの方が多いと思います。
経済サーバー(図4)
バニラサーバーに通貨や職業の概念などを追加したサーバーです。ほとんどの場合はサーバー側で機能追加が行なわれ、参加ユーザーはクライアント未改造で参加可能なため比較的人気が出やすいと考えられます。運営面ではサーバー内の経済をある程度コントロールする必要が出てくるため、バニラサーバーにはない悩みも多く発生するようです。
MODサーバー(図5)
クライアントおよびサーバーに対して改造が必要なマルチサーバーで、サービスの提供側・ユーザー側双方に最も敷居が高いサーバーと考えられます。ただし、本来のMinecraftにはない新しいブロックや機能を追加できるため、いわゆる「工業化MOD」などを楽しむ層に人気があると考えられます。
PvPサーバー(図6)
Minecraftの対人モードを利用して、プレイヤー対プレイヤーのゲームに特化したサーバーです。サーバー側の改造のみでゲームをコントロールし、専用のステージを用意して対戦する形式が多い印象です。繰り返しステージを流用することが多いため建築は不可能な場合が多いですが、自分たちで建築をしてそれを用いたゲームを行う機能を提供している場合もあります。統計を取ったわけではありませんが、筆者は最もプレイヤー人口の多いジャンルであると認識しています。
ミニゲームサーバー(図7)
ほとんどの場合は他の分類のサーバーと併設あるいはサーバー内に実装されていることが多いかもしれませんが、一応分けて記載しておきます。
サーバーサイドのプラグインを追加するといった方法で自由にミニゲームを構築できます。例えばアスレチックであったり、鬼ごっこのようなものであったり、あるいは釣りなどを楽しむこともできます。機能追加を行うサーバー管理者次第であらゆることが可能になるため、ほとんどのサーバーでは何かしらのアクセントとしてミニゲームを提供することが多いのではないでしょうか。
上記で述べた以外にもいろいろなマルチサーバーが存在します。例えば「xxを再現してみた」といったような企画において、その再現ワールドの観光用マルチサーバーを一時的に公開したり、Minecraftの実況配信を行う上で放送者と視聴者が遊ぶためにマルチサーバーを構築したり、海外においては小中学校の授業に取り入れたうえで複数人作業を目的としてマルチサーバーを構築したりするケースもあります。「Minecraftの遊び方は無限大」と評されることもありますが、マルチサーバーの在り方も同じく無限大です。
サーバーを構築する前に気を付けたいこと
Mineraftに限らず、サーバーを構築・公開するうえでは下記の点を必ず心得てください。特に「サーバーを構築・動作させるうえでのリスクは全て個々人の自己責任である」ということです。
一般的に言われていることですが、自分が何をしているのか理解せずにサーバーを構築・動作させることは多大なリスクを生みます。自身のコントロール下にないサーバーはサーバー設置者だけの問題ではなく、攻撃者の踏み台にされるなどしてインターネットに接続された全てのコンピュータの問題に発展するケースもあります。また、サーバー構築において問題が発生した場合、その解決方法のほとんどはインターネット上で調べられることが多いため、自己解決するスキルも要求されます。
ハードウェアに関して
主要なパーツごとに説明します。筆者自身が特別ハードウェアに詳しい訳ではないため、少し感覚的な所もあることご容赦ください。
CPU
まず念頭に置きたいのが、「Minecraftサーバーは基本的にシングルスレッドで動作している」ということです。ただし、サーバーにMODやプラグインを適用した場合、追加で並列動作するタスクが増えるため推奨コア数が変わってきます(図8)。そのため追求するべきはシングルコア当たりのクロック数、およびCPUを占有する可能性のある機能分だけのコア数になります。具体的なところはサーバーのソフトウェア構成にもよるため幅広くベンチマークを取らないと分かりませんが、大抵の場合は同一サーバー上でSQLサーバーやHTTPDを動作させたとしても4コアあれば事足りると考えられます。
メモリ
非常に検討する要素が多く、どの程度のサイズを設けるか判断が難しいのがメモリです。要素としてはサーバー本体が常駐するスペース、プレイヤーがログインする度に確保されるデータ、プレイヤー個々人が活動するにあたってロードされるマップデータ、プラグイン等がデータベースサーバーを利用する場合はその作業スペースなどでしょう(図9)。その他にもサーバーをRAMディスク上で動作する場合はMinecraftサーバー構成ファイル全てが乗る分だけの容量が必要になります。Minecraftサーバー本体が使用するメモリはあまり多くないため、通常は2~4GBあれば困ることはないと思います。
データベースサーバーが使用するメモリは要求されるデータベースの種類や使用方法によって大きく異なるため一概に算出できません。サーバーの荒らし対策として操作の検索やロールバックを行うことがありますが、利用者が自由にブロックを破壊できる環境を整え、かつ部分的にロールバックを行う予定があるような場合は、データベースサーバー用に4~8GB程度メモリを追加した方が無難かもしれません。
記憶媒体
パフォーマンスを考える場合、カーネルを含む実行ファイルと作業データの全てがRAMディスク上に存在するのが最速と考えられます。これは組込みLinuxやディスクレスBoot可能なLinuxディストリビューションで採られる手法ですが、Linuxであればブート時に全てをRAMディスク上に展開し、サーバーの停止時にSSDやHDDに書き戻すことも可能です。この場合は起動停止時にしかディスクアクセスが発生しないため、SSDでもHDDでも運用中のパフォーマンスにはあまり影響しません。ただし、不慮の停電やハードウェア/ソフトウェアの不具合によるPanic発生時はディスクに書き戻せていないデータをロストするため、リスクがかなり高くなります。Windowsの場合でもPXEなどのネットワークブートで実現可能かもしれません。
現実的なところではOSの主要機能はSSD、サーバー関連ファイルはRAMディスク上に展開して動作させる、バックアップはHDDといったあたりかと思います(図10)。不慮のデータロストを懸念する場合、サーバー関連ファイルはSSD上での動作でも極端なパフォーマンス低下はありませんが、SSDの場合は定期的にTRIM操作を行わないと書き込み速度が低下するため、無駄な書き込みを行わないように設定したり、定期的にメンテナンスTRIMを行ったりなど、運用方法をある程度工夫する必要があります。常時TRIMできるファイルシステムもありますが、TRIM操作でも書き込み速度が低下するため定期的な実行で十分かと思います。また、寿命的な話についてはMinecraftサーバー程度の書き込み量であれば数十年単位で耐えますので、SSDの物理故障ぐらいしか警戒しなくても問題ありません。なおHDD上にサーバー関連ファイルを配置し動作させることは極端にパフォーマンスが低下するため基本的にお勧めしません。
その他のパーツ
あとはインターネットに接続でき、キーボード・マウス・ディスプレイで操作が行えればMinecraftサーバーは動作可能です。SSHやリモートデスクトップで遠隔操作できるように設定すればキーボード・マウス・ディスプレイも不要です。また、当然ながらサウンドカードやグラフィックボードも不要です。専門外のため詳細は省きますが、ネットワークが不安定な場合はルータやサーバーのLANアダプタを疑う必要はあるかもしれません。普段からルータのSYSLOGを採取するようにしておくと良い判断材料になります。
その他のマルチサーバー構築に必要なスキルまとめ
Minecraftサーバーの構築や運用保守は、突き詰めると一般的なネットワークゲームの運用保守と同等のスキルが要求されます(図11)。そう考えると1人で運用保守をすることはあまり現実的でなく、できれば各要素において詳しい協力者・担当者がいるとスムーズに作業が行えるかもしれません。ただ、本連載では1人でも一通りの作業を行えることを目標に必要な手順や検討事項を解説していきたいと思います。
OSプラットフォームの知識
平常時であれば、最低限サーバーの起動・停止に関連する操作、定期的に再起動を行う場合はスケジューラの使用方法が分かれば十分ですが、問題発生時にはOSの各種機能を操作できるというだけでなく、パフォーマンスチューニングやトラブル発生時の解析手順等様々なことが求められます(サーバーの起動・停止や定期的な再起動については別途解説)。
もう1つ、プラットフォーム選択の際の重要な要素として「OSのライセンス問題」があります。一般的に使用されているWindowsの場合、Windows Server製品などでない場合はクライアント用OSとなるため、Windowsのソフトウェア利用許諾契約によりセッション数に関わらずサーバーとしての運用が禁止されています。またWindows Server製品でも非常にライセンス体系が複雑なため、基本的にはLinux等で接続数規定のないものを利用することをお勧めします。
Minecraftサーバーソフトウェア基本知識
MinecraftのサーバーはJava仮想マシン上で動作します。そのため、パフォーマンスを発揮するためにJavaのパフォーマンスチューニング知識も必要です。メモリ割り当て程度の解説はよく見かけますが、パフォーマンス改善のためのチューニングはJavaのバージョンにより大きく異なるため、各々利用するJavaバージョンに合わせて適切な方法を取捨選択する必要があります。
サーバーを立ち上げた後は、コマンドの使用方法やログの見方、異常発見時の解決方法についてもセオリーを知っておかなくてはいけません。サーバーにMODやプラグインを導入している場合は個々のプラグインのコマンド操作や動作の特性等も把握して運用する必要があります。またMinecraftクライアントのバージョンアップに伴うサーバーのバージョンアップにおいては、MODやプラグインも併せたバージョンアップおよび動作検証が必要になり、最悪バージョンアップ前の機能が提供できなくなったり、機能を維持するために各々でプラグインをフルスクラッチする必要が出てきたりもします。具体的には今後の連載で説明していきたいと思います。
ユーザーサポート
基本的に管理者によってサポート方法も様々ですが、少なくともある程度リアルタイムに情報伝達が可能な媒体が必要になります。サポート内容も多々ありますが、主なものとしては荒らし対応(報告・受付)への要望などが考えられます。
- Webサイト(掲示板など含む)
独自に掲示板等を備えている場合もあれば、有志提供のサーバーリストサービスなどに搭載されている掲示板機能を使用している場合もあります。 - SNS
TwitterなどのSNSを利用してサーバー固有のアカウントを作成し、広報や連絡のために使用するケースも多く見られます。 - メール
オーソドックスなメール対応もよく行なわれていますが、個人的には迷惑メールそのものやフィルタリングが煩わしいためあまり率先しては使用していません。 - その他
周りではあまり見かけませんが、タスク管理ツール等を導入してチケット駆動でタスクをこなすのも良いかもしれません。
一番簡単なMinecraftサーバーの立て方
※以下の手順は執筆時点の情報であり現在は古くなっています。「MODサーバーの立ち上げとプラグインによる機能追加」に記載の手順でサーバーを起動してください。
次回以降、具体的なサーバー構築方法を紹介しようと思いますが、今回は手始めに一番簡単なWindows環境で公式Minecraftサーバーを構築する方法を紹介します。なお、以下に示す手順は今後のアップデートにより変更される場合がありますのでご了承ください。また、ここではMinecraft 1.8.9による手順を示していますが、今後この方法も変更される可能性があります。
まずは、Javaの最新版をインストールしておきましょう。Javaのインストールが完了したらMinecraftの公式サイトにアクセスし、画面右上の「Log in」をクリックしてログイン画面へ移動します(図12)。
ログイン画面が開いたら、Mojangアカウントのユーザー名(USERNAME)およびパスワード(PASSWORD)を入力して「Sign in」ボタンをクリックします。
ログインできたらトップページに戻るので、「Download」ボタンをクリックしましょう(図14)。Download画面へ移動します。
Download画面の「Multiplayer Server」の項から「minecraft_server.(バージョン番号).exe」ファイルをクリックしてダウンロードします(図15)。起動後に色々とファイルが生成されるため、空のディレクトリにダウンロードすることをお勧めします。
ダウンロードが完了したら、ファイルを実行しましょう(図16)。
実行すると前述したようにいくつかのファイルが生成されますので、その中から「eula.txt」をテキストエディタで開いてください(図17)。このファイルはMinecraftのソフトウェア利用許諾契約書です。
eula.txtを開くと「EULA(end-user license agreements:ソフトウェア利用許諾契約)に同意する場合はeura=の後のfalseをtrueに書き換えてください」と記載がありますので、記載されたEULAのWebサイトにアクセスして内容を確認し契約内容に同意する場合にはeura=trueに変更して上書き保存してください(図18)。なお、URLの先を辿るとEULA以外の各種ガイドラインも参照できます。この操作を行うことでMojangが提示した規約・ガイドラインに同意したことになりますので、「今後Minecraftのサーバーを立てて活動するうえで何が可能で何が不可能なのか」をしっかりと理解して同意してください。
eula.txtの内容に従ってファイルを変更したら、再度 minecraft_server.(バージョン番号).exeを実行します。図19のような画面が表示されます。ここでは仮に「管理ウインドウ」と称します。
これでMinecraftのサーバーが起動しました。対応するバージョンのクライアントからアクセスして確認してみます。クライアントの「マルチプレイ」メニューから「ダイレクト接続」ボタンをクリックします(図20)。サーバーへの接続は今後も行うため、「サーバー追加」ボタンからサーバーリストに追加してしまっても構いません。
「ダイレクト接続」画面(図21)が表示されるので、サーバーアドレスに「localhost」と入力し「サーバーに接続」ボタンを押します。
無事にログインできた場合は、管理ウインドウの「Players」にログインした自分のユーザー名が表示されます(図22)。
操作できるかどうか、試しにコマンドを使用してみましょう。ほとんどのコマンドは、コマンド名とそのパラメータをスペースで区切って実行します。ログインしたユーザーにOP(オペレータ、管理者)権限を与える場合は「 op (ユーザー名)」という形でコマンド実行します。
管理ウインドウの右下のコマンド入力欄にopコマンドを入力して[ENTER]キーで実行します(図23)。
これで、ゲーム内にOP(オペレータ)権が付与された旨が表示されます(図24)。以降はゲーム内からでも管理コマンドが使用できるようになります。
では、実際にゲーム内から管理コマンドを使用してみます。ゲーム内からコマンドを実行する場合は行頭を「/」(スラッシュ)から始める必要があります。[T]キーでチャットウインドウを開いて「/」を打ち込むか、[T]キーの代わりに[/]キーを押せばスラッシュが入力された状態でチャットウインドウが開きます。
続けてコマンドを打ち込みます。試しに「/time set night」と入力して[ENTER]キーで実行してみましょう。ゲーム内時間が夜に設定されます(図25)。
最後にサーバーを終了させます。管理ウインドウのコマンド入力欄かゲーム内から「/stop」コマンドを実行すると(図26)サーバーが停止し、管理ウインドウも閉じます。
基本的な操作は、これでおしまいです。いかがでしょうか。思ったよりも簡単にできたのではないでしょうか。
次回は、サーバーMODを用いたサーバーの立ち上げ方や公式サーバーとの違いについて、またMODサーバーに対するプラグインを用いた機能の追加方法などについて紹介したいと思います。
Minecraftの公式記事ではありません。本連載の内容はMojangから承認されているわけではなく、Mojangとは関係ありません。