VCアドオン(外部サイト使用)(セルフサーバー版)

vcAddonThumbnail-11dbcf01
スポンサーリンク

セルフサーバー版

こちらはセルフサーバーで利用するバージョンです。

自分でサーバーを立てる必要があるので、スマホだけでは利用できません。

共有サーバー版では状況によってはラグがあったりすると思うので、

もし自分でサーバーを立てられる人は、セルフサーバー版のこちらをご利用ください

 

しかし多少のラグなら許容できる、スマホ版など、こちらのセルフサーバー版が利用できない方はこちらの共有サーバー版をご利用ください

VCアドオンバージョン2(外部サイト使用)(共有サーバー用)
...

概要

マインクラフト統合版で、プレイヤー同士の「距離」に応じて音量が変化する近接ボイスチャット(Proximity VC)を導入できるツール&アドオンです。

専用のDiscordサーバーや重い外部ソフトは不要! ホストが立ち上げたサーバーに、プレイヤーがブラウザでアクセスするだけで、ゲーム内の位置と連動したリアルな会話が楽しめます。

現在いろいろ改善して、スマホのみにも対応したバージョン2を製作中です。

主な機能

  • 距離減衰・次元対応: 近くの人の声は大きく、遠くの人は小さく。別次元にいる人の声は聞こえなくなります。

  • スマホ対応UI: PCはもちろん、スマホからブラウザを開いて参加することも可能です。

  • 観戦者モード対応: 観戦者は近くの人の声を聞けるなど、ゲームモードに合わせた音量設定が可能(人狼ゲーム等に最適!)。

  • 低遅延通信: WebRTC(PeerJS)を利用しているため、ラグの少ない会話が可能です。

コマンド

コマンドで設定ができます。利用可能なコマンドは以下の通りです。

  • /vc:template <name:string> 設定のテンプレを利用できます。none,jinroが利用可能です。
  • /vc:dict <distance:float>話せる距離を設定します。デフォは30です。
  • /vc:spectator <mode:string>スぺクの時の設定です。noneは一切話せない、allは距離関係なく、nearは近くの人のみです。
  • /vc:setting上記の設定をフォームで一括でできます。
  • /vc:jam<playerSelector>指定したプレイヤーに通信妨害を起こします。通信妨害を起こされたプレイヤーは強制的にスピーカーミュート状態になります。
  • /vc:vol_formula<playerSelector><formula:string>ボリュームの式を設定できます。詳しい仕様書は後述。
  • /vc:mute <playerSelector> <state:boolean> 指定したプレイヤーのミュートを操作します。(開発中)

/vc:vol_formulaの仕様書

対象プレイヤーのボイスチャットにおける音量計算式(JavaScript式)をゲーム内からリアルタイムに変更・確認するためのコマンドです。

1. コマンド構文

