コンテンツにスキップ

GameMaker デバッグ

このページでは、現在利用可能な最初の GameMaker 機能 のデバッグだけを扱います。

  • ゲーム認可
  • 実績解除
  • 実績進捗報告

シナリオ A: 公式サンプルをそのままデバッグする

Section titled “シナリオ A: 公式サンプルをそのままデバッグする”

まず 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 のままになっていないか確認してください。

シナリオ B: 自分のプロジェクト内でデバッグする

Section titled “シナリオ B: 自分のプロジェクト内でデバッグする”

自分のプロジェクトで一番大事なのは UI ではなく、次の呼び出し順が本当に守られているかです。

  1. igp_init(app_id, options) が起動時に 1 回だけ呼ばれる
  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

とくに有用なのは次の 2 つです。

  • bridge_loaded: ネイティブブリッジ DLL が本当に読み込まれたか
  • bridge_error: DLL 読み込み失敗時の、もっとも直接的な理由

状態変化を待つだけでなく、次の 2 つの確認も有効です。

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 File に入れていない、または入れたが runtime で読み込みに失敗している
  • bridge_error に値がある: まずそこを読む。推測よりも直接的な理由が出ていることが多い
  • Connection が長く connecting のまま: デスクトップクライアントが起動していない、attach に失敗している、または自動起動待ちの途中
  • Authorizationpending のまま: 認可ロジックの問題よりも、前段の接続が終わっていない、または igp_update() を継続的に呼んでいないケースが多い
  • F1 / F2 を押しても成功結果が出ない: 実績 key がまだサンプル値のまま、またはバックエンド側にその実績が未設定

インストールに戻るべきケース

Section titled “インストールに戻るべきケース”

次のいずれかに当てはまるなら、業務ロジック側を追い続けるより先に GameMaker インストール に戻ってください。

  • プロジェクト内に igp_gms2_windows_runtime が存在しない
  • Included Files に IGP.GamemakerDesktopBridge.Native.dll がない
  • 起動直後にスクリプトまたは DLL 欠落で落ちる