Step 2: the telemetry seam
ITelemetrySink with the null, log and JSON Lines sinks, FTelemetryEvent and the envelope, TelemetryEvents, UTelemetrySubsystem on the game instance, ASaltyGameMode minting the session id into the replicated ASaltyGameState, bs.TelemetryTest, the git hash in the build string (D-42) and four Salty.Core.Telemetry tests replacing the placeholder. Proved standalone and with a headless server plus client sharing one session id. Also enables the engine's Editor, AutomationTest, GameplayTags, ConfigSettings and LiveCoding MCP toolsets (D-43) so the editor's MCP server exposes more than the skills toolset. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
4f2c55cd2a
commit
3e52d26fb7
@@ -0,0 +1,23 @@
|
||||
#include "Core/SaltyGameMode.h"
|
||||
#include "Core/SaltyGameState.h"
|
||||
#include "Salty.h"
|
||||
|
||||
ASaltyGameMode::ASaltyGameMode()
|
||||
{
|
||||
GameStateClass = ASaltyGameState::StaticClass();
|
||||
}
|
||||
|
||||
void ASaltyGameMode::InitGameState()
|
||||
{
|
||||
Super::InitGameState();
|
||||
|
||||
ASaltyGameState* SaltyGameState = GetGameState<ASaltyGameState>();
|
||||
if (!SaltyGameState)
|
||||
{
|
||||
// A Blueprint child that overrode GameStateClass with something else. Loud, because every telemetry
|
||||
// file of this session would then be sessionless.
|
||||
UE_LOG(LogSalty, Error, TEXT("%s: GameStateClass is not an ASaltyGameState; no session id will be minted"), *GetName());
|
||||
return;
|
||||
}
|
||||
SaltyGameState->SetSessionId(FGuid::NewGuid());
|
||||
}
|
||||
Reference in New Issue
Block a user