AI & IT toolsAI Tools

Building Godot game scenes with Claude Code: notes from an air defense game and a canyon flight game

Based on real notes from making an air defense mini game, a penalty shootout, and a canyon flight game with Godot 4.7.2 and Claude Code, this guide covers what to prepare, the first plan, moving Blender models over, automatic checks, and the play-and-fix loop, along with the snags we hit.

AZTechnology18 min read

한국어English

Based on: Godot 4.7.2 (Standard, Windows), Claude Code, Blender 5.2. These are notes from October 2026. Command line options were checked against the official Godot 4.7 docs. All figures are real game screens and real Godot and Blender screens. The on-screen text in the games is Korean.

On the night of October 10, 2026, I asked Claude Code to make a small air defense game in Godot. About an hour later, a first version was running. In the same session, I also tested moving a rigged character into Godot and made a penalty shootout game. Three days later, I made a canyon flight game in one session, from plan to a full playable run. Claude Code wrote all the code. My part was to decide what to make, play it, and say what to change.

This guide puts those two sessions in an order that is easy to follow. It covers what I prepared, what went into the first plan, where moving Blender models got stuck, how I checked what the AI made, and how many times I played and asked for changes. It explains the working order for making one game scene with Claude Code and Godot, and the real snags along the way.

1. The short answer

QuestionMy notes
Time to the first playable versionAbout 1 hour for the air defense game
What one session producedAir defense game, rigged character test, penalty shootout (about 3 hours in total, including waiting)
Other costsNone. Godot is free, and no image or video generation credits were used
Claude Code usageUp to right after the rig test: about 160,000 output tokens, about 11 US dollars at list prices (measured with a usage counter; not measured after that)
Disk space252 MB for the game folder
Did the models come over intact?All 8 models matched Blender with 0 size difference
Rigged character animationCame over. Largest pose difference 1.4 mm
What took longestNot the code, but my time playing and saying what to fix. The air defense game reached "difficulty is about right" after I played it five times
Canyon flight gameIn one session: plan → 4 stages → Windows and web exports. Automatic checks 18/18

The AI was good at writing code, fixing it, and checking it on its own. My job was to decide what to make, play it, and describe how it felt in one or two sentences.

2. Why Godot worked well with AI

Godot is a free, open source game engine. A game engine is like a workbench that already has the common parts of a game: drawing, physics, sound, and input. A carpenter does not build a new saw and hammer for every job, and a game engine saves you from building those parts again.

Two things made it a good match for Claude Code.

  1. Scenes and scripts are text files. Godot scene files (.tscn) and scripts (.gd) are plain text you can open in Notepad. So the AI could write and edit files directly instead of clicking around the editor. The air defense game's scene file is only a few lines: one node with one script. The script builds the ground, the sky, and the launchers in code.
  2. It runs without a window. --headless runs the engine without a display or audio device. After making the game, the AI could run an automatic check script without opening a window and confirm rules like "firing creates a missile" on its own.

Screenshots and recordings, on the other hand, need a window. Each time, a game window popped up on my screen for a moment.

3. What to prepare

Starting point: Claude Code is installed and you are signed in. Installation is covered in Getting started with Claude Code.

Steps:

  1. Download the Standard Windows build from the official Godot site. In my notes, I downloaded 4.7.2 Standard and unzipped it. There was no installer.
  2. Make an empty folder for the game. This becomes the Godot project folder.
  3. If you will use Blender models, note where they are. I used 8 low-poly models made earlier for videos.
  4. Start Claude Code in that folder.

The Godot download has two executables. The one ending in _console prints messages to the terminal while it runs. Use that one when the AI runs automatic checks and reads the results.

4. A one-page plan first

Before asking for code, I had the AI write a one-page plan (PRD). A PRD says what you are making, why, and when it counts as done. It is like a floor plan before building a house. Without a floor plan, rooms keep getting added. Without a plan, the AI keeps adding features too.

My air defense plan had these parts.

ItemWhat it said
WhyThree questions: do our models come over cleanly, can AI alone make a working game, how much time and space does it take
Pass criteriaModels have the right size, direction, and color; one round goes start → play → end → restart; time and disk use are measured
Out of scopeInstallers, menu and settings screens, multiple stages, online, mobile
Game rulesCamera view, controls, number of missiles, number and speed of drones, win and lose conditions
Models to useFolder names, sizes, names of moving parts
Naming ruleGeneric names like "missile", "launcher", "drone" instead of real equipment names

