Skip to content

ICppOnlyMultiAgentEnvironment

Interface for StateTree-based multi-agent environments.

Pure C++ interface - methods are not exposed to Blueprint. Implement this in your environment class to create a StateTree RL environment. Each agent is identified by a unique string ID.

class ICppOnlyMultiAgentEnvironment : public IBaseScholaEnvironment

Methods

InitializeEnvironment

virtual void InitializeEnvironment(
TMap<FString, FInteractionDefinition> &OutAgentDefinitions) = 0

Initialize the environment and define all agents’ observation and action spaces.

Parameters

  • OutAgentDefinitions (TMap<FString, FInteractionDefinition>)

SeedEnvironment

virtual void SeedEnvironment(int Seed) = 0

Set the random seed for reproducible environment behavior.

Parameters

  • Seed (int)

SetEnvironmentOptions

virtual void SetEnvironmentOptions(const TMap<FString, FString> &Options) = 0

Configure the environment with custom options.

Parameters

  • Options (const TMap<FString, FString>)

Reset

virtual void Reset(TMap<FString, FInitialAgentState> &OutAgentState) = 0

Reset the environment to its initial state for all agents.

Parameters

  • OutAgentState (TMap<FString, FInitialAgentState>)

Step

virtual void Step(const TMap<FString, FInstancedStruct> &InActions,
TMap<FString, FAgentState> &OutAgentStates) = 0

Execute one environment step with actions from all agents.

Parameters

  • InActions (const TMap<FString, FInstancedStruct>)

  • OutAgentStates (TMap<FString, FAgentState>)


Execute_InitializeEnvironment

static inline void Execute_InitializeEnvironment(
UObject *Obj, TMap<FString, FInteractionDefinition> &OutAgentDefinitions)

Dispatches InitializeEnvironment to Obj if it implements ICppOnlyMultiAgentEnvironment.

Parameters

  • Obj (UObject)

  • OutAgentDefinitions (TMap<FString, FInteractionDefinition>)


Execute_SeedEnvironment

static inline void Execute_SeedEnvironment(UObject *Obj, int Seed)

Dispatches SeedEnvironment to Obj if it implements ICppOnlyMultiAgentEnvironment.

Parameters

  • Obj (UObject)

  • Seed (int)


Execute_SetEnvironmentOptions

static inline void
Execute_SetEnvironmentOptions(UObject *Obj,
const TMap<FString, FString> &Options)

Dispatches SetEnvironmentOptions to Obj if it implements ICppOnlyMultiAgentEnvironment.

Parameters

  • Obj (UObject)

  • Options (const TMap<FString, FString>)


Execute_Reset

static inline void
Execute_Reset(UObject *Obj, TMap<FString, FInitialAgentState> &OutAgentState)

Dispatches Reset to Obj if it implements ICppOnlyMultiAgentEnvironment.

Parameters

  • Obj (UObject)

  • OutAgentState (TMap<FString, FInitialAgentState>)


Execute_Step

static inline void
Execute_Step(UObject *Obj,
const TMap<FString, TInstancedStruct<FPoint>> &InActions,
TMap<FString, FAgentState> &OutAgentStates)

Dispatches Step to Obj if it implements ICppOnlyMultiAgentEnvironment (type-erased action map).

Parameters

  • Obj (UObject)

  • InActions (const TMap<FString, TInstancedStruct<FPoint>>)

  • OutAgentStates (TMap<FString, FAgentState>)

Source: Source/ScholaTraining/Public/Environment/CppOnlyMultiAgentEnvironmentInterface.h