Skip to content

Godot Quick Start

First complete Godot installation, enable the Core plugin, and set igp/general/app_id.

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.

  • 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.

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.

  1. Start the IGP desktop client and sign in with a test account.
  2. Run the project with the correct appId. Launch from the desktop client when the platform context must be injected.
  3. Confirm successful initialization, an attached Desktop Session, and an explicit authorization state.
  4. Confirm that capabilities match the installed packages and test-environment configuration.
  5. Call one read-only capability or a test achievement and inspect success, code, and message.

Use the Godot test project for the complete feature UI.