F1 2020 ビデオ ゲームは、バイト配列 ( byte[]
) の形式で UDP データ パッケージを提供します。ゲームがブロードキャストするデータ パケットにはいくつかの異なるタイプがあります。データを読み取るための基本リソースを使用するには、次の名前空間をインポートします。
using Codemasters.F1_2020;
すべてのパケット タイプは、同じ基本クラスPacket
から派生します。 Packet
クラスには次のプロパティが含まれます。
PacketFormat
- パケットの元のゲームを説明します (F1 2020)
GameMajorVersion
- ブロードキャスト時のゲームのメジャー バージョンGameMinorVersion
- ブロードキャスト時のゲームのマイナー バージョンPacketVersion
PacketType
- このデータのパケットのタイプ (つまり、テレメトリ、ステータス、ラップ データなど)
UniqueSessionId
- セッションの一意の ID。
SessioTime
- このパケットが記録およびブロードキャストされたときの現在のセッションのタイムスタンプ。
FrameIdentifier
- このデータが属するパケットのグループ。
PlayerCarIndex
- 対応するすべてのパケットのフィールド配列内のプレーヤーの車のインデックス。
SecondaryPlayerCarIndex
- 2 人のプレーヤー (画面分割) をプレイしている場合、これはフィールド配列内のプレーヤー 2 のインデックスになります。
提供されたバイト配列がどのような種類のパケットであるかを確認するには、CodemastersToolkit を使用します。以下のbytes
変数は、テレメトリ ブロードキャストから取得されるか、テレメトリをディスクに保存した場合は逆シリアル化されたファイルから取得されます。
byte[] bytes; //Your telemetry data package
PacketType pt = CodemastersToolkit.GetPacketType(bytes);
Console.WriteLine(pt.ToString());
上記のコンソール出力:「CarTelemetry」
この特定のデータ パッケージがテレメトリ パケットであることがわかっているため、テレメトリ パッケージを作成できます。
TelemetryPacket tp = new TelemetryPacket();
tp.LoadBytes(bytes);
TelemetryPacket
クラスには、フィールド内の各車に 1 つずつ、 CarTelemetryData
の配列が含まれています。
例として、以下のコードは、このデータがブロードキャストされた時点ですべてのドライバーが適用しているスロットル圧力を出力します。
foreach (TelemetryPacket.CarTelemetryData ctd in tp.FieldTelemetryData)
{
Console.WriteLine(ctd.Throttle.ToString());
}
パケットの多くは、上記のTelemetryPacket
と同様の形式に従います。
受け取ったすべてのバイト配列パッケージを変換できます。例:
List<byte[]> telemetry;
Packet[] packets = CodemastersToolkit.BulkConvertByteArraysToPackets(telemetry);
その後、返されたパケットの配列から各パケットを変換できます。たとえば、 Packet
TelemetryPacket
に変換します。
foreach (Packet p in packets)
{
if (p.PacketType == PacketType.CarTelemetry)
{
TelemetryPacket telpack = (TelemetryPacket)p;
}
}
たとえば、特定のTelemetryPacket
に付随するCarStatusPacket
検索する必要がある場合があります。これを行うには:
TelemetryPacket telpack;
CarStatusPacket csp = (CarStatusPacket)telpack.GetRelatedPacket(packets, PacketType.CarStatus);
**以前に Codemasters.F1_2020.Analysis 名前空間を使用していて、現在は見つからない場合: 分析名前空間は、ApexVisual.F1_2020 NuGet パッケージ (https://www.nuget.org/packages/ApexVisual.F1_2020/) の下に移動されました。