マニュアル: 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 ベースのカスタムノード)
GameObjectはVariableSettingsなどのデータ保存用ノードを持ち、さらにプロジェクト共通のデータベースも利用できます。アクセス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 ベースのカスタムノード)
GameObjectはVariableSettingsなどのデータ保存用ノードを持ち、さらにプロジェクト共通のデータベースも利用できます。アクセス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_controlを true に設定してください。