ANTIGRAVITY LABEN
記事一覧/アプリ開発
アプリ開発/2026-04-30中級

Godot 4 × Antigravity で個人インディーゲームを最速で形にする実践ガイド

Godot 4 と Antigravity を組み合わせて個人インディーゲーム開発を加速させる実践ワークフロー。GDScript の生成・シェーダー調整・UIノード設計まで、私が実際に試して効いたアプローチを共有します。

antigravity435godotgame-development2gdscriptindie-gamesolo-dev2

Godot 4 のプロジェクトに「Antigravity を持ち込む」と決めた最初の一週間、私はずっとGDScriptの生成精度に半信半疑でした。Unity や Unreal に比べて学習データが少ないのではないか、AI が生成するコードがそのままでは動かないのではないか、と疑っていたわけです。ところが実際に毎日触ってみると、Godot 4 の素直な構文と Antigravity のコンテキスト理解が想像以上にかみ合い、シェーダーやノード設計の試行錯誤が以前の半分以下の時間で済むようになりました。

ここでは私が個人インディー開発で実際に使っている「Godot 4 × Antigravity」のワークフローと、つまずきやすいポイントを共有します。Unity や Unreal Engine のガイドはすでに数多く存在しますが、Godot 4 については日本語の実践記事がまだ少ないので、これから始める方のヒントになればうれしいです。

なぜ Godot 4 を Antigravity で書くと相性が良いのか

Godot 4 が AI コーディングと相性が良い理由は、シーン・ノード・スクリプトという3層構造が単純で、AI に渡すコンテキストが小さく済むことにあります。Unity のように MonoBehaviour の継承関係を辿らせる必要がなく、Node2DCharacterBody2D を継承した GDScript ファイル1枚で完結する場面が多いのです。

Antigravity の Manager Surface でルートシーンと該当スクリプトを開いておけば、@onready 変数とシグナルの命名規則を自動で揃えてくれますし、func _physics_process(delta) の中で move_and_slide() を呼ぶ典型パターンもよく学習されています。Unity 連携の感触については Unity を Antigravity で高速開発する実践ノート でも触れていますが、Godot は「AI に渡すべき情報量がさらに少ない」ぶん、生成精度が安定しやすい印象です。

最初に整えたい3つのプロジェクト設定

Godot 4 のプロジェクトを新規作成したら、Antigravity が文脈を把握しやすいように次の3点を最初に整えます。

  • project.godot[input] セクションを先に書く: キーマップを先に定義しておくと、AI が Input.is_action_pressed("move_left") のようなコードを正確に生成します
  • addons/ 以下のプラグインは最小限に: GodotSteam や Phantom Camera などの大型プラグインを最初から入れると、AI がプラグイン側のメソッドを誤って提案することがあります。コアが固まってから足すのが安全です
  • globals.gd (AutoLoad) を最初に1つ作る: ゲーム状態・スコア・サウンドマネージャを集約した AutoLoad があるかないかで、AI の生成が「グローバル変数を雑に作る」か「既存の Globals に乗せる」かの分岐になります

特に AutoLoad は、Antigravity に「このプロジェクトでは状態を Globals に集約している」と暗黙に伝える実用的のシグナルになります。

プレイヤーキャラクターを Antigravity で書くときの定型

私が実際に使っているプロンプトの骨格は次のとおりです。Antigravity のチャットに @CharacterBody2D のシーンと該当 .gd ファイルを添付して、こう投げます。

このCharacterBody2Dに、以下の挙動を持つPlatformerコントローラを書いてください。
- 重力は ProjectSettings の default_gravity を使用
- 左右移動: 加速・減速付き、空中での制御は地上の60%
- ジャンプ: 短押し・長押しで高さが変わる可変ジャンプ
- コヨーテタイム 0.1秒、ジャンプバッファ 0.1秒
- 値はすべて @export で外から調整できるように

返ってくるコードはほぼそのまま使えますが、私は必ず以下のように手を加えます。

extends CharacterBody2D
 
# プレイヤーの動きを @export で外部調整可能にする
# Antigravity が生成した値を、シーンエディタから即座に試せるようにするためです
@export var move_speed: float = 220.0
@export var jump_velocity: float = -380.0
@export var air_control: float = 0.6
@export var coyote_time: float = 0.1
@export var jump_buffer_time: float = 0.1
 
# プロジェクト設定の重力を取得(ハードコードを避ける)
var gravity: float = ProjectSettings.get_setting("physics/2d/default_gravity")
 
# タイマー値(コヨーテ・ジャンプバッファ)を内部状態として保持
var coyote_counter: float = 0.0
var jump_buffer_counter: float = 0.0
 
func _physics_process(delta: float) -> void:
	# --- 重力 ---
	if not is_on_floor():
		velocity.y += gravity * delta
		coyote_counter -= delta
	else:
		coyote_counter = coyote_time
 
	# --- 入力 ---
	var direction := Input.get_axis("move_left", "move_right")
	var control := 1.0 if is_on_floor() else air_control
	velocity.x = move_toward(velocity.x, direction * move_speed, move_speed * control * 4 * delta)
 
	# --- ジャンプバッファ ---
	if Input.is_action_just_pressed("jump"):
		jump_buffer_counter = jump_buffer_time
	jump_buffer_counter -= delta
 
	if jump_buffer_counter > 0 and coyote_counter > 0:
		velocity.y = jump_velocity
		coyote_counter = 0
		jump_buffer_counter = 0
 
	# --- 可変ジャンプ(短押しで頭打ち) ---
	if Input.is_action_just_released("jump") and velocity.y < jump_velocity * 0.5:
		velocity.y = jump_velocity * 0.5
 
	move_and_slide()