You can ask for a plan in a way like this (example).

I want to make one game scene of 2-3 minutes in Godot 4.7. Before writing any code, write PRD.md first.
- 3 questions this test answers, pass criteria (with how to check), what is out of scope
- A table of game rules (camera, controls, win/lose)
- Models: the models in <model folder path>. Open the files and write down their sizes and part names
Do not write code until I read the PRD and say "go".

I read the plan and replied, "Go with what you proposed." Because this one page existed, later changes could be stated as "change X in section 2 of the plan."

5. Moving Blender models over

Starting point: The plan is settled, and the AI knows the model folder path.

Steps:

  1. Have the AI write a script that exports the Blender models to glTF (.glb). Blender can run without a window (in the background).
  2. Have it make comparison images that put the Godot view next to the Blender image (Figure 1).
  3. Have it compare sizes as numbers too. By eye, you miss small size differences.

glTF is an open file format for exchanging 3D models. Godot names glTF as its recommended format. Each export setting is covered in From Blender to Godot 4.7 with glTF.

Left: Godot view. Right: Blender image. The same low-poly launcher truck with a camouflage pattern, on a sand-colored floor and on a gray floor, seen from different angles Figure 1. The same launcher model. Godot on the left, Blender on the right. All 8 models were compared like this, and the size difference was 0 (Godot and Blender screens)

All 8 models came in with 0 size difference, and part names and parent-child links stayed the same. One thing changes: the forward direction. The side that faced forward in Blender (+Y) becomes −Z in Godot, because Godot uses a coordinate system where +Y is up.

We hit five snags. In each case, the AI fixed it by adding a step to the export script.

SnagWhat we sawFix
Colors connected through nodesThe tank lost its colorsCopy the node color into the base color at export
Studio floor and lights from the video setupA floor plate and lights came along with the modelLeave them out at export
A collection not linked to the sceneAn empty file came outLink it to the scene before export
Materials built as node groupsThe character turned all whiteMake a simple material from the group's base color
Bone animation and face animationTwo separate animations, only one playedMerge them with an export option

The last two rows came up with the rigged character (section 8). The third row, an empty file with no error, was the most confusing. If an exported file is suspiciously small, check that first.

6. The first version, then five rounds of fixes

Starting point: The models are in the Godot project.

Steps:

  1. Have the AI build the first version from the rules in the plan.
  2. Have it make a batch file to run the game (run_game.bat), and play one round yourself.
  3. Say what you felt in one or two sentences. The more you use numbers, the faster it lands.
  4. Have it update the plan with the changed rules.

The first version took about an hour. Here is what I said over five plays and what changed.

RoundWhat I saidWhat changed
1"Too easy. Everything gets hit and it keeps reloading"No reloading; 32 drones in a row
2"Make the paths look real. Spawn them together. Three aim rings at 100/90/80%. Camera closer"Missiles rise straight up, then arc; 2-4 drones at once; three aim rings
3"Spawn twice as fast. One hit destroys a launcher"Spawn gap 2.5 s → 1.7 s; launchers destroyed in one hit
4"Make them switch to another launcher. Too big up close. 50% farther"Target switching; drones shrink as they get closer; spawn distance 1,500 m
5"Difficulty is about right. Just remove the score"Score display removed. Rules final

A low-poly desert at sunset. Four launchers at the bottom, a missile rising with a smoke trail on the left, drones marked by red diamonds in the sky, a three-ring aim circle with 90% next to it, remaining launchers 4/4 and per-launcher missile boxes at the top left, remaining drones 30/32 at the top right Figure 2. The air defense game after five rounds of fixes. ① Remaining launchers and missiles ② Remaining drones ③ Three-ring aim circle and hit chance (Godot run screenshot)

Letting the game play itself did not tell us the difficulty. "Easy" and "about right" only came from a person playing. A screen full of numbers also bothered me, so I asked to drop the score and just "show the four launchers being defended."

7. Letting the AI check its own work

Starting point: The game from the previous section runs.

Steps:

  1. Have the AI write an automatic check script with one check per rule.
  2. Have it rerun the checks every time a rule changes.
  3. If a line says FAIL, show that line to the AI as is and have it fix the problem.

