Godot Quick Start
First complete Godot installation, enable the Core plugin, and set igp/general/app_id.
1. Subscribe and initialize
Section titled “1. Subscribe and initialize”Subscribe to events in the game’s startup node before calling IGP.initialize(). The presence of an Autoload alone does not mean the SDK is ready.
Godot 4.7.1 / 4.4.1:
extends Node
func _ready() -> void: IGP.connection_changed.connect(_on_connection_changed) IGP.authorization_changed.connect(_on_authorization_changed) IGP.error_occurred.connect(_on_error_occurred)
var result: Dictionary = await IGP.initialize() if not result.success: push_error("%s: %s" % [result.code, result.message]) return
print("IGP ready: ", IGP.is_ready)Godot 3.6.2:
extends Node
func _ready(): IGP.connect("connection_changed", self, "_on_connection_changed") IGP.connect("authorization_changed", self, "_on_authorization_changed") IGP.connect("error_occurred", self, "_on_error_occurred")
var pending = IGP.initialize() var result = yield(pending, "completed") if pending is GDScriptFunctionState else pending if not result.success: push_error("%s: %s" % [result.code, result.message]) return
print("IGP ready: ", IGP.is_ready)success means the initialization request completed. IGP.is_ready additionally requires the Desktop Session and game authorization to be ready. Do not use room or realtime state to gate these non-multiplayer capabilities.
2. Gate the game by state
Section titled “2. Gate the game by state”IGP.is_attached: the Desktop Session is attached.IGP.is_ready: the Desktop Session and game authorization are ready.IGP.authorization.state: current game authorization state.IGP.capabilities/IGP.supports_capability(...): capabilities actually published by the desktop client.
Core displays a native Quit and Retry window for the initial authorization failure by default. Customize or disable it under igp/authorization_fallback/*. Disabling the UI does not change authorization state.
3. Use optional packages
Section titled “3. Use optional packages”Check both the module and capability before an optional call:
if IGP.compliance != null: IGP.compliance.event_changed.connect(_on_compliance_event_changed)
if IGP.leaderboard != null and IGP.supports_capability(IGP.CAPABILITY_LEADERBOARD): var result: Dictionary = await IGP.leaderboard.list() print(result)Real-name verification and anti-addiction exist only under IGP.compliance; do not look for old Core aliases. The Compliance fallback only blocks input. Pausing gameplay systems and opening the verification WebView remain the game’s responsibility.
4. Minimum verification
Section titled “4. Minimum verification”- Start the IGP desktop client and sign in with a test account.
- Run the project with the correct
appId. Launch from the desktop client when the platform context must be injected. - Confirm successful initialization, an attached Desktop Session, and an explicit authorization state.
- Confirm that capabilities match the installed packages and test-environment configuration.
- Call one read-only capability or a test achievement and inspect
success,code, andmessage.
Use the Godot test project for the complete feature UI.