
バーチャル学会イベント登壇レポート──CCKの可能性をディスカッション
こんにちは、PM兼DevRel の Smith です!
このレポートでは 12/7~8 に渡って開催されたバーチャル学会2024の、12/7 のランチョンセミナーでの登壇の様子をお届けします!
12/7-8に開催される #バーチャル学会 のランチョンセミナーに登壇します。ラボメンバーに #cluster Creator Kit (CCK) PMのSmithさん (@do_low) をお迎えし、「最近CCKの成長めちゃすごいけど、研究としてどう活用できそうっすかねぇ」をわいわい話す会です。参加無料!ぜひ!https://t.co/vR0PjI7ld4 pic.twitter.com/GAl0PF0YzA
— eau. / Yuichi HIROI (@silencieuse) December 4, 2024
バーチャル学会とは
バーチャル学会運営委員会によって運営されている学会です。
VR空間での学術発表や交流を通じてVR空間での価値創造をアカデミックな側面から促進する取り組みです。
バーチャル学会2024の公式サイトはコチラ
https://vconf.org/2024/
発表テーマ「Lab と DevRel が見る cluster の最新機能とその可能性」
ランチョンセミナーは「Lab と DevRel が見る cluster の最新機能とその可能性」というタイトルで、前半は cluster の空間でできることやどのように使ってほしいかの紹介、後半は Lab のメンバーと DevRel のディスカッションや質疑応答、という流れのセミナーを行いました。

DevRel からは「Cooperation and Integration with Cluster Creator Kit」と題して、CCK を用いてできる連携について紹介しています。
cluster のバーチャル空間の仕様
前提知識として、cluster のバーチャル空間の仕様についての概要を解説しました。

cluster のバーチャル空間(スペース)の中でのエンティティ(アイテム)の処理は、そのスペースの中にいるユーザーの端末に分散されます。
レースゲームを例に挙げると、レースで走るそれぞれの車の走る処理は、車に乗っているユーザーの端末で行われます。
サーバーに送られた各端末の処理結果は、スペース内の全てのユーザーに同期されます。
車の処理を各ユーザーの端末に分散しているという構造上、あるユーザーは自分の車以外の計算処理を行っていないため、他のユーザーの車の位置を直接要求することはできません。

そのため、他のユーザーの端末で処理されているアイテムの情報を取得したい場合はサーバーを介したメッセージングで取得します。
ある情報を取得するためには一度サーバーを経由する必要があるため、cluster の空間上で複数のアイテムを連携させる処理は基本的に非同期処理となります。

アイテムを介した自由な意思疎通「Cooperation」
cluster の空間の前提知識を解説したところで、少し話題をかえてワールドクラフトという機能について紹介しました。
ワールドクラフトは、自分や他のクリエイターが作成したアイテムを自由に配置してワールドを創ることができるモードです。
不特定多数のクリエイターの不特定多数種のアイテムが配置できる、というところがキーです。
他のクリエイターが作成したアイテムが配置されているということは、自分のアイテムが管理・把握していない不特定多数のアイテムが 0~N 個あるという状況です。

通常はそれらのアイテムに対して任意の要求を行うことはできません。
しかし、クリエイター同士によるプロトコルの取り決めによって自由な意思疎通ができるようになります。
これが cluster のバーチャル空間における Cooperation の思想です。

実はバーチャル学会の会期中に、「ゆるゲームジャム」というクリエイター向けの企画も進行中でした。
ゆるゲームジャムは、あるお題に基づいて自由にワールドをつくるという企画ですが、今回はそのお題として「プロトコル」を採用しました。
これまで cluster での UGC づくりは一人あるいは一つのグループのクリエイターが作り上げるものでしたが、message passing をするための仕組みを提供することによってクリエイターのアイテム同士の協働を実現しました。
ゆるゲームジャムでは “damage” というプロトコルに基づいて自由にアイテムやワールドを作っていただきましたが、メッセージを発信する側がどういう契機でメッセージを送るかも、メッセージを受ける側がどういう振る舞いをするかも、クリエイターの実装に依存します。
あるメッセージを発信するアイテムを作ったら、そのメッセージを受信する全てのアイテムと協働できる、これをクリエイターの創造力の掛け算であるとしています。

“damage” という振る舞いがわかりやすいプロトコルならまだしも、”42” というプロトコルがあったとしたらクリエイターはどのような振る舞いを実装するでしょうか。
ブラウザなどで実装されている HTTP のような実用的なプロトコルでなくても良いからこそ、クリエイターの創造力は加速されると言えるでしょう。

バーチャル空間の内外を繋ぐ「Integration」
アイテム同士というミクロな協働から少しスコープを広げます。
cluster では external call という外部URLを指定して通信できる機能が提供されています。
バーチャル空間といえば閉じたイメージですが、cluster はクリエイター自身の裁量でバーチャル空間の外側と協働できます。

この external call の実装時には、バーチャル空間内で入力したテキストがメッセージアプリに着信するというデモを公開しました。
最近では Lab から meta gadget という、バーチャル空間内でのアクティビティが現実の IoT 機器と連動するというデモを公開しています。

