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 とは何か、どこにあるのか、どう動作するのか、いつ使うべきかを紹介します。後のレッスンでシステム全体を詳しく学びますが、この概要は Logic Bricks が Cave のワークフローにどのように組み込まれているか理解する助けになります。

ビデオチュートリアル

Logic Bricks の使い方を解説したビデオチュートリアルがあります。ぜひ視聴をおすすめします。

YouTubeで見る

より深く理解するうえで効果的な方法です。

しかしここで続ける場合は簡単な紹介をしましょう:


Logic Bricks とは何か?

Logic Bricks は実際のコードを書かずに、視覚的にロジックを素早く作れるグラフです。

image.png

Unreal Engine の Blueprints など他のビジュアルスクリプティングに馴染みがあるなら、各ブリックはノードに相当しますが、Cave の用語でブリックと呼びます。ブリックはさまざまなロジックを表せます:

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

ブリック同士をつないで動作を組み立てます。

プログラミングが初めてでも、グラフとして動作を視覚的に確認できるため親しみやすい方法です。

例えば、単純なグラフは以下のような意味になります:

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

学習中は長いスクリプトより視覚的なほうが理解しやすいことが多いです。

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

このレッスンは概要にすぎません。

Logic Bricks はもっと深い内容があります:

  • 関数
  • フロー制御
  • 値のソケット
  • 実行時デバッグ
  • コメント
  • アセットハンドラーブリック
  • 再利用可能なグラフ
  • State Machine との統合

これらは後のレッスンで詳しく扱います。

今は Logic Bricks の役割を理解することが目標です。すなわち、視覚的に動作を構築し、システムをつなぎ、インタラクションを試作し、ゲームオブジェクトをイベントに反応させる手段です。

完全なチュートリアルはこちらを視聴ください

Logic Bricks のアセット

Logic Bricks のグラフはアセットです。Asset Browser でシーンや Pythonスクリプト、Timeline、Material、Entity Template と同様に作成します。

アセットなので:

  • 名前を付けられます
  • フォルダーで整理できます
  • Asset Browser で選択可能です
  • Properties タブで編集できます
  • 複数のエンティティで再利用可能です
  • プロジェクトとともに保存されます

重要なのは、グラフ自体がプロジェクトのコンテンツであることです。

例えば「Door Logic」というアセットを作成し複数のドアで使用できます。後でグラフを改良すれば、それらのドアは共有された更新動作を得ることができます(再利用の設計次第ですが)。

Logic Bricks コンポーネント

ゲーム内で Logic Bricks アセットを動かすには、ロジックをつけたいエンティティに Logic Bricks Component をアタッチします。

image.png

コンポーネントはどの Logic Bricks アセットを使うか決めます。実行時、コンポーネントは自身が所属するエンティティ用にグラフの実行インスタンスを作成します。

つまり:

  • アセットは共通動作を定義します
  • 各エンティティは独自の実行インスタンスを持ちます
  • 同じグラフを複数のエンティティで再利用できます

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

再利用可能な Logic Bricks

Logic Bricks は再利用可能で、これは最大の強みのひとつです。

例として「Open Door」という Logic Bricks アセットを作成し、複数のドアエンティティが同じグラフを使うことができます。

再利用ロジックは以下の場合に有効です:

  • 多くのオブジェクトが同じ動作を共有する
  • 各オブジェクトが少し異なるローカル値を持つ必要がある
  • 動作を1か所で改良したい
  • プロジェクトを整理されたまま保ちたい

これは以下のような関係に似ています:

再利用可能なアセット 再利用先
Python Script Python Component
Entity Template シーン内インスタンス
Material メッシュエンティティ
Logic Bricks Logic Bricks Component

同じグラフを多数の場所にコピーするのではなく、ひとつの動作アセットを保ち、必要に応じて各エンティティを設定します。

Logic Bricks のプロパティ

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

