Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Logic BricksはCaveのビジュアルスクリプティングシステムです。

ノードを接続することで、直接Pythonコードを書くことなくゲームプレイの振る舞いを作成できます。

cave-nocode-b.png

このレッスンでは、Logic Bricksが何であるか、どこに存在するか、どのように動作するか、いつ使用すべきかを紹介します。後の詳細なレッスンでシステム全体を学びますが、この概要を理解することでCaveのワークフローにおけるLogic Bricksの役割を理解できます。

ビデオチュートリアル

Logic Bricksの使い始め方に関するビデオチュートリアルが完全に用意されています。ぜひご覧ください。

YouTubeで見る

それにより、より深く学ぶための良いアプローチになります。

ですが、ここで続けたい場合は、簡単な紹介を始めましょう。


Logic Bricksとは?

Logic Bricksは、実際のコードを書かずに視覚的にロジックを迅速に作成できるビジュアルロジックグラフです。

image.png

もし他のビジュアルスクリプティングアプローチ(例えば、Unreal EngineのBlueprints)に慣れている場合、各Brickは本質的にノードです。しかしCaveの命名規則では、これらをBricksと呼びます。Bricksは多くの種類のロジックを表すことができます:

  • イベント。
  • アクション。
  • 値。
  • 数学。
  • 文字列。
  • エンジンユーティリティ。
  • エンティティ操作。
  • コンポーネント操作。
  • アセット参照。
  • 関数。

Bricksを接続することで振る舞いを構築します。

プログラミングに不慣れな方は、Logic Bricksを使うことで、グラフとして振る舞いを可視化できるため、インタラクションの作成を始める友好的な方法になるでしょう。

例えば、シンプルなグラフは次のような意味を持つかもしれません:

プレイヤーがこのトリガーに触れたとき:
  ドアを開ける。
  音を鳴らす。
  トリガーを無効にする。

そのようなインタラクションは、長いスクリプトよりも視覚的に理解しやすいことが多いです。

これはLogic Bricksコースの全体ではありません

このレッスンはあくまで概説です。

Logic Bricksはこれよりも深い内容です:

  • 関数。
  • フロー制御。
  • 値ソケット。
  • ランタイムデバッグ。
  • コメント。
  • アセットハンドラーブリック。
  • 再利用可能なグラフ。
  • ステートマシンの統合。

これらのトピックは後のレッスンで掘り下げる必要があります。

今のところ、Logic Bricksの役割を理解することが目標です:それは振る舞いを構築するための視覚的な方法であり、システムを接続し、インタラクションをプロトタイプし、ゲームオブジェクトがイベントに応答するようにするものです。

完全なLogic Bricksのチュートリアルを希望される場合、こちらを見てください

Logic Brickアセット

Logic Bricksグラフはアセットです。シーン、Pythonスクリプト、タイムライン、マテリアル、またはエンティティテンプレートを作成するのと同じように、アセットブラウザで作成します。

アセットであるため、次のことができます:

  • 名前を付ける。
  • フォルダで整理する。
  • アセットブラウザで選択する。
  • プロパティタブで編集する。
  • 複数のエンティティで再利用する。
  • プロジェクトと共に保存する。

これは重要です:グラフ自体はプロジェクトのコンテンツです。

例えば、Door Logicアセットを作成し、いくつかのドアで使用することができます。後でグラフを改善すれば、構造によってそれらのドアは更新された振る舞いを共有できます。

Logic Bricksコンポーネント

ゲーム内でLogic Bricksアセットを実行するには、Logic Bricks Componentを持つエンティティにアタッチします。

image.png

コンポーネントは、使用すべきLogic Bricksアセットを選択します。ランタイム中、コンポーネントはその所有エンティティのためにグラフのランタイムインスタンスを作成します。

つまり:

  • アセットは共有の振る舞いを定義します。
  • 各エンティティは自分自身の実行インスタンスを取得します。
  • 同じグラフは複数のエンティティで再利用できます。

これは、再利用可能なPythonスクリプトが多くのエンティティで個別に実行できるのと似ています。

再利用可能なLogic Bricks

Logic Bricksは再利用可能であり、それが彼らの大きな強みの一つです。

例えば、Open Doorという1つのLogic Bricksアセットを作成できます。それから複数のドアエンティティがその同じグラフを使用できます。

再利用可能なロジックは、次のような場合にうまく機能します:

  • 多くのオブジェクトが同じ振る舞いを共有する場合。
  • 各オブジェクトがわずかに異なるローカル値を必要とする場合。
  • 一か所で振る舞いを改善したい場合。
  • プロジェクトを整理されたままにしたい場合。

これは次のような例に似ています:

再利用可能なアセット 再利用先
Pythonスクリプト Pythonコンポーネント。
エンティティテンプレート シーンインスタンス。
マテリアル メッシュエンティティ。
Logic Bricks Logic Bricksコンポーネント。

