Video game F1 2020 akan memberi Anda paket data UDP dalam bentuk array byte ( byte[]
). Ada beberapa jenis paket data berbeda yang akan disiarkan oleh game. Impor namespace berikut untuk menggunakan sumber daya dasar untuk membaca data:
using Codemasters.F1_2020;
Setiap jenis paket berasal dari kelas dasar yang sama, Packet
. Kelas Packet
berisi properti berikut:
PacketFormat
- Menjelaskan game asal paket (F1 2020)
GameMajorVersion
- Versi utama game pada saat disiarkan
GameMinorVersion
- Versi minor dari game tersebut pada saat disiarkan
PacketVersion
PacketType
- Jenis paket data ini (yaitu Telemetri, status, data putaran, dll.)
UniqueSessionId
- ID unik sesi Anda.
SessioTime
- Stempel waktu sesi saat ini ketika paket ini direkam dan disiarkan.
FrameIdentifier
- Kelompok paket mana yang termasuk dalam data ini.
PlayerCarIndex
- Indeks mobil pemain dalam array lapangan di semua paket yang sesuai.
SecondaryPlayerCarIndex
- Jika Anda memainkan dua pemain (layar terpisah), ini akan menjadi indeks pemain 2 di array bidang.
Untuk mengetahui jenis paket array byte apa yang diberikan kepada Anda, gunakan CodemastersToolkit. Variabel bytes
di bawah ini akan berasal dari siaran telemetri Anda, atau dari file yang dideserialisasi jika Anda menyimpan telemetri di disk.
byte[] bytes; //Your telemetry data package
PacketType pt = CodemastersToolkit.GetPacketType(bytes);
Console.WriteLine(pt.ToString());
Output konsol di atas: "CarTelemetry"
Karena kita mengetahui bahwa paket data khusus ini adalah paket telemetri, kita dapat membuat paket telemetri:
TelemetryPacket tp = new TelemetryPacket();
tp.LoadBytes(bytes);
Kelas TelemetryPacket
berisi array CarTelemetryData
, satu untuk setiap mobil di lapangan.
Sebagai contoh, kode di bawah ini akan mencetak tekanan throttle yang diterapkan setiap pengemudi pada saat data ini disiarkan.
foreach (TelemetryPacket.CarTelemetryData ctd in tp.FieldTelemetryData)
{
Console.WriteLine(ctd.Throttle.ToString());
}
Banyak paket mengikuti format serupa seperti yang terlihat di atas dengan TelemetryPacket
.
Anda dapat mengonversi semua paket array byte yang Anda terima. Contoh:
List<byte[]> telemetry;
Packet[] packets = CodemastersToolkit.BulkConvertByteArraysToPackets(telemetry);
Anda kemudian dapat mengonversi setiap paket dari rangkaian paket yang dikembalikan. Misalnya, mengonversi Packet
menjadi TelemetryPacket
:
foreach (Packet p in packets)
{
if (p.PacketType == PacketType.CarTelemetry)
{
TelemetryPacket telpack = (TelemetryPacket)p;
}
}
Anda mungkin perlu, misalnya, menemukan CarStatusPacket
yang menyertainya untuk TelemetryPacket
tertentu. Untuk melakukan ini:
TelemetryPacket telpack;
CarStatusPacket csp = (CarStatusPacket)telpack.GetRelatedPacket(packets, PacketType.CarStatus);
**Jika sebelumnya Anda menggunakan namespace Codemasters.F1_2020.Analysis dan sekarang menemukannya hilang: Namespace analisis telah dipindahkan ke dalam paket NuGet ApexVisual.F1_2020 (https://www.nuget.org/packages/ApexVisual.F1_2020/)