skills/thedivergentai/gd-agentic-skills/godot-game-loop-collection

godot-game-loop-collection

SKILL.md

Collection Game Loops

Overview

This skill provides a standardized framework for "Collection Loops" – gameplay objectives where the player must find and gather a specific set of items (e.g., hidden eggs, data logs, coins).

Core Components

1. Collection Manager (collection_manager.gd)

The central brain of the hunt.

  • Role: Tracks progress (current / target).
  • Behavior: Listens for item_collected(id) -> Updates items -> Signals collection_completed on valid count.
  • Tip: Use collection_id strings to run multiple hunts simultaneously (e.g., "red_eggs" vs "blue_eggs").

2. Collectible Item (collectible_item.gd)

The physical object in the world.

  • Role: Handles interaction and self-destruction.
  • Behavior: On Interact -> Play VFX -> Emit Signal -> Queue Free.

3. Hidden Item Spawner (hidden_item_spawner.gd)

Automates the placement of items.

  • Role: Populates the level.
  • Behavior: Instantiates the item scene at:
    • Hand-placed Marker3D nodes (Deterministic).
    • Random points within a CollisionShape volume (Procedural).

Usage Example

# In a Level Script or Game Mode
@onready var manager = $CollectionManager

func _ready():
    manager.start_collection("easter_egg_2024", 10)
    manager.collection_completed.connect(_on_all_eggs_found)

func _on_all_eggs_found():
    print("You found all the eggs! Here is a bunny hat.")
    # Unlock reward

Best Practices

  • Persistence: Combine with godot-mechanic-secrets to save which specific IDs have been found if the player needs to quit and resume.
  • NEVER hardcode spawn positions in code: Always use Marker3D or CollisionShape3D nodes in the scene so designers can adjust layout without touching code.
  • Avoid "God Objects": The CollectionManager shouldn't handle input, UI, AND audio. Let it emit signals and let other systems react.
  • Juice: Always spawn particles or play a sound before the item disappears. Immediate queue_free() feels dry.
Weekly Installs
37
GitHub Stars
35
First Seen
Feb 16, 2026
Installed on
kimi-cli37
gemini-cli37
amp37
github-copilot37
opencode37
codex37