同じグラフを多くの場所にコピーする代わりに、一つの振る舞いアセットを保持し、必要に応じて各エンティティを設定します。

Logic Brickプロパティ

Logic Bricksはプロパティを公開できます。

これらのプロパティはLogic Bricksコンポーネントに同期され、ローカルにオーバーライドできます。

例えば、再利用可能なダメージグラフは次のようなプロパティを公開できます:

  • 最大健康。
  • ダメージ量。
  • ダメージクールダウン。
  • ターゲットタグ。
  • トリガー後にオブジェクトを破壊するか。

こうして、グラフを使用する各エンティティは異なる値を持つことができます。

1つのスパイクトラップは低ダメージを与える一方で、溶岩のボリュームは同じロジックを使い、より高いダメージを与えることができます。

フローモジュメント

ロジックは通常、イベントから始まります。

一般的なフローモジュメントには次のようなものがあります:

イベント 実行されるタイミング
On Start ロジックが始まるとき。
On First Update 開始後の最初のアップデート時。
On Update ゲームが更新されている間、繰り返し。
On Paused Update 一時停止されたアップデートが許可されている間。
On Late Update アップデートサイクルの後半。
On End ロジックが終了する時。

イベントはグラフの入り口です。

イベントや別のトリガーが無ければ、グラフは作業を開始する理由がありません。

ロジックフロー

ロジックフローは何が起こり、どの順序で起こるかを決定します。フローソケットはイベントとアクションブリックを接続します。

例えば:

image.png

これは、グラフが始まるときにprintアクションが発生することを意味します。

初心者にとっての大切な区別は:

接続タイプ 目的
フロー接続 アクションが実行されるタイミングを定義します。
値接続 それらのアクションにデータを提供します。

この概念が理解できると、Logic Bricksはずっと読みやすくなります。

より複雑なグラフは、分岐、遅延、スケジューリング、関数の呼び出し、値の読み取り、エンティティの修正、コンポーネントとの通信などが可能です。

ランタイムデバッグ

Logic Bricksは、テスト中に役立つランタイムフィードバックを表示できます。

ゲームプレイモード中に所有エンティティが選択されているとき、実行されたブリックやリンクが強調表示され、何が実行されたかを視覚化することができます:

image.png

ランタイムデバッグは次のような問いに答えるのに役立ちます:

  • イベントは実行されましたか?
  • 条件は通過しましたか?
  • アクションは実行されましたか?
  • グラフは正しいオブジェクトに到達しましたか?
  • コンソールにエラーが表示されましたか?

ドアが開かなかった場合、このフィードバックは、トリガーイベントが実行されたか、条件が通過したか、アクションがドアに到達したかどうかを点検するのに役立ちます。

ゲームをテストした後にロジックブリックを選択すると、実行された回数や平均実行時間が画面の左下隅に表示されます。

ステートマシン内のLogic Bricks

Logic Bricksはスタンドアロンコンポーネントとしてだけでなく、ステートマシン内でも使用されます。

例えば:

  • ステートマシンの状態は、その振る舞いにLogic Bricksを使用できます。
  • トランジションは、その条件にLogic Bricksを使用できます。

ステートマシンについては後で説明されますが、Logic Bricksがより大きな構造化された振る舞いシステムの一部になれることを知っておくと役立ちます。

これは、シンプルなインタラクションや、敵の状態のような整理された振る舞いに対してビジュアルロジックを使用できることを意味します。

Logic Bricksを使用するタイミング

Logic Bricksは次のような場合に適しています:

  • ゲームプレイロジックを学ぶ初心者。
  • ビジュアルロジックを好むデザイナー。
  • クイックプロトタイプ。
  • シンプルなインタラクション。
  • トリガー。
  • UI振る舞い。
  • 再利用可能なゲームプレイイベント。
  • システムを接続すること。

初心者に適した良い例には:

  • 圧力プレートがドアを開ける。
  • アイテムを取得して健康が増加する。
  • トリガーがタイムラインを開始する。
  • UIボタンがシーンを変更する。
  • ハザードがプレイヤーにダメージを与える。
  • チェックポイントが位置を保存する。

非常に大規模または複雑なシステムでは、Pythonを使用した方が整理が容易かもしれません。多くのゲームプレイインタラクションでは、Logic Bricksは迅速で視覚的、かつ検査が簡単です。

シンプルなルール

KaveエンジンのビジュアルスクリプティングはPython APIとの一対一の対応を持っており、つまりコードを通じて利用できる関数はすべてLogic Bricksでも利用可能です。それにより、ゲームのロジックを作成するためにどちらを使いたいか自由に選ぶことができます。つまり:

  • 振る舞いをグラフとして見たいときはLogic Bricksを使用します。
  • 振る舞いをコードとして表現する方が簡単なときはPythonを使用します。
  • 両方を組み合わせることもできます!

両方のアプローチはCaveの一部であり、多くのプロジェクトはあるシステムにはビジュアルロジックを使用し、別のシステムにはPythonを使用します。