The air defense checks run with the line below. --path picks the project folder (the folder with project.godot), and anything after -- is not used by the engine but read by the game's scripts (official docs).

Godot_v4.7.2-stable_win64_console.exe --headless --path <project folder> -- --autotest

Here is part of the output when I ran the same command again while writing this guide. The check names are in Korean, so the English meaning follows each line.

[autotest] PASS  1 발사하면 미사일이 나온다  남은 미사일 31          (firing creates a missile; 31 missiles left)
[autotest] PASS  2 무인기 한 대가 닿으면 발사대 하나가 파괴된다  4 -> 3  (one drone hit destroys one launcher)
[autotest] PASS  파괴된 발사대를 노리던 무인기는 다른 발사대로 방향을 바꾼다  (drones retarget when their launcher is gone)
[autotest] PASS  무인기는 멀리서 크게, 가까이서 작게 그려진다  멀리 14.0배, 가까이 3.2배  (drones drawn 14x far, 3.2x near)
[autotest] PASS  조준 세 칸: 100% / 90% / 80% / 밖은 0%           (three aim rings: 100/90/80%, outside 0%)
[autotest] PASS  무인기가 한 번에 2~4대 나온다  3대                 (2-4 drones spawn at once; 3 this time)
[autotest] PASS  재장전 없음: 남은 미사일을 다 쓰면 더 안 나간다  발사 30  (no reload: nothing fires once missiles run out)
[autotest] 14/14 passed

On my PC this check took about 15 seconds. That is shorter than one round played by a person (about 40 seconds), and no window opens.

Each check matches one rule in the plan. When a rule changed, I had the checks change too. That way, if a new rule broke an earlier one (for example, "one hit destroys a launcher"), it showed up as FAIL in the check step before I played.

8. A rigged character and a penalty shootout

After the air defense game, I tested whether a human character comes over with its animation. I used a striker, a goalkeeper, and a ball made earlier for a soccer video. The skeleton (rig) and the 10-second animation were made by hand in Blender. Mixamo was not used.

Rigging means putting a skeleton inside a model so it can move. It is like putting a wire frame inside a doll.

Three Godot frames. On light green grass, a low-poly soccer player in a red shirt kicks a ball, then raises his arms to celebrate Figure 3. The rigged character's animation playing in Godot. From left: right after the kick, start of the celebration, both arms up (Godot run screenshot)

What we checkedResult
Skeleton17 deform bones and one animation (9.97 s) came in. The 9 control bones were dropped, and their motion was baked into the remaining bones
Pose6 bones × 7 frames compared with Blender. Largest difference 1.4 mm
Face8 face shapes (shape keys) came in with the animation
PlaybackDouble speed, pause, and playing only a section all worked

This test took about 20 minutes. While at it, I had the AI make a penalty shootout with these characters, which took about 30 minutes. You and the computer take turns, five kicks each, in a game of chance.

Two penalty screens. Left: my turn to kick, me in a red shirt, the computer's keeper in teal in the goal, and a Korean prompt to pick where to kick. Right: the computer's turn to kick, the computer in blue, my keeper in orange in the goal, with left, center, and right zones and a Korean prompt to pick which way to dive Figure 4. The penalty shootout. ① My turn to kick ② The computer's turn to kick. Shirt colors and the name tags above the heads switch each turn (Godot run screenshot)

In the first version, the odds were shown on screen and both teams' characters looked the same. Both felt odd when I played, so I said "showing the odds feels wrong" and "the characters look the same, which is weird." The next version hid the odds and gave each side its own shirt colors and name tags (Figure 4).

9. The second game: canyon flight

Three days later, on October 13, I made a game about flying fast through a canyon. This time the plan was split into stages from the start, and I played each stage before moving on.

StageWhat was builtWhat I said
First versionCanyon, bridge, missiles, flares, Windows and web exports"Difficulty OK, feels rough"
AContinuous S-shaped canyon, engine flames"Make it harsher, so you can't get through without slowing down"
A, round 2Three sets of tight turns, wingtip trailsPassed
BA missile chasing from behind, a timing ring, a roll"The chase doesn't feel strong"
CBombing and a result card"I don't get the pillar aim; make it like firing a missile"
C, round 2Aim tightens when you point the nose and fly straight"The tightening feels right"
DTitle screen, countdown, checkpoint, sound, Korean font"It does feel like a game"

