【マインクラフト専用環境】

掲載内容の概要

ここではSOCKET-MANAGER Framework For PHPで開発したマインクラフト専用Websocketサーバーを使って、マインクラフトの様々なコンテンツを実装した例を左メニューのカテゴリに分けてご紹介しています。
以下はそのメニューカテゴリの説明です。


ENVIRONMENT

Websocketサーバーの環境設定ファイルやイベントデータの情報を含め、サーバーと連携できるアドンパックの作り方などの情報ページを公開しています。
また、以下のサブカテゴリもございます。
・CustomItem make
カスタムアイテムを作るための各説明ページ。

・CustomEntity make
カスタムエンティティを作るための各説明ページ。

・CustomBlock make
カスタムブロックを作るための各説明ページ。

・LootTables
各種ルートテーブルの書き方の各説明ページ。


CONTENTS

Websocketサーバーと連携して動作する各マインクラフトコンテンツの実装例を以下のサブカテゴリごとに公開しています。
・Browser
Webブラウザ⇔マインクラフト間での連携コンテンツのご紹介ページ。
例えば、プロセス間通信を使ったプライベートメッセージに対応した多人数チャット画面やアイテムショップ画面でのやり取りなど。

・Items
カスタムアイテムやそれに関連したカスタムエンティティとの連携コンテンツのご紹介ページ。
例えば、Websocketサーバーと連携する事で特殊な効果を発揮する既存アイテムやオリジナルアイテムなど。

・Others
カスタムアイテムやカスタムエンティティとの連携コンテンツのうち、上記Itemsカテゴリに準じないコンテンツの各説明ページ。
例えば、二段ジャンプや階段チェアなど。

運用ポリシー

この環境でのWebsocketサーバーの役割はWebブラウザとの橋渡しとマインクラフトのイベント処理がメインなので、ワールドの処理負担を回避しつつサーバープログラミングを使って極力運用の負担を減らそうというのが狙いです。
そのため以下の「なるべくしないキャンペーン四箇条」を実施しています。
1)コマンドブロックは使用しない

    メンテナンス性が悪いので使用しません

2)リピート機能は使用しない

    ワールドの負荷に直結するので使用しません(使用するにしても再帰ループ止まりにする)

3)座標計算はゲーム内でしない

    コマンドで計算するのは複雑になりメンテナンス性も悪いのでWebsocketサーバー側で行います

4)設定変更はゲーム内でしない

    ゲーム内で行うのはメンテナンス性が悪いのでWebsocketサーバー側で行います
                    

ゲーム内でメンテナンスを行うとビヘイビアパックやリソースパックの入れ替え、そしてワールドのメンテナンスやリロード等の作業が必要になってきますが、それに対してWebsocketサーバー側のメンテナンスだけで済む場合にはゲームプレイ中であってもサーバープロセスを再起動するだけでいいので比較的楽に運用できます。

本フレームワークのご紹介時に利用したデモ環境(▶フレームワークのご紹介)は、Webブラウザ⇔マインクラフト間でのチャットサーバー実装例としてご紹介していましたが、ここではマインクラフト専用のコンテンツとしてプロジェクト環境を再構築しているので別物だとお考えください。但し、この環境はデモ環境をベースに構築しているのでチャット機能はそのまま引き継いでいます。

※基本的にはファミリー向けに楽しく遊べるものを目指しているので、グローバルコンテンツや商用利用は今のところ考えていません。

Websocketを使うメリット

マインクラフト統合版と直接セッションを確立できるWebsocketサーバーを使うメリットは以下の通りです。
・マルチプレイサーバー不要(ホームプレイ環境でのマルチプレイが可能)

・コマンドブロック不要(Websocketサーバーからのコマンド送信が可能)

・Websocketサーバー専用のコマンドが利用可能(エージェントの召喚など)

・マイクラフト側の処理負担の軽減が可能(但し、プレイヤーの移動等で頻繁にイベントが発生する状況下では注意が必要)

・Webブラウザを含めた外部連携が可能

・既存のアイテムやエンティティとの連携が可能(独自の効果や機能を付与可能)

・アドオンパックで作成したカスタムアイテムやカスタムエンティティとの連携も可能(独自の効果や機能を付与可能)
                    

本環境ではこれらのメリットを活かしたコンテンツを作成し、CONTENTSメニューで実装例も併せてご紹介しています。
ここで使っているWebsocketサーバーは、通信状態やデータドリブンによるカスタマイズ可能なステータス管理が利用できるので、サーバーと連携したより複雑なコンテンツを作成する事ができます。

プロジェクト環境の準備

ここでご紹介しているマインクラフト用のプロジェクト環境は以下のコマンドでインストールできます。
※GitHubから直接ダウンロードする場合は>> こちらからどうぞ。
> composer create-project socket-manager/contents-project <インストール先のディレクトリ名>
                    

インストール後のディレクトリ構成は以下のようになっています。
/app
    /client             Webブラウザ用クライアント
        /jquery         jQuery版
        /react          React版
    /packs              マインクラフト適用データ
        /behavior_packs ビヘイビアパック
        /resource_packs リソースパック
    /InitClass          初期化クラス
    /UnitParameter      UNITパラメータクラス
    /ProtocolUnits      プロトコルUNIT定義クラス
    /CommandUnits       コマンドUNIT定義クラス
    /MainClass          メイン処理クラス
/logs                   ログ出力用
/setting                設定ファイル用
                    

Webブラウザ用クライアントディレクトリにはデモ環境と同じくjQuery版とReact版のHTMLファイル(chat.html)が入っていますのでお好きな方をブラウザにドラッグ&ドロップしてお使いください。

専用コンテンツを有効にするためにはマインクラフトワールドデータ(ビヘイビアパック/リソースパック)を更新する必要があります。
専用コンテンツの適用データはプロジェクト内のapp/packsディレクトリにビヘイビアパック/リソースパックを同梱していますので、このディレクトリの中身をそのまま統合版ゲームデータのbehavior_packsresource_packsディレクトリにコピーしてお使いください(適用方法の詳細は<< こちら)。

サーバーの起動方法はデモ環境と全く同じです。
例えばマインクラフト用のWebsocketサーバーを起ち上げる場合にはプロジェクトルートで以下のようにコマンドを実行すれば起動します。
> php worker app:minecraft-chat-server 10000
                    

マインクラフトからの接続

マインクラフトはUWPアプリのためlocalhost(127.0.0.1)で利用する場合は以下のコマンドを実行してループバックアドレスへのアクセスを許可しておく必要があります。
> CheckNetIsolation.exe LoopbackExempt -a -n="Microsoft.MinecraftUWP_8wekyb3d8bbwe"
                    

マインクラフトからWebsocketサーバーへ接続する時はチャット画面で以下のように入力します。 WebSocketサーバーへの接続コマンド入力例

> /wsserver localhost:10000/<ユーザー名>
                    

上記のユーザー名はマインクラフト内のユーザー名でなくても構いません。
あくまでWebsocketサーバー内で使用する名前です。

WebSocket接続完了時のメッセージ表示

接続が完了すれば画面左上に上記のようなメッセージが表示されます。

接続後は左メニューのCONTENTSの項目でご紹介している機能が使えるようになります。

接続に失敗する場合

Websocketサーバーに接続しようとすると以下のエラーが出る事があります。
接続エラー時の表示

そんな時は以下の赤枠部分と同じ設定にしてください。
正しい接続設定の例