競技追加情報(9月28日版)

■FAQ15とFAQ18に関する追加情報(試合開始前後のタイミングに関して)
■試合開始前のシステムの接続確認に関して
■システムが返すエラーメッセージの種類と内容に関して
■FAQ15とFAQ18に関する追加情報(試合開始前後のタイミングに関して)
 
 
現在公開されているFAQ18とFAQ15では表現が微妙に異なっています。結果から言えば練習システムにおいてFAQ18は正しく実装されていますが、FAQ15は実装できていません。

現在の練習システムは「試合開始」のボタンを押すと「10秒」からカウントダウンが始まり、それと同時にシステムからマップ情報の取得が可能となります。FAQ15では、さらにその10秒よりも前の動作に関して、リクエストを一時保留にするように計画していましたが、実際のシステムではこの状態を維持すせずエラーを返します。

10秒より前に接続したときは以下のエラーが表示されます。

「game is not started」

本選システムでも「試合開始前」のセッションを保持する機能は実装しません。これは練習システムと本選システムを可能な限り同じ動作にするためです。
基本的には「競技開始10秒前からマップ情報が所得可能」です。試合開始10秒前よりもさらに前のマップ取得命令に対しては、「game is not started」のエラーを返します。

この場合、「試合開始10秒前」に大量のリクエストがサーバに集中する恐れがあります。大量のリクエストは競技進行の妨げとなる可能性がありますのでリクエストは1秒に1回程度にとどめて下さい。1秒に1回程度のリクエストを行っても、必ず試合開始までに最低10秒間の計算時間が取れるよう調整しますので、あまり頻繁な問い合わせを行わないようにご協力ください。
サーバの動作に支障が出るようなアクセスに関しては、妨害行為と見なされる恐れがありますのでご注意ください。

サーバが第1セッションの操作命令を受け付けるようになるのは、スクリーンに「試合開始」と表示されたタイミングからです。試合開始前に、操作命令を送信した場合は「command is not accepted」のエラーを返します。この命令に関しても上記と同様に瞬間的に大量のアクセスを行わないようにしてください。

 

■試合開始前のシステムの接続確認に関して

本選で舞台に入場してネットワークに接続したら、すぐに以下の接続確認を行ってください。
この接続が確認できたら、各コートにいる審判員に「OK」の合図を出してください。

http://prefix/system/check/token=[チーム識別トークン]&contest_id=[コンテストID]

このリクエストを送ると、競技サーバに対して接続確認を行うことができます。
指定したチームが、指定したコンテストの進行中の試合のメンバーに含まれる場合、
コンテストIDおよび試合名を返します。

—–応答サンプル——
<data>
<contest_id>1</contest_id>
<game_name>接続確認用試合</game_name>
</data>
———————–

もし、チーム識別トークンが間違っていたり、指定したチームが試合メンバーに含まれない場合、
エラー内容と共に以下のような応答を返します。

—–応答サンプル——
<data>
<error>team is not current game member</error>
<status>NG</status>
</data>
———————–

このAPIは、入場から退場まで、いつでも呼び出すことが可能です。
競技システムとの接続確認や、試合で使用するチーム識別トークンの確認などに使用してください。
また、オンライン競技システムでも同様に呼び出すことが可能です。
(オンラインの場合は、「試合を作成(サーバに送信)」ボタンを押した後で確認可能となります)

 

■システムが返すエラーメッセージの種類と内容に関して

システムがリクエストに対しエラーを返す内容は、下記のようなものがあります。なお、正しい命令はセッション間(最大3秒)接続が保持されますが、エラーの命令に対しては即座に以下に示すエラーが返されます。

/system/command/に関するエラー

contest_id is not a number
指定したコンテストIDが数字ではありません。コンテストIDを指定する場合、数字で指定してください。

token is blank
チーム識別トークンが指定されていません。チーム識別トークンを指定してください。

machine_[マシンID] is invalid command
マシンの動作命令指定に誤りがあります。動作命令は1?8の数字列で指定してください。

contest or game not found
コンテストまたは試合が見つかりません。コンテストIDの指定を確認してください。

command is not accepted
コマンドの受付が開始されていません。カウントダウンが終了し、試合開始後にリクエストを送ってください。

team token is invalid
チーム識別トークンに誤りがあります。チーム識別トークンが正しいか確認してください。

team is not game member
指定されたチーム識別トークンは存在しますが、現在進行中の試合の試合のメンバーではありません。本戦用のトークンを使用
してください。

command send error
何らかの原因によりコマンドの送信に失敗しました。

session expired
セッションの受付有効期限を過ぎ、セッションが無効になりました。

/system/map/に関するエラー
※汎用的なエラーに関しては/system/commandと共通です。

game is not started
ゲームはまだ開始されていません。競技マップは試合開始10秒前からリクエスト可能です。