コード スニペット

 
/vc:vol_formula <target: プレイヤーセレクター> [formula: 文字列]
  • パーミッションレベル: 誰でも実行可能(CommandPermissionLevel.Any

  • チートの有効化: 必要なし(cheatsRequired: false

引数一覧

引数名必須/任意説明
target必須プレイヤーセレクター式を設定・確認したい対象プレイヤー(@s@aプレイヤー名など)
formula任意文字列(String)適用したいJavaScriptの音量計算式。未指定の場合は現在の設定値をチャットに表示します。

2. マイクラコマンド特有の文字列ルール(超重要)

マイクラのコマンド引数に文字列(String)を渡す場合、以下のエスケープルールを厳守する必要があります。

ルール①:全体を "" で囲む

数式内にスペースや特殊文字が含まれるため、引数の始まりと終わりを必ずダブルクォーテーション "" で明示してください。

  • ❌ 誤り: /vc:vol_formula @s dist < 10 ? 1 : 0

  • ⭕ 正しい: /vc:vol_formula @s "dist < 10 ? 1 : 0"

ルール②:式の中で文字列を使う時は ¥でエスケープする

数式(JavaScript)の内部で、特定のタグ名やディメンション名などの「文字列」を指定したい場合は、ダブルクォーテーションの前にバックスラッシュ(環境によっては円マーク)を付けて " と記述します。

  • ❌ 誤り: /vc:vol_formula @s "me.dim === "minecraft:overworld" ? 1 : 0"

  • ⭕ 正しい: /vc:vol_formula @s "me.dim ===¥"minecraft:overworld¥" ? 1 : 0"

3. 式の中で使用できる変数・関数

Webブラウザ側で音量が計算される際、記述したJavaScript式の中で以下のオブジェクトや関数が自動的に利用可能になります。最終的に数値を返すように式を記述します。0が無音、1が100%で、1を超えても問題ありませんが、現実的には5が限度です。

利用可能な変数

  • me: 自分の情報オブジェクト

    • me.x, me.y, me.z : 自分の現在の座標

    • me.dim : 自分のディメンション("minecraft:overworld" など)

    • me.mode : 自分のゲームモード("Creative", "Survival", "Spectator" など)

    • me.hasTag("タグ名") : 自分が特定のタグを持っているか判定する関数

  • other: 通話相手の情報オブジェクト(プロパティは me と同様)

  • dist: 自分と相手の3次元距離(Y軸の高さは1/2に圧縮されて計算されています)

  • sameDim: 自分と相手が同じディメンションにいるかどうかの真偽値(true / false

  • setting: サーバー側の現在の設定(setting.dict で最大通話距離などを取得可能)

利用可能な関数

  • linear(max_dist, dist): 距離に応じたシンプルな直線減衰を計算するヘルパー関数。

4. 特殊な制御コメント(モード切り替え)

数式内に特定のコメント文字を含めることで、ブラウザ側の音量計算処理のモードを切り替えることができます。

  • /*none*/(デフォルト):

    アドオンの標準的な距離減衰、人狼テンプレート、観戦者設定、ジャミング(妨害)状態などが全自動で適用されます。

  • /*all*/:

    システムのデフォルト制限をすべて無視します。別ディメンション間や、スペクとサバイバルの間、自分がジャミング(妨害)を受けている状態であっても、記述したJavaScriptの計算結果がそのまま音量として適用されます。

  • コメントなし:

    記述した式で音量を計算したあと、システム共通の制限(「別ディメンションなら強制終了」「ジャミング中なら強制ミュート」など)が上書きで適用されます。

5. 具体的な使用例(サンプル)

例①:現在の設定を確認する

数式を指定せずに実行すると、対象プレイヤーの現在の設定が /say コマンドでチャット欄に表示されます。

/vc:vol_formula @s

例②:標準の距離減衰(リセット)

初期状態の自動減衰モードに戻したい場合は /*none*/ を書き込みます。

/vc:vol_formula @a "/*none*/"

例③:特定のタグを持っている人同士はどこにいても最大音量(無線機など)

/*all*/ を使用し、自分と相手が共に radio タグを持っているなら距離(dist)に関係なく音量を 1 にし、そうでないなら通常の距離減衰(最大30ブロック)にする例です。

/vc:vol_formula @a "/*all*/ me.hasTag(¥"radio¥") && other.hasTag(¥"radio¥") ? 1 : linear(30, dist)"

例④:特定のディメンション(ネザーなど)にいる時は聞こえる距離を狭める

相手がネザー(the_nether)にいる時は、最大通話距離を強制的に10ブロックに狭める設定例です。

/vc:vol_formula @a "other.dim === ¥"the_nether¥" ? linear(10, dist) : linear(30, dist)"

導入方法(ホスト向け)

※このアドオンは .mcaddon の他に、Node.jsをPCで動かす必要があります。

  1. web-server.zipを配布サイトにてダウンロードして展開します。
  2. こうなっていれば正解です。
  3. 入っているmcaddonをクリックしてインポートしてください。

※PC必須

  1. node.jsをインストール:公式サイトでnode.jsをインストールしてください。
  2. プログラムの準備:コマンドプロンプトでweb-serverに含まれる server.js を実行します。

  3. トンネリング設定: ポート開放で外部に公開します。この時、ポート開放が望ましいですが、ngrokplayit.gg などトンネリングサービスでもOKです。

  4. アドオンの適用: 付属のアドオンをワールドに適用して起動!

  5. マイクラから接続:マイクラで/connect localhost:8080を打ってください。
  6. マイクラの設定:websocketを有効にして、暗号化の要求を無効にしてください。
  7. ブラウザで接続: 発行されたURLを参加者に共有し、ほかの参加者の自分の名前を選択して「開始」を押すだけ!

ファイル構成を以下のようにしてください

参加者(ゲスト)向け

  1. ホストから送られてきたURLをブラウザ(Chrome/Safari推奨)で開く。

  2. 自分のマインクラフトのIDを選択。

  3. 「ボイスチャットを開始」を押してマイクを許可するだけ!

注意事項

  • ホスト(サーバーを立てる人)は PCが必要です。

  • ブラウザの「自動再生ブロック」により、画面を一度タップしないと音が聞こえない場合があります。

  • /connectは起動のたびに打ち直してください。

技術的な注意事項

上記の構成でないと実行が難しいです。マイクラは用意が悪いので、/connectでは暗号化通信が使えません。なので外部にrenderなどでホストしても、セキュリティにはじかれます。ただVPSではいけるらしい?ので、それもポート開放がどうしてもできなくて、ngrockも使いたくない人はぜひ試してみてください。

※補足

PCなしでもVPSというサービスを使えばできないこともないです。
ただ、それを使うにはある程度知識が必要なのと、基本有料です。
なので、お金があって、ある程度知識があるならPCなしでできます。
ですがこれらに当てはまる人は非常に少ないと思ったので、PC必須と書きました。

仕組み

簡単に

scriptAPIで情報を送信

server.jsからhtmlに送信、

htmlで全員に発信して、音量調整。

詳しく

そもそも、マイクラ内で完結させるのは絶対無理だってわかってたので、server.jsをnode.jsで起動して、それとマイクラをつなげる方法をとっています。その方法が限られており、実質、超不便な/connectを使うかしかありません。そのうえ/connectで送れる情報は限られており、まともに使えるのはプレイヤーが動いたことを検知するやつ、プレイヤーのチャット情報を送る奴です。しかしこれらはあくまでクライアントに紐づけなので、一人の情報しか送れません。なので、プレイヤーのチャット情報を送る奴は全員のは送れません。なのでチャットで常に位置などの情報をおくり、jsonuiでそれを消すことで、送ったという情報を消さずに、サーバーへ送信しています。

change_logs

v1.1.0-いろいろ改善

v1.0.5-・サムネとアイコンを追加しました。

   ・exeファイルにコンパイルし、node.jsがいらなくなりました。

v1.0.3-・スマホ版で音量調整が無視される問題を修正

   ・観戦者を追加

   ・挙動を改善

v1.0.2-接続してもデータが送信できない問題を修正

v1.0.1-再接続uiを作成。挙動を改善。

利用規約

  • 二次配布・自作発言: 禁止

  • 改造: 禁止

  • 動画配信・紹介:ぜひやってほしいです。説明文に本ページのリンクを貼ってください。使ったら本ページのコメントに残してくれると嬉しいです。

スポンサーリンク
ダウンロード
(mcpack/mcaddon) [DL:97]
※投稿記事に含まれるファイルやリンクにより発生した被害についてクラフターズコロニーは責任を取りません
投稿通報

コメント

  1. レルムズ使えますか?

  2. PCなしでいけませんか??返信のほどよろしくお願いします

    • Windows必須ですね…
      リモートPCサービス使うか友達に借りてください…

    • 技術的な注意事項に書きましたが、PCなしでもVPSというサービスを使えばできないこともないです。
      ただ、それを使うにはある程度知識が必要なのと、基本有料です。
      なので、お金があって、ある程度知識があるならPCなしでできます。
      ですがこれらに当てはまる人は非常に少ないと思ったので、PC必須と書きました。

  3. アドオンじゃなくてリソースパックでいけますか?よければ作って欲しいです!

  4. レルムズでも行けると思います。

    • レルムズでも行けると思いますが、実際使ったことないので、保証はできません。

  5. ホストはPC必須です。
    アドオンじゃなくてリソースパックでいけますか?->これは無理だと思います。

    • スマホだけでやりたいです。スマホだけでできるようにできませんか?

      • 今のところ難しいです。できるようになったら更新するので、待っていてください。

        • わかりました、できれば早めにお願いします

          • ついに出来ました!

  6. コメント失礼しますそちらのサービス用のサーバーを無償で提供させていただけないでしょうか。
    また既存のものをサーバー専用に作らせていただきます

    • いいんですか?!ぜひお願いしたいです!もし完成したらここにurl書いてほしいです。あとここのurlを配布ページに乗せておいてください。
      もしよかったらサーバー用でそのままデプロイできるように作りましょうか?

  7. サーバーを借りれるめどが立ちました!なのでPC必須じゃなくなるまでもう少しです。もう少しお待ちください!

    • おぉ!!

  8. ゲーマータグに空白あってもできますか?

    • つい最近対応させました。ただ、サイトのほうで変な文字列(%とか数字とか)が入ってると思うのですが、気にしないでください。

  9. Swichなどでもスマホとかあれば行けるんですか?

    • 参加者としてなら行けます。しかしホストとしては無理です。アドオンをダウンロードできないので。

  10. 共有サーバー版が遂に完成しました!
    ただいま配布サイトを作成中です!

    • 出来ましたこちらです。https://minecraft-mcworld.com/228679/

  11. これってタブレットでもいけますか?

    • タブレットの場合はこちらの共有サーバー版をご利用くださいhttps://minecraft-mcworld.com/228679/

  12. surver.jsを開くと構文エラーが出る場合は?

  13. ポート開放は何ポートを開放すればいいですか

コメント通報

通報するにはログインする必要があります