ProtoFlux

From Resonite Wiki
This page is a translated version of the page ProtoFlux and the translation is 100% complete.


Protoflux
公式のProtoFluxロゴ

ProtoFlux は、ProtoFlux Tool を使用して 3D 空間内で操作できるノードベースのスクリプト言語です。

ProtoFlux は、私たちのクリエイティブツール群の中でも最高峰に位置する視覚的プログラミング言語です。熟練の開発チームが設計したこの言語は、シンプルなインタラクションから複雑なゲームやシステムまでを迅速にプロトタイプ/構築できるようにし、リアルタイム共同編集と即時フィードバックを完全にサポートします。アバターやワールドのインタラクティブ性から、複雑なシステム、ゲーム開発に至るまで、あらゆるものを作り上げることができます。

https://resonite.com/features.html

使い方

ProtoFlux はワールド内でノードとして表現されており、ProtoFlux Node Browser でノードを選択し、ProtoFlux Tool からスポーンさせることができます。

ProtoFlux でスクリプトを開始するには、Inventory に含まれる Resonite Essentials フォルダーから ProtoFlux Tool を簡単にスポーンできます(ツール自体は Essentials フォルダー内の Tools フォルダーにあります)。

ProtoFlux Browser Version を参照するか、網羅的な一覧をご覧になりたい場合は Alphabetical list of all nodes をご覧ください。各ノードのページには、これら両方の一覧へのリンクが設けられています。

まず ProtoFlux を使い始めるには、前述のフォルダーから ProtoFlux Tool をスポーンして装備します。装備すると、Context menu に ProtoFlux ノードブラウザーが表示されます。ノードを選択するには、ProtoFlux Tool でそのノードをダブルクリックしてください。ノードが選択されると、ツールの上部にノード名が表示されます。その後、もう一度ダブルクリックして選択したノードをスポーンします。

すでに配置済みのノードを素早く選択するには、そのノードにレーザーを当てながら Secondary ボタンをタップしてください。

ノードを接続するには、レーザーをノードの接続ポイントに向けた状態で Primary(ほとんどのコントローラーではトリガー、または左クリック)を押し続け、ワイヤーをドラッグして別のノードの接続ポイントに合わせたら Primary を離します。接続したワイヤーを切るには、Primary を押したまま ProtoFlux Tool の先端から伸びる赤い線でワイヤーを横切ってください。

コンポーネントやスロットとのインターフェース(連携)

スロットやコンポーネントのプロパティを変更・取得するには、ProtoFlux Tool で対象のフィールド名(たとえば、スロットの「Position」と表示されている部分)にレーザーを当てながら、コントローラーでつかむ操作(または右クリック)を行います。その状態で Context menu を開くと、3つのオプションが表示されます。

Source:このオプションを選ぶと、保持していたプロパティのソースを参照するノードがスポーンされます。ProtoFlux を使って、そのフィールドの値を読み取ったり、書き込んだりするために使用されます。

Drive:このオプションを選ぶと、保持していた変数に対してローカルで継続的に値を書き込むためのノードがスポーンされます。

Reference:このオプションを選ぶと、指定した値のフィールドへのリファレンスを取得するためのノードがスポーンされます。これは、ProtoFlux:Tween Value のように、変更対象の値へのリファレンスが必要なノードで役立ちます。


Protofluxのパッキング/アンパッキング

ProtoFlux をパックするには、ProtoFlux Tool を使って ProtoFlux のグループを指しながら Secondary を押し続けます。選択された ProtoFlux は淡い青色に変わり、選択状態になったことを示します(この状態では、選択された複数の ProtoFlux が一つのオブジェクトのように扱われ、グループを簡単に移動させることができます)。

ProtoFlux を選択したら、Inspector を使って空の Slot を作成します。これが、ProtoFlux をパックする先のスロットになります。次に ProtoFlux をパックするには、Inspector の左側からそのスロットをつかみ、ProtoFlux Tool の上にスロット名が表示されるようにします。その状態で Context menu を開き、「Pack Into(パックする)」を選択します。パックされた ProtoFlux は通常どおり動作しますが、視覚的な表示は非表示になり、いくつかの最適化が適用されます。

パックした ProtoFlux をアンパックするには、パック先に使用した同じスロットをつかみ、ProtoFlux Tool を装備した状態で Context menu を開きます。すると、「Unpack(アンパック)」のオプションが表示されるはずです。


Variables(変数)

ProtoFlux には、3 種類の汎用変数(ジェネリック変数)があります。

最もシンプルな変数の種類は「Data Model Store(データモデルストア)」です。これは書き込みが行われると自動的にすべてのユーザーに同期されます。多くのシンプルなスクリプトはこれだけで完結できますが、使いすぎるとパフォーマンスに影響を与える可能性があります。

次に位置するのが「Store(ストア)」です。これは多くのプログラミング言語における通常の変数に近いもので、ネットワーク上では同期されません。そのため、同期処理によるオーバーヘッドが発生せず、軽量ですが、ユーザー間で状態がずれる(デシンク)可能性があります。

最後に「Local(ローカル)」があります。これは実行チェーンごとにインスタンス化される変数で、ProtoFlux が同時に2回呼び出された場合でも、それぞれのコンテキストから読み書きが可能です。それぞれの呼び出しは固有の変数インスタンスを使用し、実行が終了するとそのインスタンスは破棄されます。

Impulses(インパルス)

Impulses を参照