見出し画像

これまでのフィードバックを Cluster Creator Kit に反映しました!【Cluster Creator Kit 2.7.0.3 リリースノート】

こんにちは、プロダクトマネージャーの Smith です。

メタバースプラットフォーム cluster では、クリエイターのみなさんの創造力をより加速できるように制作環境の改善を行っています。
この記事では Creator Kit 2.7.0.3 を中心とした改善項目について解説していきます。


バージョンについて

今回のリリース内容は cluster アプリを最新版の 2.109 にアップデートすることで利用できるようになります。

Creator Kit は最新版の 2.7.0 をお使いであれば更新の必要はありませんが、ドキュメントが更新されていますのでご確認ください。
ドキュメントに新たに追加された機能や仕様を Creator Kit の更新をしなくても利用できる場合には、2.7.0.3 のように 4つ目の semver が増えます。

2.7.0.3 の改善内容

今回の変更は cluster アプリを最新のバージョンにアップデートすることで適用されます。
動作確認等を行う前に、最新版であることをご確認ください。

  • ベータ機能を許容していないワールドでベータ機能を使おうとした場合の挙動の変更

  • スクリプト処理時間のしきい値の緩和

  • ログ出力フォーマットの改善

  • send() に関する改善

  • callExternal() の通信頻度の上限緩和

  • $.onStart() の不具合の修正

ベータ機能を許容していないワールドでベータ機能を使おうとした場合の挙動の変更

ベータ機能を許容しないワールドで、アクセサであるベータ機能 API を使おうとした場合の挙動を、例外を投げる挙動から undefined を返す挙動に変更しました。
以前の仕様では下記の JSON.parse() および Json.stringify() 利用時のような、ベータ機能に意図せずアクセスするケースでエラーが発生していました。

JSON.parse() および Json.stringify() では渡されたオブジェクトのキーを走査してキーに対する値を取得しようとします。 ベータ機能のアクセサを有している任意のインスタンスに対して JSON.parse() などを利用した場合、ベータ機能を許容しないワールドでもベータ機能であるアクセサを走査して値を取得しようとしていたため、エラーが発生しているケースがありました。

スクリプト処理時間のしきい値の緩和

スクリプト処理時間のしきい値を 50ms から 500ms に緩和しました。
しきい値は Creator Kit 2.7.0 で一度 50ms に変更されましたが、この変更の影響を受けるコンテンツが確認されたためしきい値を緩和しました。

今回は緩和するとともに、50ms を超過した処理に対してはコンソールにワーニングが表示されるようになります。
なお、処理時間が 500ms に達した場合はこれまで通りスクリプトの処理が中断されます。
しきい値による制御を受ける処理時間は、 onUpdate() などのコールバック関数スコープ内を実時間で計測したものが対象となります。

ログ出力フォーマットの改善

一部のログ出力にアイテムの名前が追加されるようになりました。
これまでエラーやワーニングが発生しても、どのアイテムが問題だったのかが分かりにくい問題が改善されています。
上述のスクリプト処理時間のしきい値が超過したことを知らせるログについてもアイテム名が記載されるようになるため、パフォーマンスチューニングにお役立てください。
なお、ログのフォーマットは予告なく変更される可能性があります。

send() に関する改善

送信メッセージサイズの上限変更

これまで、送信メッセージサイズの上限は非公開でしたが、今回の変更で明示的に 1000 byte に設定しました。
1000 byte を超過するとワーニングが表示されますが、将来的にはワーニングではなくエラーになる予定です。
これに合わせて、 meesageType のサイズにも 100byte の上限が追加されています。

すでに作成しているコンテンツで 1000 byte を超過するワーニングが表示されている場合は、早めのご対応をお願いします。

computeSendableSize() の追加

送信しようとしているデータのサイズを取得するための API を追加しました。
ベータ機能を利用中の場合、 send() ではプリミティブな値の他に PlayerHandle インスタンスなどのオブジェクトも送信できますが、 computeSendableSize() はデータのサイズを簡易に計測するためのものです。
send() で大きめのデータを扱う際は computeSendableSize() も併用してみてください。

callExternal() の通信頻度の上限緩和

callExternal() が使われるワールドが Creator Kit で作成したワールドである場合の通信頻度の上限を新たに設定しました。
Creator Kit で作成したワールドでは 1ワールドが 1分間に通信できる回数として、上限が 100回までになります。
なおワールドクラフト用のアイテムの通信頻度は、これまで通り 1アイテム 1分間につき 5回までとなります。

$.onStart() の不具合の修正

$.onStart() を利用している時、誰かが入室状態でワールドのアップロードをおこなうと $.onStart() が毎フレーム実行されてしまう不具合を修正しました。
$.onStart() はまだベータ機能としての提供ですので、他にも問題と思われる挙動がありましたらご報告いただけると助かります。

既知の問題の解決方法

SubScene での MeshCollider の挙動

SubScene は Creator Kit 2.6.0 で公開された機能ですが、 SubScene を利用している場合は一部のMeshCollider が動作しなくなることが分かりました。
対処方法としては、該当のメッシュのモデルの Import Settings の Generate Colliders をオンにするか、Read/Write をオンにすることで正常に動作するようになります。
Read/Write をオンにして対処する場合はメモリ消費量が増えるため Generate Colliders での対応を推奨しています、その場合は重複してコライダーがつかないようにシーンや prefab の構造をご確認ください。

ご意見・ご感想お待ちしています

cluster は、みなさんが楽しくバーチャル空間で創造できるように様々な改善を行っています。
Discord ではみなさんの要望を投稿したり、クリエイターさん同士でお互いの創作活動を支え合える場所を設けていますので、ぜひご活用ください!

Discordサーバー: Creator Community のご案内
https://docs.cluster.mu/creatorkit/support/creator-community/