Use when working with 2D-specific systems — TileMaps, parallax scrolling, 2D lights and shadows, canvas layers, particles 2D, custom drawing, and 2D meshes in Godot 4.3+
日本語の概要は準備中です。原文の説明を表示しています。
Use when importing and managing assets — image compression, 3D scene import, audio formats, resource formats, and import configuration
インストールする前に、エージェントに与えられる指示の中身を確認できます。
All examples target Godot 4.3+ with no deprecated APIs. GDScript is shown first, then C#.
Related skills: audio-system for audio playback and bus architecture, 3d-essentials for 3D materials and lighting, 2d-essentials for 2D rendering and sprites, animation-system for imported animations, godot-optimization for asset-related performance, multithreading for threaded resource loading.
When you add a file to res://, Godot auto-imports it based on its type. Import settings are stored in .import sidecar files alongside the original.
project/
├── textures/
│ ├── player.png ← original file (committed to VCS)
│ └── player.png.import ← import settings (committed to VCS)
└── .godot/
└── imported/ ← compiled cache (NOT committed — .gitignore it)
.godot/imported/ — they are regenerated from originals.import files to version control — they store your settings.godot/ should be in your .gitignoreImport settings can also be set via Advanced Import Settings for 3D scenes (double-click the
.glb/.gltffile).
| Mode | Quality | VRAM | File Size | Use For |
|---|---|---|---|---|
| Lossless | Perfect | High | Large | Pixel art, UI elements |
| Lossy | Good | High | Small | Large photos, backgrounds |
| VRAM Compressed | Reduced | Low | Small | 3D textures, large 2D sprites |
| VRAM Uncompressed | Perfect | High | Large | When VRAM compression artifacts are unacceptable |
| Basis Universal | Reduced | Low | Very small | Cross-platform, multiple GPU formats |
Pixel art / UI icons → Lossless (no artifacts, crisp pixels)
2D game sprites → Lossless (small sprites) or VRAM Compressed (large sprites)
3D textures (albedo, normal) → VRAM Compressed (saves GPU memory)
Large backgrounds → Lossy or VRAM Compressed
Mobile targets → VRAM Compressed (essential for memory)
| Setting | Description | Default |
|---|---|---|
| Compress > Mode | Compression algorithm (see table above) | VRAM Compressed |
| Mipmaps > Generate | Generate mipmaps for distance rendering | Off |
| Process > Fix Alpha Border | Prevents dark outlines on transparent sprites | On |
| Process > Premult Alpha | Pre-multiply alpha (avoids dark halos) | Off |
| Flags > Filter | Bilinear filtering (smooth) vs nearest (crisp) | Linear |
| Flags > Repeat | Enable texture tiling | Disabled |
For crisp pixel art, set these project-wide:
Project Settings > Rendering > Textures > Canvas Textures > Default Texture Filter → Nearest
Or per-image in Import dock: Filter → Nearest
Mipmaps prevent shimmering on textures viewed at an angle or from a distance. Required for 3D textures; optional for 2D.
Godot 4.7+: DDS import supports the R8 and R8G8 texture formats. (GH-116307)
| Format | Extension | Recommendation |
|---|---|---|
| glTF | .gltf, .glb | Recommended — open standard, best support |
| Blend | .blend | Direct Blender import (requires Blender installed) |
| FBX | .fbx | Good for legacy pipelines |
| Collada | .dae | Older format, use glTF if possible |
| OBJ | .obj | Static meshes only — no animations/rigs |
glTF is the recommended format. It has the best Godot support, is an open standard, and preserves materials, animations, and rigs accurately.
Godot auto-creates appropriate node types based on suffixes in your 3D model's object names:
| Suffix | Generated Node | Example Name |
|---|---|---|
-col | StaticBody3D + collision | Wall-col |
-convcol | ConvexPolygonShape3D | Rock-convcol |
-rigid | RigidBody3D | Barrel-rigid |
-navmesh | NavigationRegion3D | Floor-navmesh |
-occluder | OccluderInstance3D | BigWall-occluder |
In Blender: In Godot (after import):
Wall-col → StaticBody3D
├── Wall (mesh) → ├── MeshInstance3D
→ └── CollisionShape3D (auto-generated)
Select the imported .glb/.gltf in FileSystem, then in the Import dock:
| Setting | Description |
|---|---|
| Root Type | Override root node type (Node3D, RigidBody3D, etc.) |
| Root Name | Custom name for the root node |
| Meshes > Generate LOD | Auto-generate LOD levels (on by default) |
| Meshes > Light Baking | Static or Dynamic for lightmap baking |
| Animation > Import | Enable/disable animation import |
| Animation > FPS | Bake animation at this framerate |
Godot 4.7+: The Import dock's import-type option can also import a 3D scene file as a single
Meshresource or as aMeshLibrary(for GridMap), instead of a full scene — no separate export step in the 3D authoring tool needed. (GH-107856)
⚠️ Changed in Godot 4.7:
EditorSceneFormatImporter'sIMPORT_SCENE,IMPORT_ANIMATION,IMPORT_FAIL_ON_MISSING_DEPENDENCIES,IMPORT_GENERATE_TANGENT_ARRAYS,IMPORT_USE_NAMED_SKIN_BINDS,IMPORT_DISCARD_MESHES_AND_MATERIALS, andIMPORT_FORCE_DISABLE_MESH_COMPRESSIONconstants moved into a newImportFlagsenum (bitfield). GDScript-compatible; C# importer plugins referencing the old class-level constants must switch to the enum members. See the 4.7 migration guide.
Use preload() for paths known at compile time and load() for data-driven paths. GDScript + C# snippets: references/runtime-resource-loading.md.
GLTFDocument exposes an ImportFlags bitfield — IMPORT_FLAG_GENERATE_TANGENT_ARRAYS (8), IMPORT_FLAG_USE_NAMED_SKIN_BINDS (16), IMPORT_FLAG_DISCARD_MESHES_AND_MATERIALS (32), IMPORT_FLAG_FORCE_DISABLE_MESH_COMPRESSION (64) — accepted by the flags: int = 0 parameter of append_from_file(), append_from_buffer(), and append_from_scene():
var doc := GLTFDocument.new()
var state := GLTFState.new()
doc.append_from_file("user://mods/enemy.glb", state,
GLTFDocument.IMPORT_FLAG_GENERATE_TANGENT_ARRAYS | GLTFDocument.IMPORT_FLAG_USE_NAMED_SKIN_BINDS)
add_child(doc.generate_scene(state))
var doc = new GltfDocument();
var state = new GltfState();
doc.AppendFromFile("user://mods/enemy.glb", state,
(uint)(GltfDocument.ImportFlags.GenerateTangentArrays | GltfDocument.ImportFlags.UseNamedSkinBinds));
AddChild(doc.GenerateScene(state));
If a 3D file contains a single timeline with multiple animations, split them in the Advanced Import Settings:
.glb file to open Advanced Import SettingsShare animations between characters with different skeletons:
SkeletonProfile resources for standard humanoid mappings| Setting | Description |
|---|---|
| Import | Enable/disable animation import |
| FPS | Bake framerate (30 is standard) |
| Trimming | Remove empty frames at start/end |
| Remove Immutable Tracks | Remove tracks that don't change |
For in-depth audio playback, bus setup, and music management, see the audio-system skill.
| Format | Import As | Use For | Key Settings |
|---|---|---|---|
| WAV | AudioStreamWAV | Short SFX | Loop Mode, Mix Rate |
| OGG | AudioStreamOggVorbis | Music, long SFX | Loop, Loop Offset |
| MP3 | AudioStreamMP3 | Music (fallback) | Loop, BPM |
| Setting | Description | When to Use |
|---|---|---|
| Loop | Enable looping playback | Music, ambient loops |
| Loop Offset | Start position for loop restart | Avoid intro on loop |
| Force Mono | Convert stereo to mono | 3D positional audio |
| BPM | Beats per minute | Rhythm games |
| Beat Count | Total beats in the track | Rhythm sync |
Import tip: Use WAV for short SFX (zero decode latency). Use OGG for music (small file, good quality). Enable Force Mono for any audio used with AudioStreamPlayer3D — stereo doesn't spatialize properly.
| Format | Type | Readable | Use For |
|---|---|---|---|
.tres | Text | Yes | Resources you edit by hand or diff |
.res | Binary | No | Large resources, faster loading |
# Save as text resource
ResourceSaver.save(my_resource, "res://data/item.tres")
# Save as binary resource
ResourceSaver.save(my_resource, "res://data/item.res")
# Load (either format)
var resource: Resource = load("res://data/item.tres")
ResourceSaver.Save(myResource, "res://data/item.tres");
ResourceSaver.Save(myResource, "res://data/item.res");
var resource = GD.Load<Resource>("res://data/item.tres");
.tres — Custom resources you create and edit (item data, config, skill definitions). Version control friendly..res — Generated or large binary data (baked lightmaps, navigation meshes, large meshes). Faster to load..tscn — Text scene files (always use text for scenes — diffable in VCS).scn — Binary scene files (rare — only for very large scenes where load time matters)Load large resources without freezing the game with the ResourceLoader.load_threaded_request() / load_threaded_get_status() / load_threaded_get() pattern. Full loading-screen recipe (GDScript + C#): references/runtime-resource-loading.md.
| Symptom | Cause | Fix |
|---|---|---|
| Texture looks blurry | Filter is set to Linear for pixel art | Set Default Texture Filter to Nearest in Project Settings |
| Dark outlines on transparent sprites | Alpha border not fixed on import | Enable "Fix Alpha Border" in Import dock |
| 3D model has no collisions | No naming suffix in source model | Add -col suffix to mesh names in Blender, or add manually |
| Imported animations missing | "Import Animation" disabled in Import dock | Enable Animation > Import and reimport |
| Texture VRAM too high on mobile | Using Lossless compression for large textures | Switch to VRAM Compressed for textures > 256px |
| 3D textures shimmer at distance | Mipmaps not generated | Enable Mipmaps > Generate in Import dock |
| Audio has pop/click at loop point | Loop offset not set correctly | Adjust Loop Offset in Import dock; add fade in audio editor |
| Scene file is enormous | Using binary .scn instead of .tscn | Save scenes as .tscn (text) for VCS; use .scn only if needed |
| Import settings lost after reclone | .import files not committed to VCS | Always commit .import files; only .godot/ goes in .gitignore |
| Threaded load freezes game | Checking status every frame with load() | Use ResourceLoader.load_threaded_request/get_status pattern |
⚠️ Changed in Godot 4.7: The font import
hintingdefault changed from1(Light) to3(Light (Except Pixel Fonts)) — newly imported pixel-style fonts now auto-disable hinting. Fonts already imported keep thehinting=1stored in their.importfile; only new fonts, or ones whose.importis regenerated, pick up the new default. Sethintingto1(Light) in the Import dock to match 4.6. See the 4.7 migration guide.
.gitignore excludes .godot/ but NOT .import filesNearest in Project Settings.glb or .gltf) as the primary import format-col, -convcol) in the 3D authoring tool.tres (text) for version control diffabilityResourceLoader.load_threaded_request().tscn (text format) for version controlまだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when working with 2D-specific systems — TileMaps, parallax scrolling, 2D lights and shadows, canvas layers, particles 2D, custom drawing, and 2D meshes in Godot 4.3+
日本語の概要は準備中です。原文の説明を表示しています。
Use when working with 3D-specific systems — materials, lighting, shadows, environment, global illumination, fog, LOD, occlusion culling, and decals in Godot 4.3+
日本語の概要は準備中です。原文の説明を表示しています。
Use when building character abilities — Resource-based abilities with cost/cooldown/cast, buffs/debuffs, stat modifiers, gameplay tags, and HUD binding
日本語の概要は準備中です。原文の説明を表示しています。
Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels
日本語の概要は準備中です。原文の説明を表示しています。
Use when implementing AI movement — NavigationAgent2D/3D, steering behaviors, behavior trees, and patrol patterns
日本語の概要は準備中です。原文の説明を表示しています。
Use when implementing animations — AnimationPlayer, AnimationTree, blend trees, state machines, sprite animation, and code-driven animation
日本語の概要は準備中です。原文の説明を表示しています。