Two canyon flight frames. Left: a gray jet seen from behind flies over a blue river between gray rock canyon walls, with a Korean "passed under the bridge!" message and 62 seconds left. Right: a yellow ring around the jet with a Korean "turn + flare (Space)" prompt, 50 seconds left, an altitude bar on the right, and speed and flare indicators at the bottom Figure 5. The canyon flight game flying on autopilot. ① The moment it passes under the bridge ② The yellow ring that tells you when to dodge the missile from behind (Godot run screenshot)

Steps: A screen like Figure 5 can be recorded without anyone flying. --write-movie runs the game while writing a video file, and --fixed-fps sets the frames per second. I had the AI add an autopilot mode (--autoplay) to the game, then recorded just 30 seconds (900 frames) like this. A window opens for this.

Godot_v4.7.2-stable_win64_console.exe --path <project folder> --write-movie <save path>\flight.avi --fixed-fps 30 --quit-after 900 -- --autoplay

This game also has 18 automatic checks, and the exported Windows build passed 18/18 too. The check script also flies the course on autopilot at a few fixed speeds. Running it again while writing this guide gave the following (English meaning in parentheses).

[autotest] 참고  자동 비행 170 m/s: 시간 초과 / 74.0초 / 진행 85% / 벽까지 최소 15m   (note: autopilot 170 m/s: out of time, 85% done)
[autotest] 참고  자동 비행 190 m/s: 벽에 부딪혔다 / 63.9초 / 진행 83% / 벽까지 최소 -48m  (note: autopilot 190 m/s: hit a wall)
[autotest] PASS  1 굽이 앞에서 줄이며 날고 폭격까지 하면 별 셋  임무 완료 / 65.1초 / 진행 100% / 벽까지 최소 12m / 빗나간 거리 0m  (slow down before turns and bomb: three stars, mission complete)
[autotest] PASS  14 줄이지 않으면(230 고정) 급한 굽이를 못 돈다  벽에 부딪혔다 / 24.9초 / 진행 42% / 벽까지 최소 -43m  (fixed at 230 without slowing: cannot make the tight turn)
[autotest] 18/18 passed

These lines show in numbers that my request, "you can't get through without slowing down," really holds. Too slow and you run out of time, a fixed fast speed hits a wall, and only slowing before turns gets you to the end. On my PC this check took about 1 minute 30 seconds.

The exported files were 107 MB for Windows and 40 MB for the web. Exporting needs Godot's export templates, which were a separate 1.2 GB download.

When I played the web build, the Korean text showed correctly, but it lagged. We have not found the cause yet. To show Korean in the web build, the font had to be bundled into the game, because a game running in a browser cannot use the fonts installed on the PC. We bundled a free-to-use font trimmed to 2,350 common Korean characters (424 KB).

10. The order to follow

This is the order that settled in over the two games.

  1. Write a one-page plan first. Have it list the questions, pass criteria, and what is out of scope, and do not let it write code until you say "go."
  2. Compare models with numbers. Get comparison images and a size table together.
  3. Get the first version fast. Do not expect polish at first; start with one round that works.
  4. Play it and say one or two sentences. "Spawn twice as fast" lands sooner than "make it harder."
  5. Add an automatic check for each rule. Have the AI rerun them after every change.
  6. Split the work into stages. Like the canyon game's A, B, C, D, play each stage before moving on.

Common mistakes and fixes

SymptomCauseFix
A "no main scene" error window appears on first runThe project's main scene is not setHave the AI set the main scene in the project settings
The exported model file is emptyThe collection is not linked to the sceneAdd a step that links it before export
The character is all whiteglTF cannot read node group materialsRebuild a simple material from the base color before export
A script error appears after adding a new class nameThe new class_name is not registered yetOpen once with --import (starts the editor, finishes importing, then quits)
You cannot make a class named PlaneGodot already has a built-in with that nameUse another name (for example, jet)
Korean text shows as boxes in the web buildA game in a browser cannot use PC fontsBundle a free-to-use font in the game
Paths in a batch file get mangledCharacters like \t change when written through a shellHave the AI write batch files with a file-writing tool, not shell commands

In one line

