マニュアル: カスタムアクションプラグイン

マニュアル: AIを活用したカスタムアクション/条件作成機能

AIを活用したカスタムアクションプラグイン作成

プログラミング経験がなくても、自作のアクションや条件を作成したい場合は、AIの活用を検討しましょう。

カスタムアクションプラグインは、ベースエンジンである Godot Engine の機能を利用して作成されます。Godot Engine は現在のAIモデルに広く学習されているため、AIによるコード生成との相性が良く、ACTION GAME MAKER向けのプラグインコードを生成できる場合があります。

AIへの指示例

アクションを作成する場合の例

以下のようなプロンプトをAIに入力します。

これは、Godot Engine 4.4のカスタムエディターである ACTION GAME MAKER 用のプラグインを作成するスクリプトです。

ACTION GAME MAKER はFSM型のヴィジュアルスクリプトエディターであり、Godot Engine の基本機能を利用できます。

プラグインのオーナーは以下のいずれかです。

  • GameObject(CharacterBody2D ベースのカスタムノード)

  • Area2DGameObject(Area2D ベースのカスタムノード)

GameObjectVariableSettings などのデータ保存用ノードを持ち、さらにプロジェクト共通のデータベースも利用できます。アクセスAPIは以下を参照してください。

Manual: Method/Signal/API List

以下は新しいアクションを追加するためのサンプルコードです。

@tool
extends AGMPluginAction
class_name CustomAction

## 数値
@export var num: float = 0.0

## 属性
@export_enum("Fire", "Water", "Earth") var elements: int = 0

# タブを定義
func get_plugin_tab_name() -> String:
    return "タブ"

# グループを定義
func get_group_name() -> String:
    return "グループ"

# 説明文を定義
func get_description() -> String:
    return "説明内容"

# ステート入場時に呼ばれる
func on_state_enter(p_owner: Object) -> void:
    print("AGMPlugin : CustomAction: on_state_enter")

# ステート中常に呼ばれる
func on_state_update(p_owner: Object, p_delta: float) -> void:
    print("AGMPlugin : CustomAction: on_state_update")

    var gameobject: GameObject = p_owner as GameObject
    var basesettings: BaseSettings = gameobject.get_base_settings()

    basesettings.set_hp(num)

# ステート退場時に呼ばれる
func on_state_exit(p_owner: Object) -> void:
    print("AGMPlugin : CustomAction: on_state_exit")

このサンプルコードを元に、【実現したい動作】 を行うプラグインを作成してください。

条件を作成する場合の例

条件を作成する場合も同様ですが、条件用のサンプルコードを使用します。

これは、Godot Engine 4.4のカスタムエディターである ACTION GAME MAKER 用のプラグインを作成するスクリプトです。

ACTION GAME MAKER はFSM型のヴィジュアルスクリプトエディターであり、Godot Engine の基本機能を利用できます。

プラグインのオーナーは以下のいずれかです。

  • GameObject(CharacterBody2D ベースのカスタムノード)

  • Area2DGameObject(Area2D ベースのカスタムノード)

GameObjectVariableSettings などのデータ保存用ノードを持ち、さらにプロジェクト共通のデータベースも利用できます。アクセスAPIは以下を参照してください。

Manual: Method/Signal/API List

以下は新しい条件を追加するためのサンプルコードです。

@tool
extends AGMPluginCondition
class_name CustomCondition

# タブを定義
func get_plugin_tab_name() -> String:
    return "タブ"

# グループを定義
func get_group_name() -> String:
    return "グループ"

# 説明文を定義
func get_description() -> String:
    return "説明内容"

# 条件入場時に呼ばれる
func on_condition_enter(p_owner: Object) -> void:
    print("AGMPlugin : CustomCondition: on_condition_enter")

# 条件判定のために常に呼ばれる
func on_judge_condition(p_owner: Object, p_delta_time: float) -> bool:
    print("AGMPlugin : CustomCondition: on_judge_condition")

    var gameobject: GameObject = p_owner as GameObject
    var basesettings: BaseSettings = gameobject.get_base_settings()

    if basesettings.get_hp() <= 0:
        return true
    else:
        return false

# 条件退場時に呼ばれる
func on_condition_exit(p_owner: Object) -> void:
    print("AGMPlugin : CustomCondition: on_condition_exit")

このサンプルコードを元に、【判定したい条件】 を条件とするプラグインを作成してください。

指示を出す際のコツ

  • AIエージェントはAPIのアクセスパスやメソッド名を誤る場合があります。その場合は上記ドキュメントを参照し、正しいAPI情報をAIへ伝えて再生成を依頼してください。

  • class_name、タブ名、グループ名は競合を避けるため、自分で調整することをおすすめします。

  • 移動系アクションを作成する場合、ACTION GAME MAKER 側の移動制御を停止する必要があります。そのため、独自の移動処理を実装する前に GameObject.is_release_move_controltrue に設定してください。

「いいね!」 1