thedivergentai/game-design-agentic-skills

godot-scene-management

Expert blueprint for scene loading, transitions, async (background) loading, instance management, and caching.

Ver código fuente

Cómo usar

  1. Copia el comando y revisa el paquete antes de instalarlo en tu entorno de agente.
  2. Consulta las herramientas, credenciales y entornos necesarios en el documento original.
  3. Describe las entradas y el resultado deseado; contrasta la salida con las fuentes.
npx skills add https://github.com/thedivergentai/game-design-agentic-skills --skill godot-scene-management

Antes de empezar

  • La instalación no incluye suscripción al modelo, cuota API ni permisos sobre tus archivos.
  • Las estrellas e instalaciones reflejan actividad, no una prueba independiente de calidad o seguridad.
Documento original del Skill

Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.

Available Scripts

MANDATORY triggers below — read the matching script; do not paste incomplete Autoload loaders.

NEVER Do in Scene Management

  • NEVER load large scenes synchronously — load("res://large_scene.tscn") on the Main Thread causes "hiccups" or full freezes during level transitions. Use ResourceLoader.load_threaded_request() for async loading with a progress bar.
  • NEVER use `get_tree().change_scene_to_file()` for transient state — This method purges the current scene and all its local variables. Use an Autoload (Singleton) or a persistent 'Game' node to store state across levels.
  • NEVER instance 100+ identical nodes per frame — Use Object Pooling to reuse bullets, debris, or enemies. Constant instantiate() and queue_free() calls spike CPU and trigger the Garbage Collector too often.
  • NEVER hardcode `get_node("../../Path/To/Node")` — These paths break as soon as you move a node in the editor. Use Scene Unique Names (%NodeName) or @export var target_node: Node for robust references.
  • NEVER reparent nodes mid-physics-step without care — Reparenting can cause one-frame transform "teleports". Always store the global_transform and re-apply it after the add_child() call.
  • NEVER rely on the SceneTree for 10,000+ objects — If you don't need SceneTree features (signals, per-node scripts), use PhysicsServer and RenderingServer directly for raw performance.
  • NEVER forget to handle `NOTIFICATION_WM_CLOSE_REQUEST` — On desktop, if you don't handle the close request in a persistent node, the game may close during a critical save operation.
  • NEVER use deep recursion for node cleanup — queue_free() is natively recursive in Godot 4. Freeing the root node automatically cleans up all children. Manual loops are redundant and inefficient.
  • NEVER mix `SubViewport` and main world inputs without a plan — By default, input events bubble up. Use set_input_as_handled() to prevent UI clicks in a subviewport from triggering gameplay in the main world.
  • NEVER use `change_scene` to "Reset" a level — It reloads everything from disk. For a quick respawn, just reset the variables and move the player to the start position.

Decision Tree: How to Change Content

GoalPreferMANDATORY script
Full level swap with progress UIThreaded load → swap when THREAD_LOAD_LOADEDasync_scene_manager.gd
Hide hitch before a door/triggerStart threaded request early during playbackground_resource_loader.gd
Fade / wipe around a swapTransition Autoload wraps the managerscene_transition_manager.gd
Keep world; show pause/map/inventoryAdditive UI layer (do not change_scene)additive_ui_layering.gd
Manual root swap / deferred freeOwn current_scene lifecyclePeer docs + safe patterns in godot-autoload-architecture
Spawn many identical actorsPool, never raw instantiate/free stormsscene_pool.gd / scene_instancing_pooling.gd
Minimap / split renderSubViewport + update mode + input isolationsubviewport_scene_layering.gd
Survive scene purgeAutoload / persist group — not localspersistent_data_preservation.gd / scene_state_manager.gd
Quick respawnReset state + teleport — not change_scene—
DLC / hot patch scenesProjectSettings.load_resource_pack then load path(PCK) see Official Docs

Expert WHY (staging / integrity)

  • Pool pre-fill during loading screens (PROCESS_MODE_DISABLED + hide) — absorb instantiate cost up front via scene_pool.gd.
  • Background staging — load_threaded_request mid-gameplay; transition only when loaded (background_resource_loader.gd).
  • PCK overrides — mount pack, then change_scene/load the same res:// path for patched content.
  • Orphan audit — after swaps, Performance.OBJECT_ORPHAN_NODE_COUNT > 0 means leaked refs still hold freed nodes.
  • Cleanup — queue_free() on a root is recursive in Godot 4; no manual child loops.
  • Quick respawn — reset state + teleport; NEVER change_scene just to restart a level.

Deep dive (load on demand)

Fade Autoloads, loading screens, spawn tracking, persistence holders, PCK patch — references/scene-patterns-deep.md.

Reference

Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain — do not preload the whole lattice.

Official Documentation

  • Background loading — ResourceLoader.load_threaded_request / status polling for hitch-free level loads and progress bars.
  • Change scenes manually — Deferred free + root reparent patterns behind safe switchers (prefer over blind change_scene_to_file for staged transitions).
  • Using SceneTree — current_scene, pause, groups, and how the tree relates to Autoload root children across swaps.
  • Scene organization — Ownership edges so loaders/UI layers do not become God Objects when nesting sub-scenes.
  • Nodes and scene instances — PackedScene.instantiate(), ownership, and when to preload vs load at runtime.
  • Scene unique nodes — %Name references that survive hierarchy edits better than brittle get_node("../../…") paths.
  • Autoloads versus regular nodes — Keep cross-scene state in singletons; keep level content in scenes the tree can unload.
  • Using Viewports — SubViewport worlds for minimaps, split-screen, and layered rendering without swapping the main scene.
  • Groups — Persist-group save/restore and bulk cleanup across scene transitions.
  • Exporting packs, patches, and mods — ProjectSettings.load_resource_pack for DLC/mod scene overrides on res:// paths.
  • ResourceLoader — Threaded load API surface (load_threaded_*, exists) used by async managers.
  • PackedScene — Scene resource type for pooling, change_scene_to_packed, and instance caches.

Related Skills

Prerequisites

  • godot-project-foundations — Project layout, scene tree basics, and import paths loaders and Autoload registries assume.
  • godot-gdscript-mastery — Typed signals, await, and process-frame polling required by threaded load loops and transition staging.
  • godot-autoload-architecture — Singleton boot order and ownership so Game/state holders survive change_scene without becoming God Objects.

Complements

  • godot-signal-architecture — Reconnect or bus-emit after swaps so loaders do not leave ghost listeners on freed scenes.
  • godot-resource-data-patterns — Level registries and payload Resources that map IDs to .tscn paths instead of hardcoded strings.
  • godot-save-load-systems — Serialize persist-group / Autoload state; scene swaps must not invent a second save path.
  • godot-tweening — Fade and wipe Tweens that wrap scene changes without blocking the load thread.
  • godot-ui-containers — Loading screens and additive menu layers parented under persistent UI roots.
  • godot-performance-optimization — Pool budgets, orphan-node monitors, and when SceneTree should yield to servers for dense spawns.
  • godot-composition — Component scenes and ownership edges that keep instanced gameplay pieces swappable without path coupling.

Downstream / consumers

  • godot-genre-open-world — Chunk streaming and background preloads built on threaded ResourceLoader queues from this skill.
  • godot-export-builds — PCK/patch packaging that supplies the runtime packs scene patchers mount.
  • godot-multiplayer-networking — Authority-aware scene spawns and late-join sync that reuse pooling and safe change patterns.

Master

  • godot-master — Library router and mirrored module entry; open when discovering which Domain Skill owns loading vs persistence vs UI.

Relacionados por tarea

del mismo repositorio

Más Skills

Todos los Skills