GameMaker 调试
本页仅说明 GameMaker 当前首期能力 的调试方式:
- 正版校验
- 成就解锁
- 成就进度上报
场景 A:调试官方示例
Section titled “场景 A:调试官方示例”如需确认 SDK 主流程是否可用,建议优先运行发布包中的示例工程:
- 打开
samples/gamemaker/windows-auth-achievements/project/IGP.WindowsAuthAchievements.yyp - 按 F5 运行
- 重点查看界面上的以下字段:
InitializedConnectionAuthorizationPending eventsLatest resultLatest errorLatest event
- 按 F1 触发成就解锁
- 按 F2 触发进度上报
如果示例工程可运行,但自有游戏无法得到预期成功结果,请先确认是否仍在使用演示用 appId = 10 和演示用成就 key。
场景 B:调试自有工程
Section titled “场景 B:调试自有工程”在自有工程中,优先确认以下调用顺序是否成立:
igp_init(app_id, options)在启动时只做一次igp_update()在 Step 或等价时机持续调用igp_poll_event()被持续排空- 需要结束时调用
igp_shutdown()
如果其中任一步骤缺失,状态可能出现局部更新,但连接不会真正就绪。
建议关注的状态
Section titled “建议关注的状态”排查自有工程时,建议直接查看 igp_get_state_snapshot() 返回的字段:
connection_statedesktop_channel_statedesktop_attach_statedesktop_attach_sourceauthorization_stateauthorization_requiredbridge_loadedbridge_errorlast_errorlast_resultpending_events
其中最关键的两个额外字段是:
bridge_loaded:原生桥 DLL 是否已成功加载bridge_error:如果 DLL 加载失败,这里会保留最直接的原因
主动检查方式
Section titled “主动检查方式”除等待状态变化外,也可以主动执行以下检查:
1. 主动请求一次正版校验
Section titled “1. 主动请求一次正版校验”var result = igp_request_game_authorization(global.igp_app_id);show_debug_message(json_stringify(result));该调用返回的是“授权请求结果”,最终状态仍以 authorization_state 为准。
2. 查看当前桌面端暴露的能力
Section titled “2. 查看当前桌面端暴露的能力”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 仍在使用示例值,或后台尚未配置该成就。
何时返回安装检查
Section titled “何时返回安装检查”如果遇到以下问题,请优先返回 GameMaker 安装 检查基础安装,而不是继续排查业务逻辑:
- 工程中没有
igp_gms2_windows_runtime - Included Files 中没有
IGP.GamemakerDesktopBridge.Native.dll - 一启动就报找不到脚本或 DLL