F1 2020 비디오 게임은 바이트 배열( byte[]
) 형식으로 UDP 데이터 패키지를 제공합니다. 게임이 브로드캐스트하는 데이터 패킷에는 여러 가지 유형이 있습니다. 데이터를 읽는 데 기본 리소스를 사용하려면 다음 네임스페이스를 가져옵니다.
using Codemasters.F1_2020;
모든 패킷 유형은 동일한 기본 클래스인 Packet
에서 파생됩니다. Packet
클래스에는 다음 속성이 포함되어 있습니다.
PacketFormat
- 패킷이 있는 게임을 설명합니다(F1 2020).
GameMajorVersion
- 방송 당시 게임의 주요 버전
GameMinorVersion
- 방송 당시 게임의 마이너 버전
PacketVersion
PacketType
- 이 데이터의 패킷 유형(예: 원격 측정, 상태, 랩 데이터 등)
UniqueSessionId
- 세션의 고유 ID입니다.
SessioTime
- 이 패킷이 기록되고 브로드캐스트된 현재 세션의 타임스탬프입니다.
FrameIdentifier
- 이 데이터가 속한 패킷 그룹입니다.
PlayerCarIndex
- 해당하는 모든 패킷의 필드 배열에 있는 플레이어 자동차의 인덱스입니다.
SecondaryPlayerCarIndex
- 두 명의 플레이어(분할 화면)를 플레이하는 경우 필드 배열에서 플레이어 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
클래스에는 필드의 각 자동차에 대해 하나씩 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.Analytic 네임스페이스를 사용했으나 지금은 누락된 경우: 분석 네임스페이스가 ApexVisual.F1_2020 NuGet 패키지(https://www.nuget.org/packages/ApexVisual.F1_2020/) 아래로 이동되었습니다.