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件

2019-11-16 2019-11-14 2019-09-27 2019-07-28 2019-07-12 2018-11-17 2017-11-07 2017-10-26 2017-10-01 2017-05-13 2016-10-01 2017-01-22 2017-01-14 2016-12-25 2016-10-09 2016-09-21 2016-08-29 2016-06-21 2016-02-23 2016-02-10 2016-01-18 2015-10-30 2015-10-20 2015-06-23 2015-06-20 2015-06-19

人気の10件

今日の10件



これまでの訪問者: 713
今日の訪問者: 1
昨日の訪問者: 0
閲覧者: 3