ClusterScript
ClusterScript概要
ClusterScriptはアイテムやプレイヤーに様々な制御を行うことができるスクリプトです。 言語はJavaScriptに準拠し、様々な独自のAPIが用意されています。
空間の中に存在するものは、アイテム・プレイヤー・それ以外、の三種類に分けられます。
ClusterScriptには、以下の二種類があります。
- アイテム内で動作するItemScript
- プレイヤー内で動作するPlayerScript
ItemScriptがより基本的なスクリプトです。ItemScriptで行われた処理は、自動的に空間インスタンス内の全員に共有されます。 これは、後から空間に入ってきたプレイヤーに対しても適用されます。
PlayerScriptはプレイヤー内で動作します。プレイヤーのアバターや、使っているデバイスの低レイヤー機能にアクセスできます。 そのプレイヤーにしか見えない2DのオーバーレイUI (PlayerLocalUI)の制御が可能です。 また、デバイスの毎グラフィクスフレームで処理を行うこともできます。
ClusterScriptの実行
ClusterScriptの情報はそれぞれのアイテムやプレイヤーで独立して動作します。 ItemScriptはそのアイテム自身の、PlayerScriptはそのプレイヤー自身の振るまいを記述するのが基本的な機能です。 JavaScriptの変数や$.stateなどの内部の情報は、別のアイテムやプレイヤーのClusterScriptから直接アクセスすることはできません。 これにより、他者が配布しているアイテムやスクリプト等が混在しても修正不要で正しく動く可能性が高くなっています。
一方で、物理的な衝突判定や、プレイヤー毎に異なる処理を行うなどは多くのユースケースで必要です。 アイテムやプレイヤーは様々なAPIを通して自身の周辺や、空間インスタンス中に存在する他のアイテムやプレイヤーの存在を知ることが出来ます。 空間インスタンス内で、アイテムはItemHandleで、プレイヤーはPlayerHandleで一意に識別できます。これらをハンドルと呼びます。
異なるアイテムやプレイヤーに紐付いたClusterScript間で情報をやりとりするには、送信先のハンドルに対してsend()
APIを利用します。
ClusterScriptでは様々な処理が可能ですが、実行が終了したClusterScriptの中の情報は消滅します。 アイテムやプレイヤーの寿命を超えてデータを保持したり、空間インスタンスをまたいでデータのやりとりをするには、 データ管理のセーブデータや外部通信を利用することができます。
ベータAPI
ClusterScriptには多くのベータ機能が存在します。 ClusterScript Referenceでbetaフラグの付いているAPIがベータAPIです。