50 lines
2.2 KiB
C#
50 lines
2.2 KiB
C#
using Unity.Entities;
|
|
using Unity.NetCode;
|
|
|
|
namespace ProjectM.Simulation
|
|
{
|
|
/// <summary>
|
|
/// MC-0 — server-only dev-telemetry accumulator (a singleton). Counters are incremented at the
|
|
/// combat stamp sites (wired in MC-1+) so the fun-gate is MEASURED, not argued. NOT a
|
|
/// <c>[GhostField]</c> (no ghost-hash change); shipped to dev clients via a periodic
|
|
/// <see cref="DebugTelemetryReport"/> RPC. The component type is unconditional (stable across
|
|
/// release/dev peers); only the dev send/sample/receive SYSTEMS are <c>#if UNITY_EDITOR</c>.
|
|
/// </summary>
|
|
public struct DevTelemetry : IComponentData
|
|
{
|
|
/// <summary>Hits a dash i-frame window negated (incremented in HealthApplyDamageSystem, MC-1).</summary>
|
|
public uint DashIFrameNegatedHits;
|
|
|
|
/// <summary>Dashes whose i-frame window negated nothing (spam signal, MC-1).</summary>
|
|
public uint DashesWasted;
|
|
|
|
/// <summary>Charger lunges that whiffed and opened a punish window (EnemyAISystem, MC-1).</summary>
|
|
public uint ChargerWhiffWindowsOpened;
|
|
|
|
/// <summary>Of those, the ones the player actually punished (MC-1).</summary>
|
|
public uint ChargerWhiffPunishesLanded;
|
|
|
|
/// <summary>Living Husks, sampled each report — proof-of-life (changes during play, no MC-1 dep).</summary>
|
|
public uint LiveEnemyCount;
|
|
|
|
/// <summary>Server tick at the last sample — proof-of-life that the pipe is live.</summary>
|
|
public uint LastSampleTick;
|
|
}
|
|
|
|
/// <summary>
|
|
/// MC-0 — server → dev-client telemetry snapshot (sent periodically by the editor-only sampler).
|
|
/// <b>Unconditional wire type</b> (like <see cref="DebugCommandRequest"/>) so the reflection-built
|
|
/// RpcCollection hash matches across release/dev peers; only the send/receive SYSTEMS are
|
|
/// <c>#if UNITY_EDITOR</c>. The dev overlay reads the latest snapshot to show live fun-gate counters.
|
|
/// </summary>
|
|
public struct DebugTelemetryReport : IRpcCommand
|
|
{
|
|
public uint DashIFrameNegatedHits;
|
|
public uint DashesWasted;
|
|
public uint ChargerWhiffWindowsOpened;
|
|
public uint ChargerWhiffPunishesLanded;
|
|
public uint LiveEnemyCount;
|
|
public uint LastSampleTick;
|
|
}
|
|
}
|