Steam非同期イベントについて


Game Maker Language リファレンス > 組み込み関数 用途別 > Steam API > Steam非同期イベントについて

Steam非同期イベントについて

ここではSteam APIのコールバックイベントについて説明をします。

このイベントはSteam API関数によりds_map(key/valueを持つ)のasync_load変数を返します。

次のキーは、コールバックを生成する関数を呼び出すことでds_mapに格納されます

  • "_id": 非同期イベントID。この値は、非同期コールバックイベント(呼び出した関数によって返される値)を作成した関数のIDとなります
  • "status": コールバックステータス。0が成功。-1が失敗
  • "lbname": リーダーボード名
  • "numEntries": 取得したリーダーボードのデータ行数
  • "entries": JSON形式の文字列。json_encode()によりds_mapに変換し、"default"キーが格納されていれば、さらに"entries"キーにds_listで取得したデータのds_mapのリストが格納されています。ds_mapには name / score / rankが格納されています

注意

変数"async_load"は非同期イベントのみ有効な変数で、イベント開始時に作成され、失敗時(-1)には自動的に削除されます。ただし正常に取得できた場合、それらのデータを適切にクリーンアップする必要があります。詳細は次のセクション、例を参照してください。

この例では、"game scores"のトップ10の取得を要求し、steam非同期イベントで結果を解析します。

score_get = steam_download_scores("game scores", 1, 10);

これは変数"score_get"にリクエストの非同期idを格納し、steamサーバーにスコア取得の要求を送ります。その後、次のようにしてsteam非同期イベントを処理します

var async_id = ds_map_find_value(async_load, "id");
if async_id == score_get
{
  var entries = ds_map_find_value(async_load, "entries");
  var map = json_decode(entries);
  if ds_map_exists(map, "default")
  {
    ds_map_destroy(map);
    exit;
  }
  else
  {
    var list = ds_map_find_value(map, "entries");
    var len = ds_list_size(list);
    var entry;
    for(var i = 0; i < len; i++;)
    {
      entry = ds_list_find_value(list, i );
      steam_name[i] = ds_map_find_value(entry, "name");
      steam_score[i] = ds_map_find_value(entry, "score");
      steam_rank[i] = ds_map_find_value(entry, "rank");
      ds_map_destroy(entry);
    }
    ds_list_destroy(list)
  }
  ds_map_destroy(map)
}

ここでやっていることは最初に非同期処理用の特別なds_map変数"async_load"に格納されている"id"と変数"score_get" を比較しています。これが一致すればsteamの非同期イベントとなります。取得した値"entries"はjson形式のデータであるため、json_encode()を使用して、ds_mapに変換しています。

このds_mapに"default"が存在しない場合、不正な値のため処理を中断します。正しく取得できれば、さらにこのds_mapから"entries"を取り出します。この値はds_listとなり、名前・ランキング・スコアに対応したds_mapを取得できます。

情報を取得できたら、ds_list / ds_map は不要なので削除します。async_loadはGameMaker:Studioが管理する領域なので、破棄する必要はありません

Wiki内検索

#search(): You already view a search box

MENU

ドキュメント

GMLリファレンス

2ch

その他



最新の30件

2024-03-07 2023-08-09 2023-05-21 2023-05-20 2023-05-04 2022-10-13 2022-07-21 2022-07-02 2022-04-06 2021-11-30 2021-11-26 2021-10-03 2021-09-23 2021-08-15 2021-06-02 2021-01-23 2021-01-21 2021-01-19 2021-01-18 2021-01-16 2021-01-15

人気の10件

今日の10件



これまでの訪問者: 1108
今日の訪問者: 1
昨日の訪問者: 2
閲覧者: 1