跳转到内容

GameMaker 调试

本页仅说明 GameMaker 当前首期能力 的调试方式:

  • 正版校验
  • 成就解锁
  • 成就进度上报

如需确认 SDK 主流程是否可用,建议优先运行发布包中的示例工程:

  1. 打开 samples/gamemaker/windows-auth-achievements/project/IGP.WindowsAuthAchievements.yyp
  2. F5 运行
  3. 重点查看界面上的以下字段:
    • Initialized
    • Connection
    • Authorization
    • Pending events
    • Latest result
    • Latest error
    • Latest event
  4. F1 触发成就解锁
  5. F2 触发进度上报

如果示例工程可运行,但自有游戏无法得到预期成功结果,请先确认是否仍在使用演示用 appId = 10 和演示用成就 key。

在自有工程中,优先确认以下调用顺序是否成立:

  1. igp_init(app_id, options) 在启动时只做一次
  2. igp_update() 在 Step 或等价时机持续调用
  3. igp_poll_event() 被持续排空
  4. 需要结束时调用 igp_shutdown()

如果其中任一步骤缺失,状态可能出现局部更新,但连接不会真正就绪。

排查自有工程时,建议直接查看 igp_get_state_snapshot() 返回的字段:

  • connection_state
  • desktop_channel_state
  • desktop_attach_state
  • desktop_attach_source
  • authorization_state
  • authorization_required
  • bridge_loaded
  • bridge_error
  • last_error
  • last_result
  • pending_events

其中最关键的两个额外字段是:

  • bridge_loaded:原生桥 DLL 是否已成功加载
  • bridge_error:如果 DLL 加载失败,这里会保留最直接的原因

除等待状态变化外,也可以主动执行以下检查:

var result = igp_request_game_authorization(global.igp_app_id);
show_debug_message(json_stringify(result));

该调用返回的是“授权请求结果”,最终状态仍以 authorization_state 为准。

var capabilities = igp_get_desktop_capabilities();
show_debug_message(json_stringify(capabilities));

如果这一步无法获得结果,请优先排查桌面连接本身,而不是成就逻辑。

  • APP_ID_REQUIRED:传进去的 app_id 为空、不是正数,或者根本没初始化成功。
  • bridge_loaded = false:DLL 未加入 Included Files,或虽已加入但运行时未加载成功。
  • bridge_error 有值:优先查看该字段,它通常比主观判断更接近真实原因。
  • Connection 长时间停留在 connecting:桌面客户端未启动、未附着成功,或仍在等待自动启动完成。
  • Authorization 持续停留在 pending:通常不是授权逻辑本身的问题,而是前置桌面连接尚未完成,或没有持续调用 igp_update()
  • F1 / F2 触发后没有成功结果:常见原因是成就 key 仍在使用示例值,或后台尚未配置该成就。

如果遇到以下问题,请优先返回 GameMaker 安装 检查基础安装,而不是继续排查业务逻辑:

  • 工程中没有 igp_gms2_windows_runtime
  • Included Files 中没有 IGP.GamemakerDesktopBridge.Native.dll
  • 一启动就报找不到脚本或 DLL