【#2】Minecraft BE(統合版) 自作サーバー構築奮闘記 ~マイクラサーバー化編~

2022.04.20

CATEGORY : Linux

あんみんどうふです。

前回に引き続きマイクラサーバー構築の備忘録を書き綴ります。
前回の投稿はこちら。

あんみんどうふです。 唐突ですが自宅サーバーを作ることにしました。 「Minecraft」(通称「マイクラ」)という、知る人ぞ知る有名なゲームをマルチで遊ぶサーバーを作ります。 なかなかに苦労しつつもいい勉強になったので備忘録...

サーバー側のポート開放

今回は簡単なファイアウォール「ufw」を使います。

まずufwがインストールされているかをチェックするため、以下を実行します。
バージョン情報が表示されたらインストールされています。

表示されない場合はインストールされていないので、以下を実行してインストールします。

 

ufw statusで現在の状態をチェックします(root権限が必要なのでsudoを付けます)。
デフォルトの場合無効化されているはずです。

この状態だとサーバーのポート開放は行われていないことになります。

 

次に開放するポート番号を登録します。
ufw allow (ポート番号)/(プロトコル)」で実行すると登録できます。
(プロトコルは省略するとTCP・UDP両方を許可できます。)

統合版のマイクラはポート番号がデフォルトで「19132」で設定されており、プロトコルは「UDP」を使用しています。
他の番号を使うことも可能ですが、今回はこれに合わせて開放します。

間違えた場合は「ufw delete allow (対象のポート)」で消せます。

 

登録したらufwを有効化します。

 

登録・有効化できているかチェックします。
「Status: active」と表示されていれば有効化されており、登録したポートが一覧に表示されていれば正しく登録できています。

 

Minecraftサーバーのインストール

ここでようやくマイクラの登場です。本体をサーバーに入れます。

下準備

zipファイルを展開できるようにするため「unzip」をインストールします。

 

次にインストール場所を予め作成しておきます。
今回は「/opt/bedrock」に作成します。

 

Minecraftサーバーのダウンロード

公式サイトへアクセスし、右側の「UBUNTU用」を選びます。
ユーザーライセンスとプライバシーポリシーの同意を求められるので同意し、「ダウンロード」を右クリックしてURLをコピーします。

 

コピーしたURLをメモ帳などにペーストし、それに合わせてサーバー側で入力します。タイプミスに注意。

実行するとbedrockディレクトリ直下に「bedrock-server-(バージョン).zip」がダウンロードされます。

 

ダウンロード後、unzipで展開します。

以降zipファイルは使わないので削除して構いません。

 

起動

インストールしたディレクトリで以下のように「bedrock_server」を実行します。
公式サイトにもある通り、基本的には「LD_LIBRARY_PATH=. ./bedrock_server」で起動します。

このように表示されたら起動完了です。今ここにマイクラサーバーが立ち上がりました。

 

同ネットワークに接続している場合はMinecraftからローカル接続が行えるので、こちらも試します。

Minecraftを起動し、「プレイ」→「サーバー」の下にある「サーバーを追加」を選びます。

アドレスにサーバーのIPアドレス、ポートに「19132」を入力し、「遊ぶ」を選ぶと接続できます。
サーバー名は適当にわかりやすい名前にします。私は「local」にしました。

 

正常に接続できるとワールドに入ることができます。

同時に、サーバー側でプレイヤーの名前とxuidがログに表示されます。

 

サーバーを停止させる場合はstopと入力します。

 

ユーザーの権限変更

自身を管理者として設定するとワールドの設定変更やプレイヤーの権限変更、キック(プレイヤーの追放)等ができるようになるので設定します。
プレイヤーの権限は「permissions.json」にて設定できます。

json形式で以下のように入力すると有効になります。
xuidはサーバー接続時にログへ出力されるので、それと同じものを入力します。

 

ワールドの設定

デフォルトのままだと場合によっては最大人数が足りない、難易度を統一できない、荒らし対策が甘い等いろいろと不便に感じることがあります。

こういった設定は「server.properties」を編集することで変更できます。

 

以下が各項目の説明です。
基本的には名前、ゲームモード、難易度、人数、放置できる時間以外変える必要はないと思います。

server-name

サーバーの名前です。
ゲーム内では接続する際の画面に表示されます。
デフォルトは「Dedicated Server」です。

gamemode

ゲームモードを指定します。
survival(サバイバル)、creative(クリエイティブ)、adventure(アドベンチャー)の3種類から選べます。
デフォルトは「survival」です。

force-gamemode

参加プレイヤーにワールドの難易度をデフォルトで固定させるかどうかを選べます。
trueにするとserver.propertiesで設定したデフォルトの難易度で固定されます。
デフォルトは「false」です。