従来の cluster のバーチャル空間はクリエイターがコンテンツを作って公開する場でしたが、今では様々なサービスとのインテグレーションの可能性が与えられています。
人類の創造力は、様々な問題を解決することにも繋がります。
現在は OSC (OpenSound Control) で cluster の外部から cluster のバーチャル空間にデータ送信が行える機能を開発中です。
これまで苦手だった cluster 外からのデータの push や、ローカル環境にあるソフトウェアやガジェットとの協働が比較的かんたんにできるようになります。
Discussion
CCK や cluster のバーチャル空間についての紹介を終えた後は Lab のメンバーとリサーチエンジニア、DevRel を交えたディスカッションの時間です。
ディスカッションでは主に Lab の中での cluster 活用方法について意見が交わされました。
Lab の中での cluster 活用方法|VR上での体験の枠組みの民主化、ログの活用しやすさ
VR 研究界隈では独自の VR 環境を Unity で 1からつくることが多いらしく、それには相応のコストがかかりますが、cluster ではその最初の環境構築を簡略化できるとのこと。
自分が設計したバーチャル空間に複数ユーザーで入れたり VR で体験できたりするということがすぐにできるのは、確かに cluster の大きな特徴かもしれません。
このランチョンセミナーでも共有された meta gadget のような再利用可能なシステムを公開することで、VR 上での体験の枠組みを民主化できます。
meta gadget のようなものをつくる土台は cluster にはありましたが、それを 1 からつくる敷居はやはり高いため、研究内容とアラインする内容であれば meta gadget のような再利用可能なシステムの公開にもコミットしていきたいとのことでした。
別の観点では、cluster のバーチャル空間での動作のログはサーバー側に保存されている点が特徴とのこと。
各クライアントにログが保存されている場合は、その収集やアグリゲーションが大変ですが、サーバー側に保存されている場合は取り回しが良いそうです。
Lab だけでなく、Lab との共同研究であればサーバーのログの共有なども可能となっています。
Q&A
質疑応答の時間になると、かなり具体的な質問が出てきました。
Q. アイテム間の message passing について、どのユーザーがメッセージングを行ったかわかりますか
A. わかるように実装が可能です。
message passing はユーザーが直接行うのではなく、アイテムの仕組みとしてクリエイターが実装するものですので、アイテムを操作している主体のユーザーをアイテム自信が定義できていれば、その情報をメッセージに含めて他のアイテムに送信することが可能です。
message passing は ClusterScript という JavaScript をベースにしたスクリプトによって実行可能です。
ClusterScript はワールドやアイテムをつくるクリエイターにより実装されるものです。
下記はシンプルな実装例ですが、アイテムに触れたユーザーの ID を message passing している例です。
ClusterScript では PlayerHandle というユーザーを表すインターフェースからユーザーの表示名や ID を取得することができます。
この例ではあらかじめメッセージ送信元のアイテムが送信先を知っているものとしています。
$.onInteract((playerHandle) => {
const receiver = $.worldItemReference("receiver_item");
receiver.send("protocol_name", { userId: playerHandle.userId });
});
Q. message passing ではレート制限のようなものはありますか
A. あります。
ランチョンセミナーが行われた 2024/12/7 時点では、下記のような制限となっています。
ひとつのアイテムあたり 10回/秒
ただし、この制限は近々試験的に緩和する予定です(12/17から緩和をスタートしたのでぜひ使ってみてください)。
緩和内容は下記の通りです。
スペース内の send 回数合計 3000回/秒
かつスペース内のメッセージのサイズ合計 100kB/秒

Q. OSC はなにがどこまで制御できますか
A. 現状は開発中で仕様策定中であるため、正確な情報はありません。
OSC の入力を受けるのは Cluster Script であるため、スクリプトで制御できる全てのことを OSC 入力を契機に行うことができます。
質疑応答でも例に挙げられていましたが、メニューを開くなどのシステム UI の操作はスクリプトからはできません、要望が多い場合は対応を検討いたします。
スクリプトの実行頻度はユーザーの端末にも依存しますがおおよそ 20~30回/秒 です。
スクリプトで OSC 入力を受け付ける構造上、OSC 入力データの処理頻度はスクリプトの実行頻度が律速となります。
それ以上の頻度で OSC からのデータ入力があった場合のデータの扱いなどはまだ未定です。
Q. cluster を用いて研究を行ってもよいですか
A. clusterの利用規約やすでに公開されている営利利用に関するガイドラインに違反しない限り、個人であっても教育機関に所属されていても、clusterを用いた研究活動を実施していただいて問題ありません。
メタバース研究所との共同研究については個別にご相談ください。
Wrap Up
cluster は様々なクリエイターによる UGC が体験できるバーチャル空間から空間外のものと連携できるバーチャル空間になっています。
クラスター社のミッションである「人類の創造力を加速する」はエンタメ領域だけではなく問題解決にも向けられる土台ができつつあります。
様々なものとインテグレーションできるほど解決できる問題は増えるはずです。
開かれたバーチャル空間に興味のある方は、ぜひ cluster を触ってみてください!