ポイントは、ProjectSettings.get_setting() で重力を取り出している部分です。AI に任せると var gravity: float = 980.0 のようにハードコードされがちですが、ここは必ずプロジェクト設定から拾うように指示します。シーンごとに重力を変えたい場合に大きな差が出るからです。

シェーダーは「自然言語 → GLSL」で素早く試す

Godot 4 の Visual Shader を AI に書かせるのは難しいのですが、shader_type canvas_item; から始まる通常のシェーダーコードは Antigravity が驚くほどよく生成します。私がよく使うのは「ピクセルアートの色を保ったまま、ヒット時に白く点滅させるシェーダー」です。

shader_type canvas_item;
 
// 0.0〜1.0 の白フラッシュ強度。GDScript側から一時的に上げる
uniform float flash_strength : hint_range(0.0, 1.0) = 0.0;
 
void fragment() {
	vec4 tex_color = texture(TEXTURE, UV);
	// アルファを保ったまま、RGBだけ白に近づける
	vec3 flashed = mix(tex_color.rgb, vec3(1.0), flash_strength);
	COLOR = vec4(flashed, tex_color.a);
}

GDScript 側で material.set_shader_parameter("flash_strength", 1.0) を呼び、Tween で 0.1 秒かけて 0.0 に戻すだけで、被弾エフェクトが完成します。Antigravity に「このシェーダーを使う Tween 付きの被弾演出を Sprite2D に追加して」と頼めば、GDScript 部分も即座に生成してくれます。

シェーダーやアセット作成の自動化を含めた個人開発の全体像については、個人開発でアートアプリをiOS/Androidに公開した実体験記 でも触れていますので、興味があれば併せてご覧ください。

つまずきやすいポイントと対処

私が実際にハマって、検索しても日本語情報がほとんど出なかったポイントを共有します。

  • @onready のタイミング問題: 子ノードを _ready() で動的に生成すると @onready var の取得タイミングと前後し、null 参照になります。Antigravity は気を利かせて await get_tree().process_frame を入れてくれることがありますが、原則としては動的生成の参照は @onready ではなく明示的な変数代入にしましょう
  • TileMap から TileMapLayer への移行: Godot 4.3 以降は TileMap が非推奨で TileMapLayer 推奨に変わりました。AI が古いチュートリアルを参考にしてしまうことがあるので、プロンプトに「Godot 4.3+ の TileMapLayer API を使ってください」と明示します
  • C# プロジェクトと混在させない: GDScript と C# を1プロジェクトに混ぜると、Antigravity が両方の API を混同したコードを出すことがあります。個人開発では GDScript 一本に絞るのが、結果的に最速です

ビルドとモバイル書き出しまでの一気通貫

Godot 4 のエクスポートテンプレートを設定すると、Antigravity のターミナルから次のコマンドだけで Android APK までビルドできます。CI に乗せやすいのも個人開発の追い風です。

# Android APK を CLI からエクスポート(プロジェクトルートで実行)
godot --headless --export-release "Android" build/game.apk

このコマンドを tasks.json 相当の場所に登録しておけば、AI に「ビルドして APK を build/ に出して」と頼むだけで実行してくれます。App Store 側の作業の流れは 個人インディーゲームをApp Storeに出す90日ロードマップ にまとめています。

書籍で体系的に

次の一歩

Godot 4 と Antigravity の組み合わせは、まだ事例が少ないぶん、自分のワークフローを言語化して残しておく価値があります。今日試すなら、まずは小さな AutoLoad(Globals.gd)を1つ作って、Antigravity に「このプロジェクトはここに状態を集約しています」と伝える土台を整えてみてください。それだけで、明日からの生成精度がはっきり変わるはずです。

シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

アプリ開発2026-03-26
Antigravity × Unreal Engine でゲーム開発を加速する — C++ とブループリントを AI で効率化する実践ガイド
Antigravity × Unreal Engine のゲーム開発手法を解説。C++ コード生成からブループリント設計、AI デバッグまで実践ワークフローを紹介。
アプリ開発2026-07-18
「Compose ファースト」の後で、View の画面をどの順に移すか — 画面数ではなく変更頻度で決める
Google が Android 開発を Compose ファーストと表明しました。View ベースの画面をどの順で移すかを、画面数ではなく git の変更履歴から決める判断軸と、実際に動かしたスコアリングスクリプトをまとめます。
アプリ開発2026-07-13
画像の一括最適化をエージェントに任せる前に置く、見た目の劣化を止めるゲート
壁紙アプリの数百枚のアセットをエージェントに一括再エンコードさせたら、数枚だけ色がくすんでいました。サイズ削減率だけでは劣化を見抜けません。SSIM・ΔE・ファイルサイズの3軸でマージ前に不良変換を弾くゲートの設計と、Pillow と scikit-image で動く判定スクリプトをまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →