サーバーブラウザ
このページでは、ゲーム内のサーバーブラウザーと同様に、すべてのオンラインARKサーバーを一覧表示し、現在のステータスを照会する方法について説明します。
サーバーリストの取得
公式サーバーと非公式サーバーは別々に取得されます。公式サーバーのリストを取得するには、ArkのWebAPIを使用する必要があります。Arkは、Valveのマスターサーバークエリプロトコルを使用して、非公式サーバーのリストを取得します。
サーバー情報の取得
サーバー情報は、Valveのサーバークエリプロトコルを使用して取得されます。 変更されていないプロトコルフィールドの説明(Steamワークショップの「プラグイン」はカウントされません)Arkサーバーが使用するのは以下のとおりです。 もちろん、変更されたArkサーバーは、任意のフィールドの意味を偽装または変更し、追加のフィールドを追加することができます。
情報リクエスト
フィールド | タイプ | 説明 |
---|---|---|
Protocol Version | Byte | Arkサーバープロトコルバージョン。 現在17。 |
Server Name | String | Arkサーバーの名前。 変更されていないサーバーの場合、これにはバージョン番号(以下で説明)が含まれる場合があります。 |
Map | String | 地図の名前。 デフォルトのマップは「TheIsland」と呼ばれます。 |
Folder | String | 常に「ark_survival_evolved」と等しい |
Game | String | 常に「ARK:SurvivalEvolved」と同じ |
AppID | Short | 未使用 - 常に0になります。 |
Player Count | Byte | 現在オンラインになっているプレーヤーの数。 |
Max Players | Byte | プレーヤーの最大数。 |
Bot Count | Byte | 未使用 - 常に0になります。 |
Server Type | Byte | 専用サーバーの場合は0x64、非専用サーバーの場合は0x6C。 |
Platform | Byte | Linuxの場合は0x6C、Macの場合は0x6F、Windowsの場合は0x77。 |
Private? | Byte | パブリックサーバーの場合は0、プライベートサーバーの場合は1。 1のサーバーは表示されません。 |
VAC? | Byte | サーバーが-insecureで起動されていない限り1。 |
Version | String | 未使用 - 常に "1.0.0.0.0 "と同じです。 |
Extra Data Flag (EDF) | Byte | 続く追加フィールドを説明するビットフィールド(以下を参照)。 通常は0xB1です。 |
Extra Data | Bytes | 可変長バイトフィールド。 形式については、以下を参照してください。 |
したがって、変更されていないサーバーからの応答は次のようになります(フィールドは正しいサイズで表示されません):
[A2S Header ] 49 11 [Server Name ] [Map Name ] 61 72 6B 5F 73 75 72 76 69 76 61 6C 5F 65 76 6F 6C 76 65 64 00 41 52 4B 3A 20 53 75 72 76 69 76 61 6C 20 45 76 6F 6C 76 65 64 00 00 00 [Player Count] [Max Players ] 00 [Server Type ] [Platform ] [Private? ] 01 31 2E 30 2E 30 2E 30 00 B1 [Port ] [SteamID ] [Keywords ] C3 BE 47 05 00 00 00 00 00
サーバー名
変更されていないArkサーバーは、サーバー名フィールドを63文字に制限します。 また、サーバーのバージョンをサーバー名に追加します。 サーバー名とサーバーバージョンは、space-dash-space-parens - (
で区切られます(その後、バージョン番号は、次の右括弧まで、または文字列の終わりまで読み取ることができます。
追加データ
EDF Mask | Field | Type | 説明 |
---|---|---|---|
0x80 | Game Port | Short | ゲームサーバーが実行されているポート番号。 |
0x10 | SteamID | Long | サーバー所有者のSteamID |
0x40 | SourceTV Port | Short | 未使用 |
0x40 | SourceTV Host | String | 未使用 |
0x20 | Server Variables | String | 形式については、以下を参照してください |
0x01 | GameID | Long | SteamGameID。下位24ビットは常に346110に等しくなります。 |
サーバー変数
Variablesフィールドは、「Key:Value」サーバーパラメーターの順序付けられていないコンマ区切りのリストを含む文字列です。リストは常にコンマで始まる必要がありますが、ロバストネス原則に従ってコンマを期待してはいけません。次の表は、既知のキーとその観測値のタイプおよび説明を示しています。これらはすべていつでも変更される可能性があります。キーは大文字と小文字を区別しているかもしれません。
Key | Type | 値 |
---|---|---|
OWNINGID | Integer | SteamソケットAPIで使用されるサーバーの実際の所有者。 |
OWNINGNAME | Integer | SteamソケットAPIで使用されるサーバーの表示された所有者。 |
NUMOPENPUBCONN | Integer | 利用可能なパブリックプレーヤースロットの数。 |
P2PADDR | Integer | SteamソケットAPIを使用して接続するアドレス。 |
P2PPORT | Integer | SteamソケットAPIを使用して接続するポート番号。 |
SESSIONFLAGS | Integer | わからない?? |
ModId_l | Integer | わからない? 与えられたとき、たとえmodがインストールされていても、常にゼロに等しいように見えます。 |
プレイヤーのリクエスト
Arkサーバーは、リクエストに応じて、現在接続されているプレーヤーに関する情報を返します。
Field | Type | 説明 |
---|---|---|
Player Count | Byte | 現在接続しているプレーヤーの数。 |
Player Info | Bytes | プレイヤーごとに、プレイヤーエントリが含まれています。 形式については、以下を参照してください。 |
プレイヤーエントリー
Field | Type | 説明 |
---|---|---|
Index | Byte | 未使用 - 常に0です。 |
Name | String | UTF-8としてエンコードされたプレーヤーの名前。 |
Score | Long | 未使用 - 常に0です。 |
Duration | Float | プレーヤーがログインした秒数。 |
ルールリクエスト
Field | Type | 説明 |
---|---|---|
Rule Count | Byte | 続くルールエントリの数。 バグ:信用しないでください!! パケットの終わりまで解析してみてください。 |
Rules | Bytes | ルールごとに、ルールエントリが含まれます。 形式については、以下を参照してください。 |
ルールエントリ
サーバールールは、Key:Value文字列の連続したリストです。 キーフィールドと値フィールドは両方とも文字列であり、ヌルバイトで終了します。 ルールリストには、サーバー情報要求からのサーバー変数も含まれていますが、このテーブルでは繰り返されていません。 infoリクエストのサーバー変数と同様に、これらの変数が存在することを期待しないでください。これらはいつでも変更される可能性があります。
Key | Type | 説明 |
---|---|---|
CUSTOMSERVERNAME_s | String | サーバー名(サーバーバージョンなし)、すべて小文字。 |
DAYTIME_s | String | 現在の時刻。通常はISO 8601 "hh:mm"としてフォーマットされます。 SoTFゲームモードの場合、「Lobby: 」または「Match: 」のいずれかで始まり、サーバーが現在ロビーにあるかマッチにあるかをそれぞれ示します。 トータルコンバージョンMODはこれを好きなように変更できるので、例外を処理する必要があります。 |
GameMode_s | String | サーバーで現在再生されているUE4ゲームモードのクラス名。 バニラゲームモードクラスの名前は「TestGameMode_C」です。 サーバーで実行できるアクティブなゲームモードは一度に1つだけなので、これはサーバーのmod順序の最初のmodによって制御されます。 |
MATCHTIMEOUT_f | Decimal | 不明 - 常に120.0に等しいようです。 |
Networking_i | 0 / 1 | 不明なのか?いつも0のようです。 |
OFFICIALSERVER_i | 0 / 1 | 公式サーバーの場合は1、非公式サーバーの場合は0。 N.B. サーバーでこれが1に設定されている場合でも、そのIPが[[Web API#officialservers.ini|officialservers.ini]ファイルで見つからない限り、公式サーバーとして表示されません。 |
SEARCHKEYWORDS_s | String | 未使用 - 常に「カスタム」と同じです。 |
ServerPassword_b | true / false | サーバーが参加するためにパスワードが必要な場合はtrue、それ以外の場合はfalse。 |
BUILDID | Decimal | ビルドIDで識別されるサーバーの現在のバージョン。 |
SERVERUSESBATTLEYE_b | 0 / 1 | サーバーでBattlEyeanticheatが有効になっている場合はTrue。 |
ClusterId_s | String | サーバーがクラスター化されている場合のクラスターの名前。 |
LEGACY_i | 0 / 1 | サーバーがレガシー公式サーバーの場合はTrue。 |
SESSIONISPVE_i | 0 / 1 | サーバーがPvEの場合はTrue |
ALLOWDOWNLOADITEMS_i | 0 / 1 | サーバーがクラウドからのアイテムのダウンロードを許可している場合はTrue。 |
ALLOWDOWNLOADCHARS_i | 0 / 1 | サーバーがクラウドからの文字のダウンロードを許可している場合はTrue。 |
pingとチャレンジのリクエスト
Arkサーバーはpingリクエストもチャレンジリクエストもサポートしていません(どちらも現在非推奨と見なされています)。 チャレンジリクエストは、情報またはプレーヤーリストリクエストを通じて処理されます。 他のほとんどのゲームは、送信された他のパケットのラウンドトリップ時間を測定し、2で割ることによってサーバーの待ち時間を取得します(Arkがどのように行うかはわかりません)
- Technical