difficulty

ワールドのデフォルト難易度を設定します。
peaceful(ピースフル)、easy(イージー)、normal(ノーマル)、hard(ハード)の4種類から選べます。
デフォルトは「easy」です。

allow-cheats

チートコマンドを許可するか選べます。trueで許可、falseで禁止。
デフォルトは「false」です。

max-players

ワールドの最大同時接続数を指定できます。
サーバーのスペック(主にCPU・メモリ)に合わせた人数にすることを推奨します。
参考に私の場合は、CPUがIntel Xeon E3-1270、メモリが8GBの状態で最大8人同時接続していましたが問題なく動いていました。
デフォルトは「10」です。

online-mode

Xbox Liveで認証されたアカウントのみが接続できるようにします。
falseにすると不正にMinecraftを手に入れたユーザーが参加できるようになってしまうので、特別な理由がない限りはtrueのままが望ましいです。
デフォルトは「10」です。

allow-list

trueにすると「allowlist.json」に登録されたユーザーのみが参加できるようにします。いわゆるホワイトリストです。
allowlist.jsonにjson形式で以下のように入力すると有効になります。
permissions.jsonと異なり、xuidは未入力でもnameを書いていれば接続時に自動で入力されるようです。

デフォルトは「false」です。

server-port

IPv4接続のポート番号を指定します。
デフォルトは「19132」です。

server-portv6

IPv6接続のポート番号を指定します。
デフォルトは「19133」です。

view-distance

表示する最大チャンク数を指定します。
デフォルトは「32」です。

tick-distance

プレイヤーを中心にどこまでのチャンクをロードするかを指定します。
デフォルトは「4」です。

player-idle-timeout

操作が無い場合サーバーから自動的にキックする時間を分単位で指定できます。0に設定すると無制限になります。
トラップを作って放置する場合は0にしましょう。
デフォルトは「30」です。

max-threads

サーバーが使用する最大スレッド数です。スペックに合わせた設定にする必要があります。0にすると無制限に使用します。
デフォルトは「8」です。

lebel-name

ワールドの名前です。保存されるワールドのディレクトリ名や各ログに出力されるワールド名として使用されます。
ゲーム内では「設定」のワールド名に表示されます。
デフォルトは「Bedrock lebel」です。

lebel-seed

ワールドのseed値を指定します。
デフォルトは空欄です。

default-player-permission-lebel

プレイヤーの権限のデフォルト値を設定します。
visitor・・・攻撃や建築・破壊など何もできず、移動のみ。
member・・・通常のプレイヤー。
operator・・・管理者。ワールドの設定や権限変更が行える。

デフォルトは「member」です。

texturepack-required

trueにするとテクスチャパックの使用を強制します。
デフォルトは「false」です。

content-log-file-enabled

trueにするとエラー発生時にログファイルを出力します。
デフォルトは「false」です。

compression-threshold

ネットワークペイロードの最小値を指定します。
デフォルトは「1」です。

server-authoritative-movement

プレイヤーの位置がゲーム内とサーバー内で差異がある場合にどちらに合わせるかを指定します。
client-auth・・・ゲーム側に合わせる
server-auth・・・サーバー側に合わせる
server-auth-with-remind・・・サーバー側に合わせる+ロールバック

デフォルトは「server-auth」です。

player-movement-score-threshold

プレイヤーの異常な動作を検知する閾値を指定します。
デフォルトは「20」です。

player-movement-action-direction-threshold

プレイヤーの視線や攻撃方向に差異があると検知する閾値を指定します。
デフォルトは「0.85」です。

player-movement-distance-threshold

「server-authoritative-movement」で位置に差異があると検知する閾値を指定します。
デフォルトは「0.3」です。

player-movement-duration-threshold-in-ms

「server-authoritative-movement」で位置に差異がある場合、修正する時間の間隔をミリ秒単位で指定します。
デフォルトは「500」です。

correct-player-movement

「server-authoritative-movement」の位置の差異を修正するかどうかを指定します。統合版サーバー自体が現状開発段階のものなので、falseにすることが推奨されています。
デフォルトは「false」です。

server-authoritative-block-breaking

よくわかりませんが、原文を読む感じではブロックの破壊をゲーム側に合わせて処理する設定のようです。
デフォルトは「false」です。

<原文>
If true, the server will compute block mining operations in sync with the client so it can verify that the client should be able to break blocks when it thinks it can.


これにてサーバーは完成です。

残すはサーバーの公開、いわゆる”ポート開放“のみです・・・が、ルーターやモデム・光回線の環境によって大きく左右されるので、次が一番の鬼門となります。

次回は4月か5月中に投稿します。最終回です。

Pocket