Plan first, compare models with numbers, get the first version fast, play and say one or two sentences, add automatic checks for each rule (--headless), move on stage by stage.

References

KEEP EXPLORING

Read next

Top of the Artificial Analysis text-to-image leaderboard AA-Image-T2I v2.1. Rank 1 GPT Image 2.5 Sunburst (max) 1222, rank 2 GPT Image 2.5 Flare (max) 1207, rank 3 GPT Image 2 (high) 1186, rank 4 Nano Banana 2.1 1176, rank 5 MAI-Image-2.6 1166, rank 6 Grok Imagine Image 2.0 1166, rank 7 Nano Banana 2 1140, price per 1,000 images on the rightAI & IT tools
AI Tools13 min read

Choosing an AI image model in autumn 2026: GPT Image 2.5 and Nano Banana 2.1 compared

Names, release dates, prices, and leaderboard positions of GPT Image 2.5 (Flare and Sunburst) and Nano Banana 2.1, the image models that arrived in autumn 2026, checked against official sources, plus simple rules for picking one by use.

Unreal Engine 5.8 viewport (Korean interface). Three white cubes in a row on a wide floor casting long shadows, with AI_Cube_1, AI_Cube_2, AI_Cube_3 in the Outliner on the rightAI & IT tools
AI Tools13 min read

Letting Claude Code work in Unreal Engine 5.8 with the MCP plugin: from enabling the experimental feature to placing three cubes

Enable the Unreal MCP plugin that arrived in Unreal Engine 5.8 as an experimental feature, connect Claude Code, get a summary of the level, and have it place three cubes. It also covers what to watch out for with an experimental feature and how to undo changes.

The AA-Video-I2V v2.1 leaderboard on Artificial Analysis. 1st Dreamina Seedance 2.5 1152, 2nd Utopai X 1144, 3rd Dreamina Seedance 2.0 1135, 4th MiniMax H3 (768p) 1129, 8th MiniMax H3 Max 1115, 9th Wan 3.0 1111, 11th FLUX 3 1071, 13th Grok Imagine Video 1.5 1050, 14th Gemini Omni Flash 1.1 1043, 17th Kling 3.0 1080p (Pro) 1000AI & IT tools
AI Tools18 min read

How to choose an AI video model: recommendations for live action, animation, film, and motion

Eight AI video models sorted by use: live action, animation and games, film-style camera work, human motion and physics, sound and lip-sync, keeping the same character, and saving money, with leaderboard evidence and results from our own use.

The Output resolution table in the Gemini API docs. The Value column lists 360p, 720p, 1080p, 4k, and the Description column says 360p output resolution, 720p output resolution (default), 1080p output (upscaled), 4K output (upscaled)AI & IT tools
AI Tools20 min read

Eight AI video models compared: specs, prices, and trade-offs as of October 2026

Official names, clip length, resolution, sound, reference inputs, prices, and openness of Gemini Omni 1.1 Flash, Grok Imagine Video 1.5, Wan 3.0, Seedance 2.5, FLUX 3 Video, MiniMax H3, Kling 3.0, and Kling 4.0 in two tables, plus the strong and weak points of each.

The Google DeepMind blog page announcing Genie 4. Date October 27, 2026, title Genie 4: A new generation of world simulation, authors Raia Hadsell, Diego Rivas and Hang Qi, a black Join the Genie 4 waitlist button, and a hummingbird video belowAI & IT tools
AI Tools16 min read

Google DeepMind Genie 4 explained: a real-time world model with sound, and what it means for 3D artists

Using only the official announcement, this guide sums up what is new in Google DeepMind's world model Genie 4, how it differs from Genie 3, who can use it and when, its limits, and what it may mean for Blender and game creators.

Top of the Wan2.1 tutorial in the ComfyUI docs. Title Wan2.1 in ComfyUI: Text-to-Video and Image-to-Video Workflows, a paragraph saying open-sourced by Alibaba in February 2025 under the Apache 2.0 license, and a list of two versions, 14B and 1.3BAI & IT tools
AI Tools21 min read

Turning one character image into video with Wan 2.1: open-source image-to-video vs OpenAI

How the open-source video model Wan 2.1 turns one character image into a short clip, the official ComfyUI steps, and how much graphics card memory it needs. A table compares it with OpenAI, which has shut down its video service.