Antigravity が Unreal Engine 5 サポートを正式機能にしたことで、ゲーム開発における AI 活用の選択肢が一気に広がりました。私はもともと iOS アプリ開発が本業ですが、最近は趣味で UE5 を触っており、Antigravity との統合を本格的に試した経験から、現場で使えるレベルのガイドをまとめました。
このガイドは「とりあえず動かしたい」という入門レベルではなく、「Antigravity を本気で UE5 開発のメインツールに据えたい」 という方を想定しています。Blueprint と C++ を行き来しながらの開発、エディタ拡張、本番ゲームでのランタイム AI 利用まで、4 つの章に分けて解説します。
正直に書いておくと、4月時点での UE5 統合は「全機能が完璧」ではありません。Blueprint の自動生成精度には限界がありますし、巨大なアセットを扱うときのレスポンスは遅いです。それでも導入する価値があるか という判断材料も含めて、率直に書いていきます。
第1章:セットアップ — 5分で動く最短手順
UE5 統合を有効化する手順は次の 4 ステップです。なお、UE5.3 以降が前提になります。UE5.2 以前は公式サポート対象外で、私が試した範囲でもエディタ連携が安定しませんでした。
# Step 1: Antigravity の UE5 プラグインをインストール
# Antigravity Marketplace から検索: "UE5 Integration"
# または CLI から:
antigravity plugins install ue5-integration
# Step 2: UE5 プロジェクトのルートで認証
cd /path/to/your-ue5-project
antigravity ue5 init
# Step 3: プロジェクト固有の設定ファイル生成
# .antigravity/ue5-config.yaml が自動生成される
# ここで「自動生成を許可するファイル種別」「除外パターン」を設定
# Step 4: UE5 エディタを起動
# プラグインタブに「Antigravity」が追加されているはず
ue5-config.yaml の中身は以下のような構造です。
project :
engine_version : "5.4"
source_root : "Source/MyGame"
content_root : "Content"
generation :
blueprint :
enabled : true
require_review : true
cpp :
enabled : true
style : "Epic"
shaders :
enabled : false
excluded_paths :
- "Content/ThirdParty/**"
- "Plugins/**"
個人的に重要だと感じる設定 は require_review: true の部分です。Blueprint の自動生成は精度が完璧ではないので、必ずレビューフロー(差分プレビュー)を経由する設定にしておくのが安全です。
第2章:Blueprint 自動生成 — 何が得意で、何が苦手か
実プロジェクトで使ってみた率直な評価から書きます。Antigravity の Blueprint 自動生成は、得意な領域と苦手な領域がはっきり分かれています 。
得意なケース
UI ロジックの組み立て (メインメニュー、設定画面、HUD の制御)
入力アクションのバインド (Enhanced Input System への接続)
シンプルな状態遷移 (プレイヤーの歩く・走る・しゃがむなど)
テンプレート的な敵 AI (プレイヤーを追跡する基本的な挙動)
これらは構造がパターン化されているため、自然言語で「メインメニューに『新規ゲーム』『続きから』『設定』『終了』の 4 つのボタンを配置して、それぞれ対応する画面に遷移する Blueprint を作って」と指示すれば、9 割は使える状態で出力されます。
苦手なケース
物理演算を含む複雑な挙動 (ラグドール、布シミュレーションとの連動)
マルチプレイヤー同期 (Replication 関連の細かい挙動)
パフォーマンス重視の Tick 処理
既存の大規模 Blueprint への部分的な改修
特にマルチプレイヤー同期は、UE5 の Replication の概念が複雑すぎて、現状の AI では対応しきれていないと感じます。私自身、これに頼ろうとして 1 日溶かした経験があり、マルチプレイヤー周りは AI に任せず、自分で書いた方が速い という結論に落ち着きました。
自動生成の実例
「インベントリシステムのベース Blueprint を作って」という指示の例です。
Antigravity プロンプト:
「以下の仕様でインベントリ Blueprint を作成してください。
- 最大スロット数: 20
- アイテムは ItemDefinition データアセットを参照
- Add/Remove/HasItem のメソッドを公開
- インベントリ変更時に OnInventoryChanged イベントを発火
- 重量制限は今回は不要」
このレベルの指示であれば、Blueprint と必要なデータアセット、関連する Widget の雛形まで一気に生成されます。生成後の Blueprint は必ず Antigravity の Diff Viewer で確認し、特に「変数のデフォルト値」「イベントのバインド先」をチェックする癖をつけてください。デフォルト値が想定と違うことが、私の経験上は最も多いつまずきポイントです。
第3章:C++ コード生成 — Epic Games 規約への準拠度
C++ コード生成は、Epic Games のコーディング規約への準拠度が想像以上に高く、これは正直驚きました。UCLASS、UPROPERTY、UFUNCTION のマクロ使用、ヘッダ/実装ファイルの分割、Forward Declaration の使い方まで、Epic 公式のサンプルプロジェクトと遜色ないレベルで出力されます。
例として、シンプルな AI コントローラーを生成した結果がこちらです。
// EnemyAIController.h
#pragma once
#include "CoreMinimal.h"
#include "AIController.h"
#include "EnemyAIController.generated.h"
class UBehaviorTree ;
class UBlackboardComponent ;
UCLASS ()
class MYGAME_API AEnemyAIController : public AAIController
{
GENERATED_BODY ()
public:
AEnemyAIController ();
protected:
virtual void OnPossess ( APawn * InPawn ) override ;
virtual void Tick ( float DeltaSeconds ) override ;
UPROPERTY ( EditDefaultsOnly , Category = "AI" )
UBehaviorTree * BehaviorTreeAsset;
private:
UPROPERTY ()
UBlackboardComponent * BlackboardComp;
void UpdatePerception ();
};
// EnemyAIController.cpp
#include "EnemyAIController.h"
#include "BehaviorTree/BehaviorTree.h"
#include "BehaviorTree/BlackboardComponent.h"
AEnemyAIController :: AEnemyAIController ()
{
PrimaryActorTick.bCanEverTick = true ;
}
void AEnemyAIController :: OnPossess ( APawn * InPawn )
{
Super :: OnPossess (InPawn);
if (BehaviorTreeAsset && BehaviorTreeAsset->BlackboardAsset)
{
UseBlackboard (BehaviorTreeAsset->BlackboardAsset, BlackboardComp);
RunBehaviorTree (BehaviorTreeAsset);
}
}
void AEnemyAIController :: Tick ( float DeltaSeconds )
{
Super :: Tick (DeltaSeconds);
UpdatePerception ();
}
void AEnemyAIController :: UpdatePerception ()
{
// プレイヤーの視認チェックと Blackboard 更新
}
ヘッダの順序、MYGAME_API マクロの正しい使い方、Forward Declaration の徹底など、UE5 の C++ で「やっていそうでやらない人が多い」細部まで押さえられています。
ただし、コンパイルエラーが完全にゼロではない 点は注意です。私の経験では、生成されたコードのうち 1〜2 割は何らかの修正(インクルードパスや、API バージョンによる関数シグネチャの違い)が必要でした。
第4章:ランタイム AI — Antigravity をゲーム内 NPC に接続する
これが UE5 統合の真価が発揮される領域です。Antigravity の API を ゲーム実行時 に呼び出して、NPC の対話や行動決定を AI に任せる実装パターンを紹介します。
基本構造
// AntigravityNPCComponent.h
#pragma once
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "AntigravityNPCComponent.generated.h"
UCLASS (ClassGroup = (AI), meta = (BlueprintSpawnableComponent))
class MYGAME_API UAntigravityNPCComponent : public UActorComponent
{
GENERATED_BODY ()
public:
UAntigravityNPCComponent ();
UFUNCTION ( BlueprintCallable , Category = "AI" )
void RequestDialogue ( const FString & PlayerInput );
UPROPERTY ( BlueprintAssignable , Category = "AI" )
FOnDialogueResponseDelegate OnDialogueResponse;
protected:
virtual void BeginPlay () override ;
UPROPERTY ( EditDefaultsOnly , Category = "AI" )
FString CharacterPersona;
UPROPERTY ( EditDefaultsOnly , Category = "AI" )
FString ModelName = TEXT ( "gemma-4" );
private:
void HandleAPIResponse ( const FString & Response );
};
呼び出し側の実装は、HttpModule を使って Antigravity の HTTP エンドポイントに POST します。重要なのは非同期化 で、ゲームループをブロックしないようにする必要があります。
パフォーマンス最適化の 3 つの鉄則
ゲーム内で AI を使う上で、私が痛い目に遭って学んだ 3 つの鉄則を共有します。
ひとつめ:Tick で API 呼び出しを絶対にしない 。これは当たり前のようですが、Blueprint で組んでいると意外とやってしまいがちです。Tick で AI 呼び出しが走ると、フレームレートが一気に落ちます。
ふたつめ:Streaming レスポンスを優先する 。NPC の長い台詞を一気に待つのではなく、ストリーミングで受け取って文字を順次表示する設計にすると、体感の応答時間が劇的に短縮されます。
みっつめ:オフラインフォールバックを必ず用意する 。インターネット接続が不安定なシーンでも、ゲーム自体は遊べる状態を保つこと。私はあらかじめ用意した「定型台詞のプール」からランダムに選ぶシンプルなフォールバックを実装しています。
モデル選択の現実的な判断
ランタイム AI で使うモデルは、私は以下の使い分けをしています。
用途 推奨モデル 理由
雑談 NPC Gemma 4 応答速度が速く、コストが低い
メインキャラとの会話 Claude Sonnet 4.6 文脈理解の質が高い
ボス戦の挑発台詞 Claude Opus 4.6 創造性が必要な場面
ハブワールドの群衆 ローカル Gemma コスト最重要、応答品質は二の次
ゲーム全体で 1 種類のモデルに絞ると、コストかパフォーマンスのどちらかを犠牲にせざるを得ません。シーンごと・キャラごとにモデルを切り替える設計 が、結果として最も満足度の高い実装になりました。
個人開発者の視点から(実体験メモ)
つまずきやすいポイント Top 5
最後に、私自身が UE5 統合で実際にハマった順に 5 つのトラブルを共有します。
1. Plugin 認識エラー("Antigravity Plugin not found in Project Settings")
プロジェクトの .uproject ファイルに "Antigravity" プラグインの依存を追加していないと発生します。手動編集が必要です。
2. Blueprint 生成後にコンパイルエラーが残る
これは require_review: true でも 100% 防げません。生成された Blueprint をすぐにコンパイルし、エラーが出たら Antigravity の Diff Viewer に戻って「変更を破棄」を選び、プロンプトを修正してから再生成する方が早いです。
3. Hot Reload が効かない
C++ コード生成後の Hot Reload が反映されないことがあります。これは UE5 自体の既知の不安定さが原因で、Antigravity 由来ではありません。エディタを再起動する以外の解決策は今のところありません。
4. Content Browser のメタデータ破損
頻発はしませんが、自動生成された Blueprint のメタデータが破損して、Content Browser でサムネイル表示が崩れることがあります。Asset Manager → Refresh Asset Registry で復旧します。
5. ランタイム AI のレイテンシが想定より大きい
特にモバイル向けに UE5 ビルドする場合、Antigravity API 呼び出しのレイテンシが PC ビルドの 2〜3 倍になることがあります。SSL ハンドシェイクのオーバーヘッドが原因なので、接続プールの再利用 を実装することで改善できます。
UE5 統合に最初に触るなら、第 1 章のセットアップ後、第 2 章の「インベントリ Blueprint」生成例 から始めてみてください。30 分で「Antigravity が UE5 開発でどこまでやってくれるか」の感覚が掴めます。