これらのプロパティは Logic Bricks Component に同期され、ローカルで上書き可能です。

例えば再利用可能なダメージグラフなら:

  • 最大体力
  • ダメージ量
  • ダメージのクールダウン
  • 対象タグ
  • トリガー後にオブジェクトを破壊するか

などを公開し、各エンティティが異なる値を持てます。

スパイクトラップは低いダメージを与え、溶岩の範囲は同じロジックでより強いダメージを与えるようにできます。

フローイベント

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

よく使われるフローイベントには:

イベント いつ実行されるか
On Start ロジック開始時
On First Update 開始後の最初の更新時
On Update ゲーム更新時に繰り返し
On Paused Update 一時停止更新が許可されている間
On Late Update 更新サイクルの遅い段階
On End ロジック終了時

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

イベントや他のトリガーなしに、グラフが処理を始める理由はありません。

ロジックフロー

ロジックフローは何がいつ起きるか決めます。フローソケットはイベントとアクションのブリックをつなぎます。

例:

image.png

この場合、グラフが始まるとプリントアクションが動作する意味です。

初心者に重要な区別は:

接続タイプ 目的
フロー接続 アクションがいつ実行されるか定義する
値接続 それらアクションにデータを渡す

この違いを理解すると Logic Bricks はずっと読みやすくなります。

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

実行時デバッグ

Logic Bricks はテスト中に有用な実行時フィードバックを表示できます。

Play Mode 中に所有エンティティを選択すると、実行されたブリックやリンクがハイライトされ動作が見えます:

image.png

実行時デバッグは以下のような疑問の答えに役立ちます:

  • イベントは実行されたか?
  • 条件は満たされたか?
  • アクションは起動されたか?
  • グラフは正しいオブジェクトに届いたか?
  • コンソールにエラーは出たか?

ドアが開かなかった場合、このフィードバックでトリガーイベントの実行、条件の合格、アクションがドアに届いたかを確認できます。

テスト後に Logic Brick を選択すると、画面の左下に実行回数と平均実行時間も表示されます。

State Machine での Logic Bricks

Logic Bricks は単体コンポーネントだけでなく、State Machine 内でも使えます。

例:

  • State Machine の状態の振る舞いに Logic Bricks を使う
  • 遷移の条件に Logic Bricks を使う

State Machine は後で説明しますが、Logic Bricks がより大きな構造化された動作システムの一部になれることは覚えておいてください。

つまり、単純なインタラクションはビジュアルロジックで、敵の状態などの整理された動作は State Machine で管理するといった使い分けができます。

Logic Bricks を使うべき時

Logic Bricks は以下の場合に適しています:

  • ゲームプレイロジックを学ぶ初心者
  • ビジュアルロジックを好むデザイナー
  • 迅速なプロトタイプ作成
  • シンプルなインタラクション
  • トリガー処理
  • UI動作
  • 再利用可能なゲームプレイイベント
  • システム同士の接続

初心者向けの良い例:

  • プレッシャープレートでドアを開ける
  • 回復アイテムで体力を増やす
  • トリガーで Timeline を開始する
  • UIボタンでシーンを切り替える
  • ハザードでプレイヤーにダメージを与える
  • チェックポイントで位置を保存する

非常に大規模または複雑なシステムでは Python のほうが整理しやすいこともありますが、多くのゲーム内インタラクションは Logic Bricks のほうが迅速で視覚的に確認しやすいです。

シンプルなルール

Cave Engine のビジュアルスクリプティングは Python API と1対1の対応関係があり、コードで使える関数はすべて Logic Bricks でも利用できます。つまりロジック作成時に自由にどちらかを選べます。つまり:

  • 動作をグラフとして見たいときは Logic Bricks を使う
  • コードで表現したほうがわかりやすいときは Python を使う
  • 両方を組み合わせることも可能

どちらの方法も Cave の一部で、多くのプロジェクトは一部をビジュアルロジック、他を Python で構築しています。