なんだかよくわかりませんが、
私の環境ではCodeConnectFixでMakeCode接続を試みると、結構な頻度で失敗します。
接続成功後に処理が止まってしまい、CodeConnectionの画面が更新されません。
リトライし続けていると成功するものの、このまま使い続けるのも気持ちが悪い。
ということでCodeConnectFixの中身を覗いて、問題を特定したいと思います。
マイクラ×MakeCodeプログラミングの動作イメージ
マイクラ×MakeCodeプログラミングの仕組みを図にすると、こんな感じです。
処理の流れは以下でしょう。
一部想像も入っていますが、まあ大体のイメージということで。
1. CodeConnection起動→TCPソケット(ポート19131)で接続待機
2. マインクラフトで/coonectコマンドを実行→CodeConnectionに接続
3. CodeConnection→minecraft.makecode.comに接続
→ レスポンスをCodeConnectionの画面に表示
4. マインクラフトで発生したイベントをCodeConnectionに向けて送信
→ CodeConnectionが受け取り、MakeCodeに送信
→ MakeCodeがプログラム処理に応じたコマンドに変換してCodoConnectionに送信
→ CodeConnectionがマインクラフトにコマンドを送信
→マインクラフトが受け取ったコマンドを実行
Ver.1.18.12までは上記が使えていたのですが、
その後のマインクラフトのVerUPにより、/connectの仕様(通信プロトコル)が
変わりました。にも拘わらず、CodeConnectionのプロトコルは古いまま。
実質上、CodeConnectionは使えなくなりました。
そこで、CodeConnectionとマインクラフトの間に、CodeConnectFixを挟んで
やり取り(プロトコル)を変換してあげましょうということですね。
ていうかCodeConnectionアップデートしましょうよって感じです。公式・・・!
まあ上記で大体あっていると思いますが、
CodeConnectFixのコードはGitHub上にありますので、一応、中身を確認してみます。
案の定、プロトコルが、V1,V2の2種類で定義されていました。
つまり、V2ベースのメッセージを、V1ベースのメッセージに変換しているということです。
CodeConnectFixのどこかの処理で止まるっているのだろうと思われますが、
私の環境は旧Ver(1.18.12)です。CodeConnectFixの検証をすることはできません。
マインクラフトを最新に上げればいいのですが、
せっかく作ったマイクラ×MakeCode環境を崩してしまうのも面倒くさいです。
息子のVerと差分がでると、一緒に遊べなくなってしまいますし。
ということで、まずは、旧VerのマインクラフトでCodeConnectFixを使えるようにします。
簡単です。CodeConnectFxにおいて、Client側(マイクラ)のVer指定は以下でされています。
こちらをV1に変更すると、Ver1.18.12のマインクラフトで
CodeConnectFixを経由して、MakeCodeに接続できるようになります。
逆に最新版では接続できなくなってしまうので、ちゃんとフラグにして
両対応にしておくのが良いでしょう。
次回は、こちらを使ってCodeConnectFixをデバッグしていきたいと思います。