Stingray には、フローという、ゲームプレイ コードを作成するためのビジュアルなプログラミング システムが付属しています。このシステムは、プロジェクトのインタラクティブ動作のプロトタイプを短時間で作成する場合に最適です。フローには、ランタイム プロジェクトでイベントを検出したり、応答としてのアクションを実行するために使用できる数百の組み込みノードが用意されており、コードを実際に記述することなくプロジェクト全体を構築できるだけの完全性が備わっています。
独自のカスタム ノードを作成して、フローの可能性を拡張することもできます。カスタム ノードがランタイムで評価されると、エンジンは C または Lua 内で定義された関数を呼び出して、必要なカスタム計算を実行します。
カスタム フロー ノードを使用すると、高度な技術を持たない設計者やビジュアル アーティストであっても、新しい機能を簡単に使用してシーンの設計やゲームプレイの相互作用に取り組むことができます。これは、プロジェクトやプラグインに追加した新しいコードを公開することを意味するかもしれませんし、組み込みのフロー ノードではまだ利用できない Stingray の Lua または C インタフェースに用意されている既存の機能である場合もあります。
フロー ノードを実装する場合の Lua の利点は、次のとおりです。
ノードのプラグインを作成する必要がありません。プロジェクトのコンテンツ フォルダ内にカスタムの Lua ノード定義および実装全体を含めることができます。
通常は、C よりも Lua の方が記述するのが簡単です。入力、コンパイル、メモリ管理などに気を配る必要がありません。
Lua コードはエンジンのランタイム Lua 環境内で動作するため、Stingray Lua API で公開されているすべてのものにアクセスすることができます。エンジン プラグイン内の他の場所で追加された新機能がご使用のノードで実際に公開されている場合を除き、ノードを実装するには、Lua だけで十分である可能性があります。
C には次の利点があります。
Lua で実行できない機能を、C で実行することができます。たとえば、他のライブラリを呼び出したり、独自のエンジン プラグイン内の他の関数を呼び出したり、Lua に公開されていない Stingray エンジン API 関数を使用したりできます。
Lua で同等なコードを実行する場合よりも、高いパフォーマンスが得られる可能性があります。
フロー システムに用意されている入力および出力接続のタイプを拡張して、独自のカスタム データ タイプを使用することができます。
C ノードのフロー ノード定義には、Lua ノードよりも多くの環境設定オプションが用意されています。たとえば、特定の入力を必須として設定したり、入力値を参照するために表示される UI を通してコントロールしたりできます。
どちらの言語を選択した場合でも、基本的な原則は同じです。まず、ノードの特性を定義する SJSON ノード定義を指定する必要があり、次に、ランタイムにおいてプロジェクトのフロー グラフ内でノードがトリガされたときに実行する必要があるコードをエンジンに提供する必要があります。ただし、説明および実装は、選択した言語によって異なります。
Lua でフロー ノードを設定する方法の詳細については、「Lua でカスタム フロー ノードを作成する」を参照してください。
C でフロー ノードを設定する方法の詳細については、「C でカスタム フロー ノードを作成する」を参照してください。