feat(gamecli): implement Observation.Build with unit tests

This commit is contained in:
meelstorm
2026-07-17 16:47:06 +00:00
committed by EugeneTes
parent 3bca85bcc4
commit 5b35d65bd2
2 changed files with 77 additions and 0 deletions

25
GameCli/Observation.cs Normal file
View File

@@ -0,0 +1,25 @@
namespace GameCli;
/// <summary>
/// Builds the 7-dim observation vector fed to PPO:
/// [dx, dy, vx, vy, sin(angle), cos(angle), angular_velocity]
/// Angle is encoded as sin/cos to avoid the discontinuity at ±π.
/// </summary>
public static class Observation
{
public const int Dim = 7;
public static float[] Build(ShipState s, (float X, float Y) target)
{
return new float[Dim]
{
target.X - s.X,
target.Y - s.Y,
s.VX,
s.VY,
MathF.Sin(s.Angle),
MathF.Cos(s.Angle),
s.AngularVelocity,
};
}
}