都城API 移行マニュアル
これは、第30回都城大会(2019)競技部門「踊って舞って回って」のAPI(以下、プロコンAPI)と囲みマス 都城API(以下、囲みマスAPI)との違いを記したドキュメントです。
過去に作成したプログラムをできるだけ変更せずに参加してもらうため、基本的にプロコンAPIの仕様に沿って実装しておりますが、サーバで扱うデータの関係上、異なる仕様になっている部分があります。
以下に変更点を示します。
①認証の違い
プロコンAPIでは、事前に運営側からトークンが配られます。
このBearerTokenは事前情報取得API、動作確認用APIの認証に使用します。
また、試合状態取得API、行動更新APIでは各ゲームに割り振られた参加者のPICと呼ばれるBearerTokenとは別のトークン が必要になります。 PICは、事前情報取得APIのteamIdからゲーム別に得られます。(BearerTokenが使用できない理由はPICのページをご覧ください。) ②試合事前情報取得API
試合事前情報取得APIで得られるデータの型が一部異なります。
id(試合のID):integerがstring(UUID)に変更
また、各フィールドの仕様が以下のように変更になります。
teamID:TeamIDではなくPICに変更
③試合状態取得API
試合状態取得APIで得られるデータの各フィールドの仕様が以下のように変更になります。
dx,dy(行動をするx,y方向の向き):行動タイプがputの場合には向きではなく座標が入ります。
teams[].agents[].agentID:エージェントIDは以下の計算にて算出されます。
エージェントID = teamIdx * agentNum + agentIdx
teamIdx:teams[]配列のインデックス
agentNum:総エージェント数
agentIdx:teams[].agents[]配列のインデックス
例(総エージェント数6で、teams[1]のチームの3番目(teams[1].agents[2])のエージェントのID):$ 1 \times 6 + 2 = 8
teams[].teamID:TeamIDではなくPICに変更。自分以外のチームの場合は0になります。
tiled:空きマスでない場合はteams[]配列のインデックス+1(teams[0]のチームが陣地を取っていた場合$ 0 + 1 = 2)
④行動更新API
行動更新APIで送受信するデータの各フィールドの仕様が以下のように変更になります。
actions[].agentID:試合状態取得APIのteams[].agents[].agentIDと同じ計算式にて算出されます。
dx,dy(行動をするx,y方向の向き):行動タイプがputの場合には向きではなく座標が入ります。